본문 바로가기
프로그래밍/C언어

6. c언어 반복문 for, while

by 수삼이는코딩중 2023. 1. 31.
728x90

for문

기본구조

for (/* 초기식 */; /* 조건식 */; /* 증감식 */) {
  // 명령1;
  // 명령2;
  // ....
}

for문은 {} 안에 작업을 조건식이 성립할 동안 반복해주는 것이고, 매 반복마다 증감식을 실행한다.

예를 들어

<c언어>

#include <stdio.h>
int main() {
	int i, sum = 0;
	for (i = 0; i < 20; ++i) {
		sum = sum + i;
	}
	printf("1부터 19까지의 합 : %d", sum);
	return 0;
}

<파이썬>

sum=0
for i in range(20) :
	sum+=i
print(sum)


내 생각에 아래와 같은 파이썬의 간결한문장이

for i in range(1,10)

c언어에서는 다음과 같이 복잡해진다..는 것만 제외하면 비슷하다!

for (i=0; i<20, i++)



평균을 구해보자.

<c언어>

#include <stdio.h>
int main() {
	int i, subject, score;
	double sum_score = 0;

	printf("몇개 과목? : ");
	scanf_s("%d", &subject);

	printf("\n 각 과목의 점수 : \n");
	for (i = 1; i <= subject; i++) {
		printf("과목 %d : ", i);
		scanf_s("%d", &score);
		sum_score += score;

	}
	printf("전체 과목의 평균은 : %.2f \n", sum_score / subject);

	return 0;
}

<파이썬>

subject=int(input("몇 과목 : "))
sum_score=0

for i in range (1,subject+1) :
    score = int(input("과목 %d 몇점 : " %i))
    sum_score+=score
print("평균은 %d" %(sum_score/subject))

break 걸기

#include < stdio.h>
int main() {
	int usranswer;

	printf("컴퓨터가 생각한 숫자 : \n");

	for (;;) {
		scanf_s("%d", &usranswer);
		if (usranswer == 3) {
			printf("맞추셨군요! \n");
			break;
		}
		else {
			printf("틀리셨어요!\n");
		}
	}

	return 0;
}

for 문이 (초기식, 조건식, 증감식) 이 아니라 for(;;) 으로 작성되었다. 이것은 조건이 명시되지 않은 for문 인데, 그러면 for문은 항상 참이 되어 무한히 중괄호 속의 내용을 실행한다. 그래서 if문에 break를 걸어주었다. 파이썬과 비슷하다. break를 걸어주면 for 문을 나오게 된다. break를 만나면 그 다음에 어떤 내용이 있어도 실행시키지 않고 for문을 빠져 나온다. 기억해야 하는것은 break는 if 문이 아니라 for문을 빠져나온다는 것이다.

continue 걸기

#include < stdio.h>
int main() {
	int i;

	for (i = 0; i < 100; i++) {
		if (i % 5 == 0) continue;

		printf("%d", i);
	}

	return 0;
}

continue를 만나면 break처럼 다음 내용은 실행하지 않는다, 다만 break는 for문을 빠져나가지만 continue는 다시 조건문으로 돌아간다. 따라서 위의 식을 실행하면 5의 배수를 제외한 0-99까지의 수가 출력된다.

for문 중첩

#include < stdio.h>
int main() {
	int i, j;

	for (i = 1; i < 10; i++) {
		for (j = 1; j < 10; j++) {
			printf("%d x %d = %d \n", i, j, j * j);
		}
	}

	return 0;
}

형식을 제외하고 파이썬의 for문 중첩과 거의 동일하다.

while 문


기본구조

while (/* 조건식 */) {
  // 명령1;
  // 명령2;
  // ...
}


for문과 마찬가지로 파이썬과 비슷하다.

#include < stdio.h>
int main() {
	int i = 1, sum = 0;
	
	while (i <= 100) {
		sum += i;
		i++;
	}
	printf("1부터 100까지의 합 : %d \n", sum);


	return 0;
}

i가 100이하이면 while 문 안의 내용이 계속 실행된다. i가 101이 되면 while문을 실행하지 않고 while문 밖으로 나오기 때문에 1~100까지의 합이 변수sum에 저장된다.

do-while 문

기본구조 (if, for, while문 구조랑 조~금 다르다!)

do {
  // 명령1;
  // 명령2;
  // ...
} while (/* 조건식 */);

while문이나 for문은 먼저 조건을 확인하기 때문에 조건과 맞지 않으면 처음부터 내용을 실행하지 않는다. 하지만 do-while문은 while문의 조건에 맞지 않아도 do 문 안에 있는 내용이 최초 한번은 실행 된다.

댓글