티스토리 뷰

컴퓨터프로그래밍 9주 Quiz

(문제 1) 두 정수 x, y를 입력받고 두 수중에 큰 수를 작은 수로 나눈 몫과 나머지를 출력하는 프로그램을 완성하시오.

(1) 화면 Capture

(2) 프로그램 소스코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
    int x, y;
    printf("1번 학번 이름\n");
    while (1) { // 그대로 두면 계속 테스트 할 수 있음 그대로. 이용할 것
        scanf("%d %d", &x, &y);
        // 큰 수를 작은 수로 나눈 몫과 나머지 출력
        if(x>y)
            printf("몫:%d 나머지:%d\n", x / y, x % y);
        else
            printf("몫:%d 나머지:%d\n", y / x, y % x);
    }
    return 0;
}

(문제 2) 초를 입력하면 일, 시간, 분, 초로 계산해서 출력하는 프로그램을 작성하시오.
(단 각각의 일, 시, 분, 초가 0인 경우는 출력하지 않는다. 실행 화면 참고)

(1) 화면 Capture

(2) 프로그램 소스코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
    int sec, dd, hh, mm, ss; // 필요하면 변수 추가
    while (1) { // 그대로 두면 계속 테스트할 수 있음. 종료는 CTRL-C
        // sec 입력
        scanf("%d", &sec);
        // dd일, hh시간, mm분, ss초로 계산
        ss = sec % 60;
        sec /= 60;

        mm = sec % 60;
        sec /= 60;

        hh = sec % 12;
        sec /= 12;

        dd = sec/2;

       // 실행화면처럼 각각의 값이 0이 아닌 경우만 일, 시간, 분, 초를 출력한다.
        if(dd)
            printf("%d일 ", dd);
        if (hh)
            printf("%d시간 ", hh);
        if(mm)
            printf("%d분 ", mm);
        if(ss)
            printf("%d초 ", ss);
        printf("\n");
    }
    return 0;
}

(문제 3) 사용자가 입력한 정수 x의 모든 약수들과 약수들의 합을 출력하는 프로그램을 작성하시오.

(1) 화면 Capture

(2) 프로그램 소스코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
    int i, x, sum;
    printf("분반 학번 이름\n");
    // x 입력
    scanf("%d", &x);

    sum = 0;
    // 반복문 사용 x의 약수를 출력하고 sum을 계산
    for (i = 1; i <= x; i++)
    {
        if (x % i) continue;
        sum += i;
        printf("%d ", i);
    }

    printf("\nsum = %d\n", sum);
    // sum 을 출력
    return 0;
}

(문제 4) 화면과 같이 구구단을 가로로 출력하고 각 줄의 끝에 합을 출력하는 프로그램을 완성하시오. (주의 : 구구단이 가로로 나옴. 정렬이 맞아야 함)
(곱하기 결과는 “%2d ” 로 출력하고 가로줄 합 출력은 “%3d” 로 정렬을 맞출 것)

(1) 화면 Capture

(2) 프로그램 소스코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
    int i, j, sum;
    printf("4번 학번 이름\n");
    // for 문 2개를 사용하여 구구단과 각 줄의 끝에 합을 출력

    for (int i = 2; i < 10; i++)
    {
        sum = 0;
        for (int j = 1; j < 10; j++)
        {
            printf("%d*%d=%2d ", i, j, i * j);
            sum += i * j;
        }
        printf("+= %3d\n", sum);
    }
    return 0;
}

(문제 5) 1 ~ n 까지 합, 홀수합, 짝수합을 구하는 함수 sum(), oddsum(), evensum()을 완성하시오. 단, sum() 함수는 for()문을 사용, oddsum()은 while()문 사용, evensum()은 do~while() 문을 사용하여야 한다.

(1) 화면 Capture

(2) 프로그램 소스코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int sum(int n) // 합, for 사용
{
    int sum = 0;
    for (int i = 1; i <= n; i++)
    {
        sum += i;
    }
    return sum;
}
int oddsum(int n) // 홀수의 합, while 사용
{
    int sum = 0;
    while (n > 0) {
        if (n % 2) sum += n;
        n--;
    }
    return sum;
}
int evensum(int n) { // 짝수의 합, do ~ while 사용
    int sum = 0;
    do {
        if (!(n % 2)) sum += n;
        n--;
    } while (n > 0);
    return sum;
}

int main()
{
    printf("5번 학번 이름\n");
    printf("sum(100)=%d oddsum(100)=%d evensum(100)=%d\n", sum(100), oddsum(100), evensum(100));
    return 0;
}

