제어문: 프로그램의 흐름을 제어하는 문장
1. 조건문: 조건을 따져서 true, false에 따라 분기
1) if
조건이 true 일때만 실행
*조건:결과로 true나 false가 나올 수 있는 수식
문법 | 예1) | 예2) |
if (조건){ 실행문1; 실행문2; } 실행문3; |
int x=10; if(x==10){ printf("x는 10"); } |
#include<stdio.h> |
2) if-else
조건이 하나이고 이 조건이 true일때와 false일때 다르게 실행하려 할때 사용
문법 | 예1) | 예2) |
if(조건){ 실행문; }else{ 실행문; } |
int score=78; if(score>=60){ printf("합격"); }else{ printf("불합격"); } |
#include <stdio.h> |
3) if-else if-else
조건이 2개 이상으로 다양하고 조건에 따라 각각 다르게 실행해야 할때 사용
문법 | 예1) | 예2) |
if(조건1){ 실행문; }else if(조건2){ 실행문; }else if(조건3){ 실행문; }else{ 실행문; } |
int x=2; if(x==1){ |
int score=78; if(score>100 || score<0){ printf("잘못된 점수"); return; } if(score>=90){ |
4) switch
조건이 2개 이상으로 다양하고 조건에 따라 각각 다르게 실행해야 할때 사용
문법 | 예1) |
switch(조건변수){ case 1: 실행문; 실행문; 실행문; |
int x = 2; switch(x){ case 1: printf("x는 1"); printf("x는 2"); printf("이외의 값"); |
2. 반복문:특정 문장을 원하는 만큼 반복
1)for
횟수를 기준으로 반복
문법 | 예1) | 예2) |
for(초기값;조건;증감연산){ 실행문; } |
int i; for(i=1;i<=5;i++){ printf(i); } |
int dan=3; int i; for(i=1;i<10;i++){ printf("%d * %d = %d\n", dan, i, dan*i); } |
1~100 10개씩 출력 | 1~100 합 | 약수 구하기 |
#include<stdio.h> void main(){ |
#include<stdio.h> void main(){ |
#include<stdio.h> void main(){ int i, num; printf("약수를 구할 정수를 입력하시오"); scanf("%d", &num); //num의 약수 출력 for(i=1;i<=num;i++){ if(num%i==0){ printf("%d\t", i); } } } |
- 2중 루프
2줄 출력 | 세로 구구단 |
void main(){ int i, j; for(i=0;i<2;i++){ for(j=0;j<3;j++){ printf("#"); } printf("\n"); } } |
void main(){ int i, j; for(i=2;i<10;i++){//단수를 표현하는 루프 for(j=1;j<10;j++){//곱하는 수를 표현하는 루프 printf("%d * %d = %d\n", i, j, i*j); } } } |
가로 구구단 | 삼각형1 |
void main(){ int i, j; for(i=1;i<10;i++){ for(j=2;j<10;j++){ printf("%d * %d = %d\t", j, i, j*i); } printf("\n"); } } |
void main(){ int i, j; char ch = '*'; for(i=0;i<5;i++){//줄을 표현하는 루프 for(j=0;j<=i;j++){//그 줄에 출력될 별의 개수 printf("%c", ch); } printf("\n"); } } |
삼각형2 | 삼각형3 |
void main(){ int i, j; char ch = ' '; for(i=0;i<5;i++){//줄을 표현하는 루프 ch = ' '; for(j=4;j>=0;j--){//그 줄에 출력될 별의 개수 if(j==i){ ch = '*'; } printf("%c", ch); } printf("\n"); } } |
void main(){ int i, j, m, size; char ch; printf("크기를 입력하시오."); scanf("%d", &size); m = size/2+1; for(i=0;i<m;i++){//삼각형의 줄 수 ch=' ';//출력할 문자 for(j=0;j<m+i;j++){//각 줄에 문자(' ', '*') 출력 if(j==m-i-1){ ch='*'; } printf("%c", ch); } printf("\n"); } } |
1~100 사이의 소수 |
void main(){ int i, j, cnt; for(i=2;i<101;i++){ cnt=0; //1과 자신을 뺀 약수의 개수를 카운트. 카운트 값이 0이면 소수 for(j=2;j<i-1;j++){ if(i%j==0){ cnt++; } } if(cnt==0){ printf("%d\t", i); } } } |
2)while
조건이 true일 동안 반복
문법 | 예1) | 예2) - 무한루프 |
while(조건){ 실행문; } |
int i=1; while(i<=5){ printf("%d\n", i); i++; } |
int i=1; while(i<=5){ printf("%d\n", i); // i++; } |
구구단 7단 | while의 활용1 |
void main(){ int i=1, j=7; while(i<10){ printf("%d * %d = %d\n", j, i, j*i); i++; } } |
void main(){ int i=1, num; while(i){ printf("숫자를 하나 입력하라"); scanf("%d", &num); printf("입력한 값:%d\n", num); printf("멈추려면 0을 입력하시오"); scanf("%d", &i); } } |
while의 활용2 |
#include<stdio.h> void main(){ int hp=30, exp=0, level=1, menu, flag=1; while(flag){ printf("1.밥먹기 2.잠자기 3.놀기 4.운동하기 5.정보확인 6.종료"); scanf("%d", &menu); switch(menu){ case 1: printf("피카추 밥먹음\n"); hp+=5; break; case 2: printf("피카추 잠잠\n"); hp+=10; break; case 3: printf("피카추 논다\n"); hp-=10; exp+=5; if(hp<=0){ printf("캐릭터 사망\n"); flag=0;//루프를 나감 } if(exp>=20){ level++; exp-=20; printf("레벨이 1증가 되었음\n"); } break; case 4: printf("피카추 운동함\n"); hp-=15; exp+=10; if(hp<=0){ printf("캐릭터 사망\n"); flag=0;//루프를 나감 } if(exp>=20){ level++; exp-=20; printf("레벨이 1증가 되었음\n"); } break; case 5: printf("피카추 상태\n"); printf("hp:%d\n", hp); printf("exp:%d\n", exp); printf("level:%d\n", level); break; case 6: flag = 0; break; default: printf("잘못된 메뉴값\n"); break; } } printf("게임종료\n"); } |
3)do-while
첫 회는 조건의 상태 상관없이 무조건 실행, 그 이후엔 조건이 true일 동안 반복
문법 | 예1) - 0번 실행 | 예2) - 1번 실행 |
do{ 실행문; }while(조건); |
int i=10; while(i<=5){ printf("%d\n", i); i++; } |
int i=10; do{ printf("%d\n", i); i++; }while(i<=5); |
예제 |
#include<stdio.h> void main(){ |
3. 기타
1)break
루프를 빠져 나오는 명령어
예1) | 예2) |
int x=1; for(;;){ printf("%d\n", i++); if(x>5){ break; } } |
int x=1; while(true){ printf("%d\n", i++); if(x>5){ break; } } |
예제 |
void main(){ //break: 루프 빠져나가라 int score; while(1){//무한루프 printf("점수:"); scanf("%d", &score); if(score<=100 && score>=0){//점수가 정상 범위 break;//루프를 빠져나감. 입력을 더 이상 안받음. } } if(score>=90){ printf("A"); }else if(score>=80){ printf("B"); }else if(score>=70){ printf("C"); }else if(score>=60){ printf("D"); }else{ printf("F"); } } |
2)continue
continue 다음 명령어들은 점프하고 다시 루프 진행
예1) | 예2) |
int i; for(i=1;i<51;i++){ if(i%2==0){ continue; } printf("%d\n", i); } |
void main(){ |
'c' 카테고리의 다른 글
6. 포인터 (0) | 2020.02.17 |
---|---|
5. 함수 (0) | 2020.02.12 |
4. 배열 (0) | 2020.01.22 |
2. 변수와 연산자 (0) | 2020.01.05 |
1. 개발환경구축 - 코드블럭설치 (0) | 2019.12.21 |
댓글