[C] 4강. 반복문의 응용
반복문의 응용
반복문의 응용
상태 변수를 이용한 반복
- 매회 반복 후 사용자에게 물어서 반복여부를 결정하는 경우
- while이나 for를 사용할 때는 조건검사가 먼저 이루어짐
(시작 전에 상태 변수의 초기화가 필요함)
int rep;
rep = 1;
while (rep == 1) {
printf("hello\n");
printf("again?\n");
scanf("%d", &req);
}
int rep;
for (req = 1; req == 1;) {
printf("hello\n");
printf("again?\n");
scanf("%d", &req);
}
int rep;
do {
printf("hello\n");
printf("again?\n");
scanf("%d", &req);
} while (req == 1);
입력 변수를 이용한 반복
- 0보다 큰 두 수를 입력받아 합을 출력하는 것을 반복하는 경우
- 둘 중 하나라도 0이하이면 반복을 종료함
int a, b, sum;
printf("숫자를 입력해주세요\n");
scanf("%c%c", &a, &b);
while (a > 0 || b > 0) {
sum = a + b;
printf("입력한 숫자의 합은 %c", sum);
}
예제 : 1~5까지의 곱을 출력하기
int num, prod = 1;
for (num = 1; num < 6; num++) {
prod = prod * num;
}
printf("%d\n", prod);
연산자와 논리식
연산자
- 피연산자들을 결합하여 다른 값을 갖는 피연산자를 만들어내는 함수와 같은 것
설명 | 일반적인 것 | 특수한 것 |
---|---|---|
최우선 | () 괄호 | [](배열) |
단항 | ++, –, ! | ~(보수) +,-(부호) *(pointer) &(주소지정) |
곱셈/나눗셈/나머지 | *, /, % | |
덧셈/뺄셈 | +,- | |
shift | «» | |
관계 | <, <=, >=, > | |
등가 | ==, != | |
bit AND | & | |
bit XOR | ^ | |
bit OR | | |
|
논리곱 | && | |
논리합 | || |
|
조건 | ?: | |
할당 | =, +=, -=, *=, /=, %= | |
쉼표 | , |
관계연산자
- 두 값을 비교하여 비교 결과에 따라 참 또는 것짓을 반환함
- 관계, 등가
논리연산자
- 참(T: True)과 거짓(F: False)을 연산하여 다시 참 또는 거짓을 반환
기타 명령
break 명령
- break를 실행하면 소속된 block을 즉시 벗어남
- 반복의 종료조건과 관계없이 중도에 반복을 종료
continue 명령
- continue는 block 내에서 나머지를 수행하지 않고 block의 시작으로 이동
- break과 continue를 비교하면 단어의 의미대로 ‘끝내다’와 ‘계속하다’
- 쉽게 생각하면, 밑에 나머지 부분을 실행하지 않고 다시 다음 턴 처음으로..!
switch 문
- 다중선택은 참, 거짓 뿐만 아니라 일반적인 값을 검사하여 다중 경로로 분기
- default는 마지막에 넣어야 함 (앞에 넣어도 에러는 안나지만, 케이스 체킹이 안됨)
- 자바스크립트의 switch와 동일
switch(true) {
case a == 1:
printf("a는 1이다.");
break;
case a == 2:
printf("a는 2이다.");
break;
case a == 3:
printf("a는 3이다.");
break;
default:
printf("a는 3보다 크다");
break;
}