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");
	}

}

편안합니다

 

저도 공부하고 있는 중이라 틀린부분있으면

지적 부탁드립니다 읽어주셔서 감사합니다~

+ Recent posts