3 분 소요

복학생 갱생 프로젝트 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 문의 순서도

        • 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( 초기식 ; 조건식 ; 증감식 ){
      	// 반복의 대상이 되는 문장들 
      }
      
      • 초기식 : 본격적으로 반복을 시작하기에 앞서 딱 한번 실행된다.
      • 조건식 : 매 반복의 시작에 앞서 실행되며, 그 결과를 기반으로 반복유무를 결정한다.
      • 증감식 매 반복실행 후 마지막에 연산이 이뤄진다.
    • 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
      • 그림1


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


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


    • 다음의 모양을 출력하라
      • 입력 = 8
      • image-20230131233634855




    후기

    반복문 중에서도 중첩반복문을 이용한 별찍기 문제에서 많은 시간이 소진되었다. 다들 쉬운것만 하다가 어려운거 해서 그런거같다. 근데 이제 시작인데 벌써 힘들면 ... 크음

    댓글남기기