대학 과제

[C] C프로그래밍 과제 모음 (3)

Hicecream 2023. 4. 27. 18:28

2022년 C언어 수업 과제 입니다.

 

 

 

1. 무한 반복문으로 Q, q 알파벳 찾는 프로그램

#include <stdio.h>

int main(void)
{
    int cnt = 0;
    char alph;

    while (1) {
        printf("\n알파벳 입력 : ");
        scanf_s("%c", &alph, sizeof(alph));
        getchar();
        cnt++;

        if (alph == 'q' || alph == 'Q') {
            printf("총 %d회 실행하여 알파벳을 찾았습니다.\n", cnt);
            printf("찾은 알파벳은 대소 문자 구별 없이 '%c' 입니다.\n", alph);
            break;
        }
        else
            printf("찾는 알파벳이 아닙니다. 알파벳을 다시 입력하세요.\n");
    }
    return 0;
}

 

 

 

2. 1부터 입력한 정수까지 누적 합 구하기

#include <stdio.h>

int main(void)
{
    int num, cnt = 0, hap = 0;

re:
    printf("정수값 입력 : ");
    scanf_s("%d", &num);

    if (num < 0) {
        printf("음의 정수값 %d는(은) 허용하지 않습니다.\n", num);
        printf("양의 정수값을 다시 입력하세요.\n");
        goto re;
    }
    else {
        do {
            hap += cnt;
            cnt++;
        } while (cnt <= num);
    }
    printf("1부터 %d까지 누적 합계는 %d\n", num, hap);
    return 0;
}

 

 

 

3. 무한 반복문으로 구구단 출력하는 프로그램

#include <stdio.h>

int main(void)
{
    int su, dan, gob, cnt =1;
    char alph;

    printf("<%d 회 실행>\n", cnt);
    for (su = 9; su >= 1; su--) {
        for (dan = 9; dan >= 2; dan--) {
            gob = dan * su;
            printf("%d x %d = %02d  ", dan, su, gob);
        }
        printf("\n");
    }
re:
    do {
        printf("프로그램을 다시 실행하시겠습니까? (Y/N) : ");
        scanf_s("%c", &alph, sizeof(alph));
        getchar();

        switch (alph) {
        case 'y':
        case 'Y':
            printf("<%d 회 실행>\n", ++cnt);
            for (su = 9; su >= 1; su--) {
                for (dan = 9; dan >= 2; dan--) {
                    gob = dan * su;
                    printf("%d x %d = %02d  ", dan, su, gob);
                }
                printf("\n");
            }
            goto re;
        case 'n':
        case 'N':
            printf("총 %d회 실행 후 프로그램을 종료합니다.\n", cnt);
            return 0;

        default:
            printf("입력한 알파벳 \"%c\"는(은) 허용하지 않습니다.\n", alph);
            printf("알파벳을 다시 입력하세요.\n");
            goto re;
        } 
    } while (1); 

    return 0;
}

 

 

 

4. 연, 월, 일을 입력받아 그 해 1월 1일부터 며칠 째인지 구하는 프로그램

#include <stdio.h>

int main(void)
{
    int yy, mm, dd;

    scanf_s("%d %d %d", &yy, &mm, &dd);

    switch (mm) {
    case 12:
        dd += 31;
    case 11: 
        dd += 31;
    case 10:
        dd = 30 + dd;
    case 9:
        dd = 31 + dd;
    case 8:
        dd = 31 + dd;
    case 7:
        dd = 30 + dd;
    case 6:
        dd = 31 + dd;
    case 5:
        dd = 30 + dd;
    case 4:
        dd = 31 + dd;
    case 3:
        dd = 28 + dd;
    case 2:
        dd = 31 + dd;
    case 1:
        printf("%d", dd);
    }
    return 0;
}


// 비효율적인 코드
    /*case 1:
        dd = dd;
        printf("%d", dd);
        break;
    case 2:
        dd = 31 + dd;
        printf("%d", dd);
        break;
    case 3:
        dd = 31 + 28 + dd;
        printf("%d", dd);
        break;
    case 4:
        dd = 31 + 28 + 31 + dd;
        printf("%d", dd);
        break;
    case 5:
        dd = 31 + 28 + 31 + 30 + dd;
        printf("%d", dd);
        break;
    case 6:
        dd = 31 + 28 + 31 + 30 + 31 + dd;
        printf("%d", dd);
        break;
    case 7:
        dd = 31 + 28 + 31 + 30 + 31 + 30 + dd;
        printf("%d", dd);
        break;
    case 8:
        dd = 31 + 28 + 31 + 30 + 31 + 30 + 31 + dd;
        printf("%d", dd);
        break;
    case 9:
        dd = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + dd;
        printf("%d", dd);
        break;
    case 10:
        dd = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + dd;
        printf("%d", dd);
        break;
    case 11:
        dd = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + dd;
        printf("%d", dd);
        break;
    case 12:
        dd = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 31 + dd;
        printf("%d", dd);
        break;
	}*/