1. 조건문 <if문>
(1) 형식-1
if(조건식)
{
종속문장1;
...
종속문장n;
}
|
※ 복합문 : 조건식이 참일 때 실행할 문장이 두개 이상일 경우에는 중괄호('{}')를 사용해 문장들을 하나로 묶어 줘야 한다.
<프로그램 예제>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 |
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int temp;
printf("현재 온도는? ");
scanf("%d",&temp);
if(temp<0)
printf("\n오늘은 영하이며, ");
printf("\n현재 온도는 %d도입니다.\n",temp);
return 0;
} |
cs |
(2) 형식-2
if(조건식)
종속문장1;
else
종속문장2;
다음문장;
//실행하는 문장이 두줄 이상이면 중괄호({})로 묶는다.
|
※ 쓸데없이 세미콜론(;)을 붙이지 않아야 한다.
※ else뒤에 조건식을 단독으로 사용할 수 없다.
<프로그램 예제>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 |
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int num;
printf("정수를 입력하세요 : ");
scanf("%d",&num);
if(num%2==0)
printf("\n짝수입니다.\n"); //참인 경우 실행문
else
printf("\n홀수입니다.\n"); //거짓인 경우 실행문
return 0;
} |
cs |
(3) 형식-3
if(조건식 1)
문장1;
else if(조건식2)
문장2;
else if(조건식3)
문장3;
.....
else if(조건식 n-1)
문장n-1;
else
문장n;
다음문장;
//실행하는 문장이 두줄이상이면 중괄호({})로 묶는다.
|
※ else 뒤에 바로 if문이 올때 else와 if 사이에는 반드시 공백이 있어야한다.
<프로그램 예제>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 |
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int score;
char grade;
printf("점수를 입력하세요 : ");
scanf("%d",&score);
if(score>=90)
grade = 'A';
else if(score>=80)
grade = 'B';
else if(score>=70)
grade = 'C';
else if(score>=60)
grade = 'D';
else
grade = 'F';
printf("\n학점 : %c\n",grade);
return 0;
} |
cs |
2. 조건문<switch문>
(1) 형식
switch(조건식)
{
case 값1: 문장 1; break;
case 값2: 문장 2; break;
...
case 값n: 문장 n; break;
default: 문장 n+1;
}
다음문장;
|
※ 조건식의 결과 값은 반드시 정수형이어야 한다.
※ case 레이블에 명시하는 값은 반드시 정수형 상수 한 개만 가능하다.
※ case 레이블 뒤의 내용까지 실행하지 않으려면 꼭 break;를 사용해아한다.
3-1> 예제 break;유무
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 |
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int menu;
printf("1. 입금하기 2. 출금하기 3. 송금하기 \n");
printf("메뉴번호 선택 : ");
scanf("%d",&menu);
switch(menu)
{
case 1: printf("입금하기 화면으로 이동합니다.\n");
case 2: printf("출금하기 화면으로 이동합니다.\n");
case 3: printf("송금하기 화면으로 이동합니다.\n");
default: printf("잘못된 입력입니다.\n");
}
return 0;
} |
cs |
//break; 가 없을때는 2 를 입력하게되면 case 1: 에 만족하지 않아 case 1: 을 제외한 나머지 문장들이 모두 출력된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 |
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int menu;
printf("1. 입금하기 2. 출금하기 3. 송금하기 \n");
printf("메뉴번호 선택 : ");
scanf("%d",&menu);
switch(menu)
{
case 1: printf("입금하기 화면으로 이동합니다.\n");break;
case 2: printf("출금하기 화면으로 이동합니다.\n");break;
case 3: printf("송금하기 화면으로 이동합니다.\n");break;
default: printf("잘못된 입력입니다.\n");
}
return 0;
} |
cs |
//case 문을 실행하고 break; 를 만나게 되면 switch문이 종료된다.
예제 3-2>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 |
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int x,y,result;
char op;
printf("연산자 종류 : + - * / %%\n");
printf("입력 예) 2+3\n\n 입력 >>");
scanf("%d %c %d",&x,&op,&y);
switch(op)
{
case '+' : result=x+y; break;
case '-' : result=x-y; break;
case '*' : result=x*y; break;
case '/' : result=x/y; break;
case '%' : result=x%y; break;
default : printf("잘못된 연산입니다.\n"); exit(0);
}
printf("\n결과 >> %d %c %d = %d",x,op,y,result);
return 0;
} |
cs |
3. 반복문 <for문>
①
1
2
3
4
5 |
int i;
//1. 1~10까지 출력
for(i=1;i<=10;i++)
printf("%d\n",i); |
cs |
②
1
2
3
4
5 |
int i;
//2. 1~10까지 역순
for(i=10;i>=1;i--)
printf("%d\n",i); |
cs |
③
1
2
3
4
5
6 |
int i;
//3. 1~10까지 짝수만 출력
for(i=2;i<=10;i+=2)
printf("%d\n",i);
|
cs |
④
1
2
3
4
5
6
7 |
int i;
//4. 1~100 짝수 출력
for(i=2;i<=100;i+=2)
printf("%d\n", i);
|
cs |
⑤
1
2
3
4
5
6 |
int i;
//5. 1~100 홀수 출력
for(i=1;i<=100;i+=2)
printf("%d\n", i);
|
cs |
⑥
1
2
3
4
5
6
7 |
int i;
//6. A~Z 출력
for(i=65; i<=100;i++)
printf("%c\n",i);
|
cs |
⑦
1
2
3
4
5
6
7
8
9
10 |
//7. 1~10까지 합
int i,sum=0;
for(i=1; i<=10; i++)
{
sum+=i;
printf("%d\n",sum);
}
|
cs |
⑧
1
2
3
4
5
6
7
8
9 |
//8. 1~100까지 합
int i,sum=0;
for(i=1; i<=100; i++)
sum+=i;
printf("%d\n",sum);
|
cs |
for문 예제
합계가 1000이 넘는 i값
→for문 + if문 예제소스, 실행결과, 주석(if문의 역할설명)
1
2
3
4
5
6
7
8
9
10
11 |
int i, sum=0;
for(i=1; ;i++)
{
if(sum>1000) break;
sum += i;
printf("i = %d, sum = %d\n",i,sum);
}
|
cs |
1
2
3
4
5
6
7
8
9
10 |
int i, sum=0;
for(i=1; ;i++)
{
sum += i;
if(sum>1000) break;
printf("i = %d, sum = %d\n",i,sum);
}
|
cs |
이중for문
1. 형식
for(i=1;i<=2;i++)
for(j=1;j<=5;j++)
printf("i=%d,j=%d \n",i,j);
|
2. 예제-1 프로그램 5-10 소스, 실행결과
1
2
3
4
5
6
7
8
9
10
11 |
int line, star;
for(line=1;line<=5;line++)
{
for(star=1;star<=5;star++)
printf("*");
printf("\n");
} |
cs |
3. 예제-2 프로그램 5-11 소스, 실행결과
1
2
3
4
5
6
7
8
9
10
11 |
int line, star;
for(line=1;line<=5;line++)
{
for(star=1;star<=line;star++)
printf("*");
printf("\n");
} |
cs |
5. 구구단 출력 프로그램(5-17 프로그램 소스, 실행결과)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int dan,i;
printf("출력 할 단 입력 : ");
scanf("%d",&dan);
for(i=1;i<=9;i++)
printf("%d * %d = %d\n",dan,i,dan*i);
return 0;
} |
cs |
6. 구구단 1~9단 출력(실행결과 : 연습문제 18번 p.225참조) 소스코드, 실행결과
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 |
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int i,j;
for(i=1;i<=9;i++)
{
for(j=1; j<=9;j++)
printf("%d * %d = %d\n",i,j,i*j);
printf("\n");
}
return 0;
} |
cs |
....
7. 프로그램 5-15소스, 실행결과
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 |
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int i, quiz,sum,pass,fail;
double avg;
sum=0;
pass=0;
fail=0;
for(i=1;i<=10;i++)
{
printf("%d번의 퀴즈 점수는? ",i);
scanf("%d",&quiz);
sum+=quiz;
if(quiz>=70)
pass++;
else
fail++;
}
avg = (double)sum/10;
printf("==========================\n");
printf("평균:%.2lf점\n",avg);
printf("통과자:%2d명\n",pass);
printf("탈락자:%2d명\n",fail);
return 0;
} |
cs |
//for문 안에 if~else문을 넣었다.
for문을 10번 실행시키고 sum변수 안에 각 입력한 quiz의 점수를 합계시킨다.
입력한 점수가 if~else문의 조건인 70점 이상이면 pass에 1이 더해지게 되고,
만족하지않으면 fail에 1이 더해진다.
avg는 double형으로 초기화해주었기 때문에 sum을 형변환연산자를 사용해 double으로 형변환을 해주었다.
그리고 출력문을 이용하여 각 값을 출력시켜주었다.
4. 반복문<while문>
1. 형식
while(조건식)
반복할문장;
다음문장;
|
2. 1~10까지 합을 출력하는 프로그램, 실행결과
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 |
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int i=1, sum=0;
while(i<=10)
{
sum += i;
i++;
}
printf("%d",sum);
return 0;
} |
cs |
//변수를 초기화 시켜주고, while문의 괄호 안에 조건식을 넣고, 증감식을 while문내부에 넣는다.
이 프로그램에서 int형으로 i와 sum을 초기화 해주고 while문을 실행시킨다.
3. 합이 1000이 넘는 수 출력 프로그램, 실행결과
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 |
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int i=0, sum=0;
while(1)
{
sum += i;
if(sum>1000) break;
i++;
}
printf("%d\n",sum);
return 0;
} |
cs |
//while(1)은 무한 반복문이다.
while문에서 무한 반복을 실행하게 되고,while문안에 있는
if문의 조건에 의해 sum의 합이 1000이상이 되면 break가 걸린다.
여기서는 sum+=i 의 위치가 if문 위에 있기 때문에
1000이 넘는 처음의 숫자가 출력이 된다.
100이 넘지 않는 숫자를 출력시키고 싶으면
i문 아래에 sum+=i를 위치시키면 된다.
5. 반복문 <do~while문>
1. 형식
do { 반복 증감식 }while(조건식);
|
6. for문, while문, do~while문의 비교
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i; printf("for문을 이용한 출력\n"); for(i=1;i<=10;i++) printf("%d ",i); printf("\n\n\n"); printf("while문을 이용한 출력\n"); i=1; //1.초기식 while(i<=10) //2.조건식 { printf("%d ",i); i++; //3. 증감식 } printf("\n\n\n"); printf("do while문을 이용한 출력 \n"); i=1; //1. 초기식 do { printf("%d ",i); i++; //3. 증감식 }while(i<=10); //2. 조건식 return 0; } | cs |
//조건을 만족하는 for문, while문, do~while문에서는 동일한 결과가 출력된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i; printf("for문을 이용한 출력\n"); for(i=1;i>10;i++) printf("%d ",i); printf("\n\n\n"); printf("while문을 이용한 출력\n"); i=1; //1.초기식 while(i>10) //2.조건식 { printf("%d ",i); i++; //3. 증감식 } printf("\n\n\n"); printf("do while문을 이용한 출력 \n"); i=1; //1. 초기식 do { printf("%d ",i); i++; //3. 증감식 }while(i>10); //2. 조건식 return 0; } | cs |
//하지만 조건을 만족하지 않는 for문, while문, do~while문에서는 결과가 다르게 출력이 되는데
그 이유는 각 반복문의 실행순서에 의해 결과가 다르게 출력되는것을 확인할 수 있다.
(왼쪽부터 for문, while문, do~while문)
for문과 while문은 조건식이 참일때만 반복할 문장을 실행하는데.
do~while문은 먼저 반복할 문장을 실행 시킨 후에 조건을 판별하므로
조건식이 참인가 거짓인가에 상관없이 한번은 무조건 반복할 문장을 실행시키게 된다.
7. 기타제어문
(1) break; 예제 소스, 결과
switch문, for문, while문, do~while문을 탈출할때 사용
무한 루프를 벗어날 때 매우 유용하다.
(2) continue; 예제 소스, 결과
continue문 다음 내용만 실행하지 않은 채 다음 반복으로 진행
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | int i; printf("break 예시>> "); for(i=1;i<=10;i++) { printf("%d ",i); if(i==5) break; } printf("\n\ncontinue 예시>> "); for(i=1;i<=10;i++) { if(i==5) continue; //5일때 출력을 안하고 다시 증감식으로 올라간다. printf("%d ",i); } | cs |
int score;
printf("점수입력 : ");
scanf("%d",&score);
switch(score/10)
{
case 10:
case 9: printf("A학점\n"); break;
case 8: printf("B학점\n"); break;
case 7: printf("C학점\n"); break;
case 6: printf("D학점\n"); break;
default: printf("F학점\n"); break;
}
if(score>=90)
printf("A학점");
else if(score>=80)
printf("B학점");
else if(score>=70)
printf("B학점");
else if(score>=60)
printf("C학점");
else
printf("F학점");
#include <stdio.h>
#include <stdlib.h> //system 함수를 위한 헤더파일
#define PI 3.141592 //PI를 매크로 상수로 정의한다.
#include<conio.h> //getch 함수를 위한 헤더파일
int main(int argc, char *argv[]) {
/*
int answer;
int r;
double circum, area, volume;
do{
printf("===========================\n");
printf("=== 1. 원의 둘레 구하기 ===\n");
printf("=== 2. 원의 넓이 구하기 ===\n");
printf("=== 3. 구의 부피 구하기 ===\n");
printf("=== 4. 종료하기 ==========\n");
printf("===========================\n");
printf(" 메뉴 선택 : ");
scanf("%d",&answer);
if(answer==1||answer==2||answer==3)
{
printf("\n>> 반지름은?");
scanf("%d",&r);
}
switch(answer)
{
case 1:
{
circum=2*PI*r;
printf("원의 둘레는 %6.2lf\n",circum);
} break;
case 2:
{
area = PI * r*r;
printf("원의 넓이는 %6.2lf\n", area);
} break;
case 3:
{
volume=4./3*PI*r*r*r;
printf("원의 부피는 %6.2lf\n",volume);
} break;
case 4:
{
printf("\n프로그램을 종료합니다.\n"); exit(0); //exit(0)은 실행종료를 나타낸다
}
}
printf("\n >>결과를 확인 했으면 아무키나 누르세요.");
getch(); //키보드로 문자 한 개 입력받기
system("cls"); //현재 화면의 내용 지우기
} while(answer!=4); //case4를 선택하지 않았으면 다시 반복하기
*/
return 0;
}