티스토리 뷰

컴퓨터프로그래밍 11주 Quiz

 

(quiz-1) 다음과 같이 배열 arr[10]에 데이터가 있다. 프로그램을 완성하시오.

(함수 추가하지 말 것)

 

 

        (1) 배열 값들을 출력

        (2) 평균값을 소숫점 2자리까지 출력

        (3) 최대값을 찾아서 출력

        (4) 최소값을 찾아서 출력

 

(1) 실행화면 Capture

 

(2) 프로그램 소스코드

HWP에서 Text 붙여넣기 할 때 색상이 잘못되는 경우 해결 방법

(Ctrl-A 전체선택 > 서식 > 글자모양 > 테두리/배경 > 면색 --> 흰색)

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void main() // 함수 추가하지 말 것
{
	int i, n = 10, max, min, sum;
	double avg;
	int arr[10] = { 10, 30, 5, 17, 44, 13, 120, 88, 9, 101 };

	// 평균 avg 계산
	sum = 0;

	// 최대값 max 찾는다
	max = arr[0];
	
	// 최소값 min 찾는다
	min = arr[0];

	printf("(1) ");
	// 배열값 모두 출력
	for (int i = 0; i < n; i++) {
		printf("%d ", arr[i]);

		if (max < arr[i]) max = arr[i];
		if (min > arr[i]) min = arr[i];
		sum += arr[i];
	}
	printf("\n");

	avg = (double)sum / (double)n;
	printf("(2) 평균 = %.2lf\n", avg);

	printf("(3) 최대 = %d\n", max);
	printf("(4) 최소 = %d\n", min);
}

 

(quiz-2) input_array(), print_array(), compute_sum(), compute_avg(), find_max(), find_min() 함수는 각각 배열을 입력, 배열을 출력, 배열의 합을 return, 평균값을 계산해서 return, 배열의 최대값과 최소값을 구해서 return 하는 함수들이다. 함수들을 완성하시오. (main은 수정하지 말 것)

 

(1) 실행화면 Capture

(2) 프로그램 소스코드

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
void print_array(int arr[], int n);

void input_array(int arr[], int n) // n개의 정수값을 배열에 입력
{
    for (int i = 0; i < n; i++) {
        printf("%d번 입력 : ", i + 1);
        scanf("%d", &arr[i]);
    }
    
    print_array(arr ,n);
}

void print_array(int arr[], int n) // 배열값을 출력
{
    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);
    
    printf("\n");
}

int compute_sum(int arr[], int n) { // 배열의 합을 return

    int i, sum = 0;
    for (i = 0; i < n; i++)
        sum += arr[i];

    return sum;

}

double compute_avg(int arr[], int n) // 배열의 평균을 return
{
    int sum = 0;
    for (int i = 0; i < n; i++)
        sum += arr[i];
    
    return (double)sum / n;
}

int find_max(int arr[], int n) // 배열에서 최대값을 찾아서 return
{
    int i, max;
    max = arr[0];
    for (i = 0; i < n; i++)
        if (max < arr[i]) max = arr[i];

    return max;
}

int find_min(int arr[], int n) // 배열에서 최소값을 찾아서 return
{
    int i, min;
    min = arr[0];
    for (i = 0; i < n; i++)
        if (min > arr[i]) min = arr[i];

    return min;
}

void main() // main은 수정하지 말 것
{

    int arr[10];



    input_array(arr, 10);

    printf("합 = %d\n", compute_sum(arr, 10));

    printf("평균 = %lf\n", compute_avg(arr, 10));

    printf("최대 = %d\n", find_max(arr, 10));

    printf("최소 = %d\n", find_min(arr, 10));

}

 

(quiz-3) rand() 함수를 이용하여 주사위를 시뮬레이션한다. 주사위 2개를 10,000번 굴렸을 때 화면과 같이 2~12가 각각 몇 번 나오는지, 몇 %를 차지하는지 출력하는 프로그램을 완성하시오. 편의상 srand()는 생략한다.

Hint : 배열 count[13] 에 주사위 2~12이 나온 횟수를 보관한다. 즉, count[2]에는 2가 나온 횟수, count[12]에는 12가 나온 횟수를 구한다. dice1 = rand()%6+1, dice2=rand()%6+1 로 으로 각각 1~6를 난수로 생성하고 count[dice1+dice2]++ 하면 주사위 나온 횟수를 누적할 수 있다.

 

 

(1) 실행화면 Capture

 

(2) 프로그램 소스코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
// 난수와 배열을 이용 주사위 2개를 10,000번 굴렸을 때 2~12가 나온 횟수와 % 구하기.
void main()
{
    int i, dice1, dice2, n = 10000, count[13];

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

    for (i = 0; i < 13; i++)
    {
        count[i] = 0;
    }

    // 주사위 2개를 n번 굴리고 count[] 값에 누적시킨다.
    for (i = 0; i < n; i++)
    {
        dice1 = 1 + rand() % 6;
        dice2 = 1 + rand() % 6;
        count[dice1 + dice2]++;
    }

    // 주사위 나온 횟수와 %를 출력한다.
    // 화면과 같이 정렬을 맞출것
    for (i = 2; i < 13; i++)
    {
        printf("%2d: %4d (%4.2lf)\n", i, count[i], (double)count[i] / n * 100);
    }
}

 

(quiz-4) 학생 5 의 국어, 영어, 수학 점수를 보관하는 2차원 배열 data[][]와 총점을 보관하는 1차원 배열 sum[]을 선언하고 5명의 데이터를 입력받고 학생 각각의 총점과 평균을 출력하는 프로그램을 완성하시오.

 

 

(1) 실행화면 Capture

 

(2) 프로그램 소스코드

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

void main() // 함수나 변수 추가해도 됨

{

    int i, j;

    int data[5][3]; // 5명 3과목 저장하는 2차원 배열 선언

    int sum[5]; // 5명의 총점을 저장하는 1차원 배열 선언

    // 5명의 국,영,수 성적 입력,
    for (int i = 0; i < 5; i++)
    {
        printf("%d번 성적 입력 (국어 영어 수학) : ", i + 1);
        scanf("%d %d %d", &data[i][0], &data[i][1], &data[i][2]);
    }

    // 총점 sum[]을 계산
    for (int i = 0; i < 5; i++)
    {
        sum[i] = data[i][0] + data[i][1] + data[i][2];
    }

    // 5명의 총점, 평균 출력 (총점은 정수 3자리, 평균은 소숫점 2자리까지)
    for (int i = 0; i < 5; i++)
    {
        printf("%d번 총점=%d 평균=%4.2lf\n", i + 1, sum[i], (double)sum[i] / 3.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
글 보관함