카테고리 없음

5강 선택 제어문과 반복 제어문

meta-tony 2023. 4. 9. 22:24

-순차적제어: 위에서 아래로 수행되는 제어구조
-선택적제어: 특정 부분으로 수행을 옮기는 제어

1.선택제어문

- if문

/*단순 if문*/
int a = 10, b = 20;
if (a > b) {
a = a + 20;
printf("a = %d\n", a);
}
b = b + 20;
printf("b = %d", b);

/*if ~else문*/
int a, b, max;
scanf("%d %d", &a, &b);
if (a >= b) // 1개 이상 함수는 중괄호
max = a;
else
max = b;
printf("max = %d", max);
다중 if ~ else문
- 거짓일 때 else문 실행

/*다중 if ~ else 문*/
int a
scanf("%d", &a);
if (a >= 0)
if (a == 0)
printf("입력된 값은 0");
else
print("입력된 값은 양수");
else
print("입력된 값은 음수");

/*다중 if~else if~else문 */
int score = 0;
printf("성적 입력");
scanf("%d", &score);
if (score >= 90)
	print("학점은 A\n");
else if (score >= 80)
	printf("학점은 B\n");
else if (score >= 70)
	printf("학점은 C\n");
else if (score >= 60)
	printf("학점은 D\n");
else
	printf("학점은 F\n");
}

switch문 여러 조건 중에서 한가지

/*switch ~ case 문*/
int n;
printf("n=?");
scanf("%d", &n);
printf("\n n %% 5 = %d\n", n % 5);
switch (n % 5) {
case 0:printf("나머지는 0\n");
case 1:printf("나머지는 1\n");
case 2:printf("나머지는 2\n");
default: print("나머지는 3이나 4\n");
}

/*switch~case 문 break문 미사용*/
int n;
printf("num = ?");
scanf("%d", &n);
printf("\n n %% 5 = %d\n", n);
switch (n % 5) {
case 0: printf("나머지는 0\n");
case 1: printf("나머지는 1\n");
case 2: printf("나머지는 2\n");
default:printf("나머지는 3이나 4\n");
}

/*swich 문 break사용*/
int n;
printf("n=?");
scanf("%d", &n);
printf("\n n %% 5 = %d\n", n % 5);
switch (n % 5) {
case 0: printf("나머지는 0\n");
break;
case 1: printf("나머지는 1\n");
break;
case 2: printf("나머지는 2\n");
break;
default: printf("나머지는 3이나 4\n");
break;
}


go to문(무조건 분기) - 원하는 곳으로 분기를 옮긴다.

int i, n, c='A';
while (1) {
printf("\n 횟수는 ?");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
printf("%c", c);
if (c == 'Q')
goto end;
c++;
}
}
end:
printf("\n\n 끝");

 

goto문의 사용 불가한 경우

다른 루프안에 레이블이 존재하면 불가

2.반복 제어문: 반복 횟수만큼 제어

for문

/*for문 사용*/
int i, sum = 0;
for (i = 0; i <= 10; ++i) 
sum = sum + i;
printf("1부터 %d까지의 합=%d", i - 1, sum);

/*다중 for문 */
int a, b;
for (a = 1; a <= 3; ++a) {
printf("a = %d\n", a);
for (b = 0; b <= 4; b++)
printf("b = %d ", b);
putchar('\n');
}




while문
while(조건식) {처리식} 거짓일 때 반복 정지

/* while 문 */
int i = 0;
int sum = 0;
while (i <= 100) {
sum = sum + i;
i++;
}
printf("1부터 100까지의 합 =%d", sum);

/* 구구단 - 다중 while 문 */
int i = 2, j = 0;
while (i < 10) {
j = 1;
while (j < 10) {
printf("%d x %d = %d\n", i, j, i * j);
j++;
}
printf("\n");
i++;
}

 

 

do ~ while문

- do {반복 실행될 문장;} while(조건식);

/* do ~ while 문 */
int i = 0, n;
int sum = 0;
printf("n=?");
scanf("%d", &n);
do {
sum = sum + i;
i++;
} while (i <= n); // 세미콜론 사용
printf("i = %d\n", i);
printf("i ~ %d까지 합 =%d\n", n, sum);



3.기타 제어문

break문

-반복 명령 실행 도중 강제적으로 빠져 나옴
-자신이 포함된 반복문만 빠져 나옴

continue문

-루프의 선두로 제어를 옮겨 다음 반복을 실행

int num = 1;
while (num!= 0) {
printf("\n num=?");
scanf("%d", &num);
if (num < 0) {
printf("0 : Negative number !\n");
continue;
}
printf("Square root of %d = %f\n", num, sqrt(num));
}