대학 과제

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

Hicecream 2023. 4. 26. 18:18

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

 

 

 

1. 포인터 연산자 활용하기

#include <stdio.h>

int main(void)
{
    int num1, val;
    int* poval;

    poval = &num1;

    /*
    '*' 스타 연산자의 사용법
    1. 포인터연산자 선언
    2. 포인터 연산자가 가리키는 변수의 저장값
    */

    printf("키보드로 정수 1개를 입력하시오 : ");
    scanf_s("%d", &num1);
    val = *poval;

    printf("키보드로 입력한 값이 저장된 주소(16진수 표기) : %x\n", poval);
    printf("포인터 변수 *poval에 저장된 값(10진수 표기) : %d\n", val);
    printf("포인터 변수 *poval에 저장된 값(10진수 표기) : %d\n", poval);

    return 0;
}

 

 

 

2. 정수 3개 입력하고 최댓값 구하기

#include <stdio.h>

int main(void)
{
    int num1, num2, num3, max;

    printf("키보드로 정수값 3개를 입력하시오(구분자 콤마 사용). : ");
    scanf_s("%d, %d, %d", &num1, &num2, &num3);

    printf("키보드 입력한 정수값 3개는 %d, %d, %d\n", num1, num2, num3);

    // max = (num1 > num2) ? ((num2 > num3) ? num2 : num3) : ((num1 > num3) ? num1 : num3);

    max = (num1 > num2) ? num1 : num2;
    max = (max > num3) ? max : num3;

    printf("그 중에서 최댓값은 %d\n", max);

    return 0;
}

 

 

 

3. 포인터 - 변수의 주소값 출력하기

#include <stdio.h>

int main(void)
{
    int num1, num2;
    int* addr1, * addr2;

    addr1 = &num1;
    addr2 = &num2;

    printf("정수 2개를 입력하시오(구분자는 콤마 사용). : ");
    scanf_s("%d, %d", &num1, &num2);

    printf("입력한 정수 2개는 %d, %d\n", num1, num2);
    
    printf("%d의 주소값 : %d\n", num1, addr1);     // num1의 주소 == addr1의 값
    printf("%d의 주소값 : %d\n", num1, &num1);     // num1의 주소 == addr1 == &num1도 같은 값

    printf("%d의 주소값 : %d\n", num2, addr2);

    // 1) 정수값 출력 : num1, num2
    // 2) 변수의 주소 : &num1, &num2
    // 3) 변수의 주소 : addr1, addr2
    // 4) 포인터의 정수값 : *addr1, *addr2

    return 0;
}

 

 

 

4. 입력한 문자에 해당하는 유형별(알파벳 대문자, 소문자, 숫자, 기타 문자)로 출력하기

#include <stdio.h>

int main(void)
{
    char mj;

    printf("문자를 입력하시오 : ");
    scanf_s("%c", &mj, sizeof(mj));

    if ('A' <= mj && mj <= 'Z')
        printf("입력한 %c는(은) \"알파벳 대문자\"입니다.\n", mj);
    else if ('a' <= mj && mj <= 'z')
        printf("입력한 %c는(은) \"알파벳 소문자\"입니다.\n", mj);
    else if (mj >= '0')
        printf("입력한 %c는(은) \"숫자\"입니다.\n", mj);
    else
        printf("입력한 %c는(은) \"기타 문자\"입니다.\n", mj);

    return 0;
}

 

 

 

5. 점수 입력하고 해당 학점 출력하기

#include <stdio.h>

int main(void)
{
    int a, b;
    char* addr;

    printf("점수 입력 : ");
    scanf_s("%d", &a);

    if (0 > a || a > 100) {
        printf("입력한 점수 %d는(은) 허용 구간이 아닙니다.\n", a);
        printf("프로그램을 다시 실행하세요.\n");
    }
    else {
        b = a / 5;

        switch (b)
        {
        case 20:
        case 19:
            addr = "A+";
            break;
        case 18:
            addr = "A0";
            break;
        case 17:
            addr = "B+";
            break;
        case 16:
            addr = "B0";
            break;
        case 15:
            addr = "C+";
            break;
        case 14:
            addr = "C0";
            break;
        case 13:
            addr = "D+";
            break;
        case 12:
            addr = "D0";
            break;

        default:
            addr = "F";
            break;
        }
    }
    printf("입력한 점수 : %d\n", a);
    printf("점수 등급 : %s 학점\n", addr);

    return 0;
}

 

 

 

6. 알파벳 입력하고 해당하는 계절 출력하기 (switch문, if~else문)

// switch 문
#include <stdio.h>
int main(void)
{
    char season;

    printf("계절을 선택할 알파벳 입력 : ");
    scanf_s("%c", &season, sizeof(season));

    switch (season) {
    case 'A':
    case 'a':
        printf("계절 : 봄\n");
        printf("수행 : 꽃을 가꾼다\n");
        break;

    case 'S':
    case 's':
        printf("계절 : 여름\n");
        printf("수행 : 수영을 한다\n");
        break;

    case 'D':
    case 'd':
        printf("계절 : 가을\n");
        printf("수행 : 추수를 한다\n");
        break;

    case 'F':
    case 'f':
        printf("계절 : 겨울\n");
        printf("수행 : 스키를 탄다\n");
        break;

    default:
        printf("허용되지 않는 알파벳입니다.\n");
        printf("대소문자 구별 없이 A, S, D, F만 허용됩니다.\n");
        printf("프로그램을 다시 시작하세요.\n");
    }
    return 0;
}



// if~else문
#include <stdio.h>

int main(void)
{
    char season;

    printf("계절을 선택할 알파벳 입력 : ");
    scanf_s("%c", &season, sizeof(season));

    if (season == 'A' || season == 'a') {
        printf("계절 : 봄\n");
        printf("수행 : 꽃을 가꾼다\n");
    }
    else if (season == 'S' || season == 's') {
        printf("계절 : 여름\n");
        printf("수행 : 수영을 한다");
    }
    else if (season == 'D' || season == 'd') {
        printf("계절 : 가을\n");
        printf("수행 : 추수를 한다\n");
    }
    else if (season == 'F' || season == 'f') {
        printf("계절 : 겨울\n");
        printf("수행 : 스키를 탄다\n");
    }
    else {
        printf("허용되지 않는 알파벳입니다.\n");
        printf("대소문자 구별 없이 A, S, D, F만 허용됩니다.\n");
        printf("프로그램을 다시 시작하세요.\n");
    }
    return 0;
}

 

 

 

7. 1부터 입력한 정수값까지 홀수의 누적 합계 구하기 (go~to문)

#include <stdio.h>

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

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

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

 

 

 

8. 1부터 입력한 정수값까지 짝수의 누적 합계 구하기

#include <stdio.h>

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

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

    if (num > 0) {
        for (cnt = 0; cnt <= num; cnt++)
            if ((cnt % 2) != 0)
                continue;
            else {
                hap += cnt;
            }
        printf("1부터 %d까지 짝수의 누적 합계는 %d\n", num, hap);

    }
    else {
        printf("음의 정수값 %d는(은) 허용하지 않습니다.\n", num);
        printf("양의 정수값을 다시 입력하세요.\n");
        goto reset;
    }
    return 0;
}