JUST GO
[C] 반복문 본문
반복문
- 조건이 만족하는 동안 주어진 문장을 반복해서 수행한다. -> 루프(loop)
- 반복문을 이용하면 사용자가 원하는 만큼 반복적으로 수행하게 만들 수 있다.
- for
- while
- do while
for문
루프 제어 변수의 선언
for문의 루프 제어 변수
- 일반적으로 어떤 문장을 N번 반복 수행하는 용도로 사용된다.
- for문의 반복 회차마다 루프 제어 변수의 값이 변경되어, 특정 시점에 for의 조건식이 참이 되어 루프를 탈출할 수 있으면 된다.
for문의 여러 가지 변형
- for문에서 루프 제어 변수를 여러 개 사용할 수도 있다.
- 초기식, 조건식, 증감식과 반복할 문장은 모두 생략할 수 있다.
널 문장
- 처리할 내용 없이 세미콜론(;)만으로 이루어진 문장
- for문의 초기식, 조건식, 증감식에서 필요한 기능을 모두 수행해서 반복할 문장을 따로 지정할 필요가 없을 경우에 유용
중첩된 for문
- for문 안에 다시 for문을 사용하는 것
while문
while의 사용
#include <stdio.h>
int main(void)
{
int i = 0;
while (i < 10)
printf("%d ", i++); // i가 10이 되면 루프 탈출
printf("\n"); // 반복할 문장
return 0;
}
입력된 정수들의 합계 구하기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int num = 0;
int sum = 0;
int i = 0; // for의 초기식
printf("정수 5개를 입력하세요: ");
while (i < 5) // 조건식
{
//반복할문장
scanf("%d", &num);
sum += num;
i++;
}
printf("합계: %d\n", sum);
return 0;
}
반복 수행되는 사칙연산 계산기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int a, b;
char op;
char yesno = 'Y';
while (yesno == 'Y' || yesno == 'y')
{
printf("수식? ");
scanf("%d %c %d", &a, &op, &b);
switch (op) {
case '+':
printf("%d + %d = %d\n", a, b, a + b);
break;
case '-':
printf("%d - %d = %d\n", a, b, a - b);
break;
case '*':
printf("%d * %d = %d\n", a, b, a * b);
break;
case '/':
if (b != 0)
printf("%d / %d = %.2f\n", a, b, (double)a / b);
else
printf("0으로 나눌 수 없습니다.\n");
break;
default:
printf("잘못된 수식입니다.\n");
break;
}
printf("계속 하시겠습니까(Y/N)? ");
scanf(" %c", &yesno);
}
return 0;
}
do while문
do while을 이용한 사칙 연산 계산기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int a, b;
char op;
char yesno;
do {
printf("수식? ");
scanf("%d %c %d", &a, &op, &b);
switch (op) {
case '+':
printf("%d + %d = %d\n", a, b, a + b);
break;
case '-':
printf("%d - %d = %d\n", a, b, a - b);
break;
case '*':
printf("%d * %d = %d\n", a, b, a * b);
break;
case '/':
if (b != 0)
printf("%d / %d = %.2f\n", a, b, (double)a / b);
else
printf("0으로 나눌 수 없습니다.\n");
break;
default: // +, -, *, / 가 아닌 경우
printf("잘못된 수식입니다.\n");
break;
}
printf("계속 하시겠습니까(Y/N)? ");
scanf(" %c", &yesno);
} while (yesno == 'Y' || yesno == 'y');
return 0;
}
루프 탈출 위치
무한 루프
- for에서는 무한 루프를 만들기 위해서 조건식을 생략한다.
- for ( ; ; )
- while에서는 조건식을 생략할 수 없는 대신에 항상 참인 값을 조건식에 써준다.
- while (1)
- 무한 루프를 수행중인 프로그램은 Ctrl+C로 강제 종료해야 한다.
- 무한 루프를 안전하게 탈출하려면 break를 이용한다.
정수 5개 입력받고 합을 계산한 뒤 y/n 에 따라 반복하기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int num = 0;
int sum = 0;
char yesno;
do {
printf("정수 5개를 입력하세요: ");
int i = 0;
while (i < 5)
{
scanf("%d", &num);
sum += num;
i++;
}
printf("합계: %d\n", sum);
printf("계속 하시겠습니까? ");
scanf(" %c", &yesno);
}
while (yesno == 'Y' || yesno == 'y');
return 0;
}
구구단 프로그램 만들기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int i = 0;
char yesno;
do {
printf("계산할 구구단 수를 입력하세요: ");
scanf("%d", &i);
for (int j = 1; j < 10; j++)
printf("%d x %d = %2d \n", i, j, i * j);
printf("\n");
printf("계속 하시겠습니까(Y/N)? ");
scanf(" %c", &yesno);
} while (yesno == 'Y' || yesno == 'y');
return 0;
}
while문 과제
다음과 같은 출력을 보일 수 있도록 프로그램을 작성하시오.
- for문을 이용하여 작성
#include <stdio.h>
int main(void)
{
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
if (i == j)
printf("*");
else
printf("0");
}
printf("\n");
}
}
- while문을 이용하여 작성
#include <stdio.h>
int main(void) {
int i = 0;
while (i < 5) {
for (int j = 0; j < i; j++) {
printf("0");
}
printf("*");
printf("\n");
i++;
}
return 0;
}
- while문을 이용하여 작성
#include <stdio.h>
int main(void) {
int i = 0;
int j = 0;
while (i < 5) {
while (j < i) {
printf("0");
j++;
}
if (i <= j)
printf("*");
j = 0; // j변수 초기화
printf("\n"); // 개행
i++;
}
return 0;
}
'C > 학습내용' 카테고리의 다른 글
[C] 함수 (0) | 2022.10.06 |
---|---|
[C] 반복문(2) (1) | 2022.10.05 |
[C] 제어문(switch문) (0) | 2022.10.05 |
[C] 제어문(if문) (0) | 2022.10.05 |
[C] 연산자(3) (1) | 2022.10.05 |