C언어에서 반복문을 이용해
어느 특정 조건까지 scanf를 이용해 값을 받아보겠습니다.
해결하려는 문제는
두 정수를 입력받고 처음에 입력받은 값이 더 크다면 "크다" 아니라면 "작다"
를 출력하고 추가로 0과 0이 입력되면 종료되게 작성하라
일단 고려해야할것이
1. 두 정수의 입력(무한정)
2. 두 수의 크기 비교
3. 특정값 0,0 의 입력시 종료
입니다.
무한히 입력받기위해 while 반복문을 이용하였습니다.
while(조건) 안에 3. 특정값 0,0 의 입력시 종료를 넣고 한번 만들어보았습니다.
int main() {
int a, b;
a = 1;
b = 1; // a와 b값을 1로 초기화 해주었습니다
while (a!=0 && b!=0) { //a,b값이 0이 나오면 종료니까 아닐때 까지 반복한다도 맞는말이죠?
scanf("%d %d", &a, &b);
if (a > b) {
printf("크다");
}
else
printf("작다");
}
}
근데 치명적인.. 문제 까지는 아닌데 좀 꼴보기가 싫습니다...
아무래도 마지막에 0,0값이 들어가는 순간 종료가 아니라
if~else가 있는 조건문까지 통과하고 종료되서 저런 값이 나오는거 같습니다.
int main() {
int a, b;
a = 1;
b = 1;
while (a!=0 && b!=0) {
scanf("%d %d", &a, &b); // (1) 0 , 0입력 근데 조건은..↑위에있어요
if (a > b) { // (2) 0, 0 a>b가 참이 아니니
printf("크다");
}
else // (3) 그 이외의 값인 else에 걸려 "작다"가 출력되고 끝나요
printf("작다");
}
}
그럼 while(1)을 이용해 무한정 입력받고
조건이 걸리면 break로 나갈수있게 식 중간에 조건을 걸어보겠습니다.
int main() {
int a, b;
a = 1;
b = 1;
while (1) {
scanf("%d %d", &a, &b);
if (a > b) {
printf("크다\n");
}
else if (a == 0 && b == 0)
break; // 0,0이면 종료해요
else
printf("작다\n");
}
}
저도 공부하고 있는 중이라 틀린부분있으면
지적 부탁드립니다 읽어주셔서 감사합니다~
'C언어 > 매일 매일 안빼먹기' 카테고리의 다른 글
(C언어) int 범위 초과하는 숫자 계산(1) / 문자열 역순으로 바꾸기 (0) | 2022.11.14 |
---|---|
(C언어) 백준 10809: 알파벳 찾기 / 배열 비교 (0) | 2022.11.13 |
(C언어) 현재 시간 출력하기 (0) | 2022.11.12 |
(C언어) 배열 안에 여러 값들 비교하여 중복 값만 출력하기 (0) | 2022.11.10 |
(C언어) scanf 문자형 입력 오류 getchar() 해결 (0) | 2022.11.10 |