(문제 6) 주어진 프로그램은 실행화면(1)의 결과이다. 이 프로그램을 이용하여 (2), (3), (4) 화면과 같이 나오도록 완성하시오. (3), (4) 은 알파벳 출력 전에 빈칸이 나와야 함.

(1) 화면 Capture

(2) 프로그램 소스코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void main(void)
{
    char c1, c2;
    printf("6번 학번 이름\n");
    // (1)번
    for (c1 = 'A'; c1 <= 'Z'; c1++) {
        for (c2 = 'A'; c2 <= c1; c2++) {
            printf("%c", c2);
        }
        printf("\n");
    }
    printf("\n");
    // (2)번 완성
    for (c1 = 'Z'; c1 >= 'A'; c1--) {
        for (c2 = c1; c2 <= 'Z'; c2++) {
            printf("%c", c2);
        }
        printf("\n");
    }
    printf("\n");

    // (3)번 완성 – 알파벳 출력 전에 빈칸을 먼저 출력해야 함
    for (c1 = 'A'; c1 <= 'Z'; c1++) {
        for (int i = 'Z'; i > c1; i--)
        {
            printf(" ");
        }
        for (c2 = c1; c2 >= 'A'; c2--) {
            printf("%c", c2);
        }
        printf("\n");
    }
    printf("\n");

    // (4)번 완성 – 알파벳 출력 전에 빈칸을 먼저 출력해야 함
    for (c1 = 'Z'; c1 >= 'A'; c1--) {
        for (int i = 'Z'; i > c1; i--)
        {
            printf(" ");
        }
        for (c2 = c1; c2 >= 'A'; c2--) {
            printf("%c", c2);
        }
        printf("\n");
    }
    printf("\n");
}

(문제 7) 소수(prime number)는 1과 자기 자신 외에 약수가 없는 수이다.
isNotPrime(int n) 함수는 n이 소수이면 0을 소수가 아니면 1을 return한다. isNotPrime(int n) 함수를 완성하고, 이를 이용해서 100 ~ 200 사이의 소수가 아닌 수들을 출력하고 그 합을 출력하는 프로그램을 완성하시오.
(단, 함수는 추가하지 말고 isNotPrime() 함수만 완성해서 사용할 것. main()이나 isNotPrime() 함수 안에서 변수 추가는 가능함.)

(1) 화면 Capture

(2) 프로그램 소스코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int isNotPrime(int n) { // n이 소수이면 0, 소수가 아니면 1을 return, 완성하시오
    for (int i = 2; i <= n/2; i++)
    {
        if (!(n % i)) return 1;
    }
    return 0;
}
int main()
{
    int i, sum;
    printf("7번 학번 이름\n");
    sum = 0;
    // isNotPrime()함수 이용 100 ~ 200 사이의 소수가 아닌 수를 출력하고 
    for (int i = 100; i <= 200; i++)
    {
        if (isNotPrime(i)) {
            printf("%d ", i);
            sum += i;
        }
    }
    // 합(sum)을 구한다.
    printf("\nsum = %d\n", sum);
    return 0;
}

(문제8) rand()함수는 0~32767 사이의 난수값을 return한다. rand() 함수를 이용하여 10,000 ~ 20,000 사이의 난수 r을 100번 구하고 r이 소수(Prime Number, 1과 자기 자신 외에 약수가 없는 수)이면 그 수를 출력하고 합을 구해서 출력하는 프로그램을 완성하시오.
(srand()는 생략한다. 변수나 함수 추가해도 됨.)

(1) 화면 Capture

(2) 프로그램 소스코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// 필요하면 함수나 변수 추가해도 됨
int isPrime(int n) { // n이 소수이면 1, 소수가 아니면 0인 함수
    for (int i = 2; i <= n / 2; i++)
    {
        if (!(n % i)) return 0;
    }
    return 1;
}

int main()
{
    int T, r, sum;
    printf("8번 학번 이름\n");

    // srand() 는 생략
    srand(time(NULL));

    sum = 0;
    // 100번 rand() 이용 10,000~20,000 수를 구하고
    for (int i = 0; i < 100; i++)
    {
        r = 10000 + rand() % 10001;
        // 그 수가 소수이면 출력하고 합을 출력한다.
        if (isPrime(r)) {
            printf("%d ", r);
            sum += r;
        }
    }
    printf("+= %d\n", sum);
    return 0;
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함