글을 작성할 때는 괜찮은데 올리고 나면 중첩반복문 코드 그림이 제일 처음으로 올라오는 오류가 발생
[chapter 05 선택문]~[chapter 06 반복문]
05-1 if문
/* a의 값이 10보다 클 때만 b에 a를 대입하는 if문 */
if (a > 10)
{
b = a;
}
/* 변수 a가 0보다 크거나 같으면 a에 1을 대입하고 0보다 작으면 -1을 대입하는 경우 */
if (a >= 0)
{
a = 1;
}
else
{
a = -1;
}
/* 변수 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 ~ 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문
/* a가 10보다 작은 동안 두 배씩 반복적으로 늘리는 구문 */
while (a < 10)
{
a = a * 2;
}
for (i = 0; i < 3; i++)
{
a = a * 2;
}
/* 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;
}
/* 10까지 더해서 총합이 30을 넘으면 중단하는 반복문 */
/* 3의 배수를 뺴고 1부터 100까지의 합 */
for (i = 1; i <= 100; i++)
{
if ((i % 3) == 0)
{
continue;
}
sum += i
}