C언어(자기주도C언어프로그래밍)/Chapter06. 반복제어문1

자기주도C언어프로그래밍 Chapter06. 반복제어문1 - 연습문제&자가진단

사상 2023. 2. 23. 16:21

http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&sca=1060

 

JUNGOL

 

www.jungol.co.kr

사이트에서 직접 프로그램을 돌려볼 수 있습니다.

 

교재  P.112 연습문제1

#include <stdio.h>
int main(){
    char alpha = 'A';

    while(alpha <= 'Z'){
        printf("%c", alpha++);
    }
    printf("\n");

    return 0;
}

 

교재 P.113 자가진단1

#include <stdio.h>
int main(){
    int a=1;

    while(a<=15){
        printf("%d ", a++);
    }
    printf("\n");

    return 0;
}

 

교재 P.114 연습문제2

#include <stdio.h>
int main(){
    int sum = 0, num = 1;

    while(num <= 10){
        sum += num;
        num++;
    }

    printf("1부터 10까지의 합 = %d \n", sum);
    printf("while문이 끝난 후의 num의 값 = %d \n", num);

    return 0;
}

 

교재 P.115 자가진단2

#include <stdio.h>
int main(){
    int a, num=1, sum=0;
    
    scanf("%d", &a);
    while(num <= a){
        sum += num;
        num++;
    }
    printf("%d", sum);

    return 0;
}

 

교재 P.116 연습문제3

#include <stdio.h>
int main(){
    int score;

    while(1){
        printf("점수를 입력하세요. ");
        scanf("%d", &score);

        if(score < 0 || score > 100) break;
        if(score >= 80)
            printf("축하합니다. 합격입니다. \n");
        else
            printf("죄송합니다. 불합격입니다. \n");
    }
    
    return 0;
}

 

교재 P.117 자가진단3

#include <stdio.h>
int main(){
    int num;

    while(1){
        printf("number? ");
        scanf("%d", &num);
        if(num > 0)
            printf("positive integer\n");
        else if(num <0)
            printf("negative number\n");
        else   
            break;
    }
    return 0;
}

 

교재 P.118 연습문제4

#include <stdio.h>
int main(){
    int num;
    int sum = 0, cnt = 0;
    double avg;

    while(1){
        scanf("%d", &num);
        if(num == 0) break;
        sum += num;
        cnt++;
    }
    avg = (double)sum / cnt;

    printf("입력된 자료의 개수 = %d \n", cnt);
    printf("입력된 자료의 합계 = %d \n", sum);
    printf("입력된 자료의 평균 = %.2lf \n", avg);

    return 0;
}

 

교재 P.119 자가진단4

#include <stdio.h>
int main(){
    int num, cnt=0, sum = 0;
    double avg;

    while(1){
        scanf("%d", &num);
        if(num >= 100){
            sum += num;
            cnt++;
            break;
        }
        else{
            sum += num;
            cnt++;
        }
    }
    avg = (double)sum / cnt;

    printf("%d\n", sum);
    printf("%.1lf", avg);

    return 0;
}

 

교재 P.120 연습문제5 - 소스1

#include <stdio.h>
int main(){
    int num;
    int sum = 0, cnt = 0;
    int avg;

    while(1){
        scanf("%d", &num);
        if (num == 0) break;
        if(num % 2 == 0) continue;
        sum += num;
        cnt++;
    }
    avg = sum / cnt;
    printf("홀수의 합 = %d \n", sum);
    printf("홀수의 평균 = %d \n", avg);
    return 0;
}

 

교재 P.121 연습문제5 - 소스2

#include <stdio.h>
int main(){
    int num;
    int sum = 0, cnt = 0;
    int avg;

    do{
        scanf("%d", &num);
        if(num % 2 == 1){
            sum += num;
            cnt++;
        }
    }while(num != 0);
    avg = sum / cnt;
    printf("홀수의 합 = %d \n", sum);
    printf("홀수의 평균 = %d \n", avg);
    return 0;
}

 

교재 P.122 자가진단5

#include <stdio.h>
int main(){
    int num;

    do{
        scanf("%d", &num);
        if(num % 3 == 0)
            printf("%d \n", num / 3);
        else
            continue;
    }while(num != -1);
    
    return 0;
}

 

교재 P.124 연습문제6

#include <stdio.h>
int main(){
    int num;

    do{
        printf("1. 입력하기 \n");
        printf("2. 출력하기 \n");
        printf("3. 삭제하기 \n");
        printf("4. 끝내기 \n");

        printf("작업할 번호를 선택하세요. ");
        scanf("%d", &num);

        switch(num){
            case 1:
                printf("\n입력하기를 선택하였습니다. \n\n");
                break;
            case 2:
                printf("\n출력하기를 선택하였습니다. \n\n");
                break;
            case 3:
                printf("\n삭제하기를 선택하였습니다. \n\n");
                break;
            case 4:
                printf("\n끝내기를 선택하였습니다. \n\n");
                break;
            default:
                printf("\n잘못 선택하였습니다. \n\n");
            }
    }while(num != 4);
    
    return 0;
}

※교재 예시 코드에는 default: printf("잘못 입력하였습니다. \n\n"); 라고 나와있지만 실행 예시는 잘못 선택하였습니다. 라고 나와있습니다. 입/출력 예를 보고 작성하여 저는 >잘못 선택하였습니다<로 코드를 작성했습니다.

교재 P.125 자기진단6

#include <stdio.h>
int main(){
    int num;

    do{
        printf("1. Korea\n");
        printf("2. USA\n");
        printf("3. Japan\n");
        printf("4. China\n");
        printf("number? ");
        scanf("%d", &num);
        printf("\n");

        switch(num){
            case 1:
                printf("Seoul\n\n");
                break;
            case 2:
                printf("Washington\n\n");
                break;
            case 3:
                printf("Tokyo\n\n");
                break;
            case 4:
                printf("Beijing\n\n");
                break;
            default:
                printf("none\n\n");
        }
    }while(num <= 4 && num > 0);

    return 0;
}

 

while은 처음부터 조건을 확인하고 계산하는 작업을 반복하지만

do while은 최초 1회는 조건을 확인하지 않고 계산을 한 후 2회부터 조건을 확인하고 계산하는 작업을 반복한다.