[복학생 갱생 프로젝트] #2 제어문 - 반복문
복학생 갱생 프로젝트 3일차
스터디 플랜
저번시간에 오리엔테이션 진행과 함께 C언어에서 조건문에 대해 공부했다. 오늘은 반복문에 대해서 학습하려고 한다.
[ 스터디 구성원 ]
[ 스터디 커리큘럼 ]
1_기초문법,입출력,연산자
2_제어문
3_전처리
4_포인터,배열,함수
5_문자열,구조체
6_동적할당1
7_동적할당2
실습#2_제어문 - 반복문
반복문
- 반복문이란
- 하나 이상의 문장을 두 번 이상 반복 실행하기 위해서 구성하는 문장
- 반복문의 종류
- while, do-while, for
- While
int main(){
int num=0;
while(num<5){
printf("Hello world! %d \n",num);
num++;
}
return 0;
}
실행결과
Hello world! 0
Hello world! 1
Hello world! 2
Hello world! 3
Hello world! 4
- printf(“Hello world! %d \n”,num); -> 반복의 목적이 되는 대상
- 변수 num은 반복의 횟수를 조절한다.
while(num<5)
printf("Hello world! %d \n",num++);
while(num<5)
printf("Hello world! %d \n",num), num++;
- 반복의 대상이 한 문장이면 중괄호 생략 가능
-
들여쓰기를 하지 않은 것
int main(void) { int num=0; while(num<5) { printf("Hello world! %d \n", num); num++; } return 0; } -
들여쓰기를 한 것
int main(void) { int num=0; while(num<5) { printf("Hello world! %d \n", num); num++; } return 0; } -
들여쓰기를 한 것과 하지 않은 것의 차이가 쉽게 눈에 들어온다!
- 중첩 반복문 ( while )
-
while문 안에 while문이 존재하는 상태
-
예제 : while문을 중첩시켜서 구구단 전체를 출력한다.
-
int main(){ int cur-2; int is=0; while(cur<10){ // 2단부터 9단까지 반복 is=1; // 새로운 단의 시작을 위해 while(is<10){ // 각 단의 1부터 9까지의 곱을 표현 printf("%d X %d = %d \n", cur, is, cur*is); is++; } cur++; // 다음 단으로 넘어가기 위한 증가 } return 0; }
-
- Do while
-
동일한 횟수를 반복하는 반복문들
-
while(num<10){ printf("%d X %d = %d \n", dan, num, dan*num); num++; } -
do { printf("%d X %d = %d \n", dan, num, dan*num); num++; }while(num<10) -
do ~ while 문의 순서도
-
int main(){
int total=0, num=0;
do
{
printf("정수 입력(0 to quit): ");
scanf("%d",&num);
total+=num;
}while(num!=0);
printf("합계: $d \n", total);
return 0;
}
실행결과
정수 입력(0 to quit): 1
정수 입력(0 to quit): 2
정수 입력(0 to quit): 3
정수 입력(0 to quit): 4
정수 입력(0 to quit): 5
정수 입력(0 to quit): 0
합계: 15
- for
-

-
for문의 구성요소
for( 초기식 ; 조건식 ; 증감식 ){ // 반복의 대상이 되는 문장들 }- 초기식 : 본격적으로 반복을 시작하기에 앞서 딱 한번 실행된다.
- 조건식 : 매 반복의 시작에 앞서 실행되며, 그 결과를 기반으로 반복유무를 결정한다.
- 증감식 매 반복실행 후 마지막에 연산이 이뤄진다.
-
for문 흐름의 핵심
- int num=0에 해당하는 초기화는 반복문의 시작에 앞서 딱 1회 진행한다
- num<3에 해당하는 조건의 검사는 매 반복문의 시작에 앞서 진행한다.
- num++ 에 해당하는 증감연산은 반복영역을 실행한 후에 진행한다.
-
int main(){ int num; for(num=0;num<3;num++) printf("Hi~~"); }- for문의 반복영역도 한 줄이면 중괄호 생략이 가능하다
- 불필요하다면 초기식,조건식,증감식을 생략할 수 있다.
- 단, 조건식을 생략하면 참으로 인식이 되어 무한 루프를 형성하게 된다.
-
int main(){ double total=0.0; double input=0.0; int num=0; for( ; input>=0.0 ; ){ total+=input; printf("실수 입력(minus to quit) : "); scanf("%lf",&input); num++; } printf("평균: %f \n", total/(num-1)); return 0; } -
실행결과 실수 입력(minus to quit) : 3.2323 실수 입력(minus to quit) : 5.1891 실수 입력(minus to quit) : 2.9297 실수 입력(minus to quit) : -1.0 평균: 3.783700
- 중첩반복문( for )
-
구구단 전체를 출력하는 예제
-
int main(){ int cur, is; for(cur=2;cur<10;cur++){ for(is=1;is<10;is++){ printf("%d X %d = %d \n", cur, is, cur*is); } printf("\n"); } return 0; }
-
퀴즈
- 정수 n을 입력받은 후, 1부터 n까지 3의 배수의 합을 출력
- 10 -> 18, 20 -> 63
- 두 개의 정수 x와 y를 입력받은 후, x^y을 출력
- 입력: 2 3
- 출력: 8
- 두 자연수를 입력받은 후, 아래 모양을 출력
- 5, 10

- 양의 정수 n을 입력받은 후, 아래 모양을 출력
- n = 10

- 피보나치 수열은 f n = f n-1+ f n-2를 만족하는 수열이다. 양의 정수 n을 입력받은 후, f0부터 fn까지 출력하는 프로그램을 작성하라.
- 입력 = 10
- 출력 = 0 1 1 2 3 5 8 13 21 34
- 다음의 모양을 출력하라
- 입력 = 8


댓글남기기