C언어 ④

정혜지·2023년 4월 13일

조건문 & 반복문

: 논리적 흐름의 기본

조건문 순서도
조건문 순서도

반복문 순서도
반복문 순서도



if문

#iclude <stdio.h>

int main()
{
   int x = -150;
   if(x < 0)
      x = -x;	// 블록이 없으므로 최초 한 줄만 if영역에 해당됨
   printf("x의 절댓값은 %d입니다.\n", x);	// x의 절댓값은 150입니다.
   return 0;
}

#include <stdio.h>

int main()
{
   int score = 85;  // 학생의 점수를 의미
   if(score >= 90)
      printf("당신의 학점은 A입니다.\n");
   else if(score >= 80)
      printf("당신의 학점은 B입니다.\n");
   else if(score >= 70)
      printf("당신의 학점은 C입니다.\n");
   else
      printf("당신의 학점은 F입니다.\n");
   return 0;
}

// 실행결과:  당신의 학점은 B입니다.

  • 윤년 계산
    • 4년마다, 그렇지만 100년 단위일 때는 윤년에 해당하지 않도록
    • 400년 단위일 때는 어떤 상황이든간에 윤년으로 설정
#include <stdio.h>

int main()
{
   int year = 2024;
   if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
   {
      printf("%d년은 윤년입니다.\n", year);
   }
   else
   {
      printf("%d년은 윤년이 아닙니다.\n", year);
   }
   return 0;
}
// 실행결과: 2024년은 윤년입니다.

while문

#include <stdio.h>

int main()
{
   int i = 1, sum = 0;
   while(i <= 1000)
   {
      sum += i;		// sum = sum + i
      i++;
   }
   printf("1부터 1000까지의 합은 %d입니다.\n", sum);
   return 0;
}

// 실행결과: 1부터 1000까지의 합은 500500입니다.

for문

이중 for문을 활용하여 사각형 출력하기

#include <stdio.h>
#define N 10

int main()
{
   int i, j;
   for(i = 0; i < N; i++)
      {
        for(j = 0; j < N; j++)
          printf("★");	// 별이 10개가 출력되고
        printf("\n");	// 줄바꿈
      }
   
   // 10 * 10 => 100개의 별이 출력되는데
   // i가 0부터 10까지 반복되는 동안 J도 반복이 중첩되어 이루어짐
   
   return 0;
}

피라미드 형태 출력하기

#include <stdio.h>
#define N 20

int main()
{
  int i, j;
  for(i = 0; i < N; i++)
  {
     for(j = N - i -1; j > 0; j--)
       {
       	 printf("  ");
       }
     // 맨 처음 시작시 i가 0이기때문에 가장 윗부분 공백만 19개 존재
     for(j = 0; j < i; j++)
       {
         printf("★");
       }
     for(j = 0; j < i - 1; j++)
       {
         printf("★");
       }
     printf("\n");
  }
  return 0;
}



✅ CHECK~!

  • 조건문, 반복문에서는 웬만해서는 괄호를 사용 -> 조건문 영역 명확하게 파악
    • 괄호가 없는 경우 최초 한줄(최초 세미콜론)만 수행된다.
    • 또 들여쓰기가 안되어있는 경우 구분에 어려움이 있다.
  • for문 혹은 while문은 얼마든지 중첩 사용될 수 있다~!
  • for(;;)과 while(1)은 무한루프를 의미
  • break;를 이용하여 반복문 즉시 탈출 가능
    • 가장 가까운 반복문을 빠져나올 수 있다.

    • while(1)
      {
         if(a == 1)
           break;
      }
      
      // a가 1이 되는 순간, 무한반복이 정지된다.






기본 입출력

#include <stdio.h>

스탠다드 io를 넣을 때 자동으로 표준 입출력 부분이 기능적으로 헤더 파일 라이브러리 안에 포함되어 있다

scanf() -> variable -> printf()


입력

#include <stdio.h>

int main()
{
  int x;
  scanf("%d", &x);
  // 사용자가 입력하는 값을 정수의 형태로 변수 x의 메모리 주소에 삽입
  return 0;
}

간단한 계산기 프로그램

#include <stdio.h>

int main()
{
  char o;
  int x, y;
  while(1)
  {
    printf("수식을 입력하세요 : ");
    scanf("%d %c %d", &x, &o, &y);
    if(o == '+')
    {
      printf("%d %c %d = %d\n", x, o, y, x+y);
    }
    else if(o == '-')
    {
      printf("%d %c %d = %d\n", x, o, y, x-y);
    }
    else if(o == '*')
    {
      printf("%d %c %d = %d\n", x, o, y, x*y);
    }
    else if(o == '/')
    {
      printf("%d %c %d = %d\n", x, o, y, x/y);
    }
    else if(o == '%')
    {
      printf("%d %c %d = %d\n", x, o, y, x%y);
    }
    else 
    {
      printf("입력이 잘 못 되었습니다.\n");
    }  
    🔘 
	// 3 + 5를 입력하면, 
	// x에는 3, o에는 +, y에는 5가 삽입되고
	// 조건문에 따라 o가 +에 해당되기에
	// 3 + 5 = 8이 출력된다  --> x, o, y, x+y
    
    getchar();
    🔘
    // 한개의 문자만 입력 -> 버퍼처리
    // 3 + 5 입력 후 엔터를 누르면, 엔터 또한 하나의 문자로 인식됨
    // -> "프로그램을 종료하시겠습니까"라는 질문의 답으로 인식되기에
    // getchar() 함수를 사용하여 버퍼처리를 해줘야한다.
    // 문자 서식 지정자(%c) 사용 시, Enter(줄바꿈)도 하나의 공백문자로 입력됨
    // Buffer: 데이터들이 임시로 거쳐가는 메모리 장소
    
    printf("프로그램을 종료하시겠습니까? (y/n) ");
    scanf("%c", &o);
    if (o == 'n' || o == 'N')
    {
      continue;
      // 아래 코드는 수행하지 않고 현재 반복문의 처음 코드로 돌아가서 다시 수행됨 -> 수식을 입력하세요로 이동
    }
    else if(o == 'y' || o == 'Y')
    {
      break;
      // 반복문 종료
    }
    else
    {
      printf("입력이 잘못되었습니다.");
    }
  }
  return 0;
}


정해진 개수의 정수를 더하는 프로그램

#include <stdio.h>

int main()
{
  int num, x, i, sum = 0;
  printf("정수의 개수를 입력하세요 : ");
  scanf("%d", &num);
  for(i=0; i<num; i++)
  {
    printf("정수의 값을 입력하세요 : ");
    scanf("%d", &x);
    sum += x;
  }
  // num만큼 반복문이 수행되면 모든 정수의 값의 합으로 출력된다.
  
  printf("전체 정수의 값의 합은 %d입니다.\n", sum);
  return 0;
}


구구단

#include <stdio.h>

int main()
{
  int x, i;
  printf("정수를 입력하세요 : ");
  scanf("%d", &x);
  for(i = 1; i <= 9; i++)
  {
    printf("%d X %d = %d\n", x, i, x*i);
  }
  return 0;
}
profile
오히려 좋아

0개의 댓글