[혼공학습단] 혼자 공부하는 C언어 3주차

CE의 velog·2025년 1월 26일
0
post-thumbnail

글을 작성할 때는 괜찮은데 올리고 나면 중첩반복문 코드 그림이 제일 처음으로 올라오는 오류가 발생

[chapter 05 선택문]~[chapter 06 반복문]

05-1 if문

  • if문의 기본형식
    -기본 if문은 조건식을 만족하면 실행문 실행, 그렇지 않으면 실행하지 않고 지나감
  /* a의 값이 10보다 클 때만 b에 a를 대입하는 if문 */ 
  if (a > 10)
  {
      b = a;
  }
  • if ~ else문
    -조건이 만족하지 못할 때에도 실행문이 있는 경우
  /* 변수 a가 0보다 크거나 같으면 a에 1을 대입하고 0보다 작으면 -1을 대입하는 경우 */
  if (a >= 0)
  {
      a = 1;
  }
  else
  {	
      a = -1;
  }    
  • if ~ else if ~ else문
    -3개 이상의 실행문에서 반드시 하나를 선택하는 경우
	/* 변수 a의 값에 따라 b의 값을 1,2,3 중 선택하는 경우 */
    if (a > 0)
    {
    	b = 1;
    }
    else if (a == 0)
    {
    	b = 2;
    }
    else
    {
    	b = 3;
    }    

05-2 if문 활용과 switch ~ case문

  • if문 중첩
    -선행 조건이 있을 시 if문 안에 if문 넣어 사용
    -if ~ else if ~ else문도 if ~ else문이 중첩된 구조
	/* if 중첩 + if ~ else문 사용 */
    if (a > 10)
	{
    	if (b >= 0)
        {
        	b = 1;
        }
        else
        {
        	b = -1;
        }
        
   	}
  • else 결합 문제
    -if ~ else문 안에 단독으로 if문을 쓸 때에는 반드시 중괄호가 필요, 컴파일러는 if문이 중첩된 경우 else를 가장 가까운 if와 연결하기 때문에 오류가 날 수도 있음

  • switch ~ case문
    -여러 개의 상수 중 조건에 해당하는 하나를 골라 실행하는 것
    -규칙: 조건식으로 정수식만 사용, case는 break (해당 블록 탈출) 를 포함
    -break는 필요에 따라 생략할 수는 있지만 switch ~ case문은 대부분 다중 선택구문으로 쓰여서 잘못 생략 시 코드 잘못 작성할 수도 있음

	switch ( 조건식 )
    {
	case 상수식1:
         실행문1;
         break;
    case 상수식2:
         실행문2;
         break;
    default:
         실행문3;
         break;
     }        

06-1 while문, for문, do ~ while문

  • while문
    -while문은 조건식을 먼저 검사하고 조건식이 참이 동안 실행문을 반복
    -while문의 조건식을 만족하지 못하면 while문을 끝내고 while문 이후의 문장을 실행
	/* a가 10보다 작은 동안 두 배씩 반복적으로 늘리는 구문 */
	while (a < 10)
    {
    	a = a * 2;
    }
  • for문
    -실행문을 원하는 횟수만큼 반복할 때 사용
    -for문은 초기식 (최초 한 번 실행), 조건식, 증감식
	for (i = 0; i < 3; i++)
    {
    	a = a * 2;
    }
  • do ~ while문
    -반복할 문자을 수행한 후에 조건을 검사
    -실행문이 조건식 앞에 있어서 조건과 관계없이 실행문을 최소한 한 번은 실행 (조건식이 참인 동안 실행문 반복)
	/* a값이 10보다 작은 동안 두 배씩 늘리는 문장 */
    do
    {
    	a = a * 2;
    } while (a < 10);

06-2 반복문 활용

  • 중첩 반복문
    -반복문 안에 실행할 문장으로 반복문이 포함된 것
	/* 별을 5개씩 줄지어 3줄 그리는 중첩 반복문 */
      #include <stdio.h>

      int main(void)
      {
          int i, j;					// 반복 횟수 세기 위한 제어 변수

          for (i = 0; i < 3; i++)		// i가 0부터 2까지 증가하여 세 번 반복 (별을 세 줄)
          {
              for (j = 0; j < 5; j++) // j가 0부터 4까지 증가하여 다섯 번 반복 (별을 한 줄에 5개)
              {
                  printf("*");		// 별 출력
              }
              printf("\n");			// 별 다섯 번 출력 후 줄 바꿈
          }

          return 0;
      }
  • break
    -break는 반복문 안에서 반복을 끝내고 싶을 때
    -주의: break는 자신이 속한 반복문 하나만 벗어나기 때문에 중첩 반복문에서 모든 반복문을 벗어날 수 없음
    -반복문의 조건식이 항상 참이면 무한 반복문 ( while (1)과 for (;;) )으로 탈출 시 break 사용
    -switch ~ case문에서 사용 시 switch ~ case블록만 벗어남
	/* 10까지 더해서 총합이 30을 넘으면 중단하는 반복문 */

  • continue
    -반복문의 일부를 건너뛰는 것으로 블록을 탈출하는 것은 아님
	/* 3의 배수를 뺴고 1부터 100까지의 합 */
    for (i = 1; i <= 100; i++)
    {
    	if ((i % 3) == 0)
        {
        	continue;
        }
        sum += i
    }
  • 기본숙제
    -5장 추가내용
    else 결합:
    if ~ else문 안에 단독으로 if문을 쓸 때에는 반드시 중괄호가 필요, 컴파일러는 if문이 중첩된 경우 else를 가장 가까운 if와 연결하기 때문에 오류가 날 수도 있음
    -6장 추가내용
    break:
    1. break는 자신이 속한 반복문 하나만 벗어나기 때문에 중첩 반복문에서 모든 반복문을 벗어날 수 없음
    2. switch ~ case문에서 사용 시 switch ~ case블록만 벗어남
  • 추가숙제

0개의 댓글

관련 채용 정보