본문으로 바로가기
728x90
반응형

300p


Programming


1. days[ ] 를 아래와 같이 초기화하고 배열 원소의 값을 다음과 같이 출력하는 프로그램을 작성하여라.

31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31

 1월은 31일까지 있습니다.

 2월은 29일까지 있습니다.

 ...

 12월은 31일까지 있습니다.


 #define _CRT_SECURE_NO_WARNINGS

 #include <stdio.h>

 #include <stdlib.h>

 int main(void)

 {

int days[] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

for (int i = 0; i < 12; i++)

{

printf("%d월은 %d일까지 있습니다.\n", i + 1, days[i]);

}

system("pause");

 }



2. 학생들의 시험 점수를 통계 처리하는 프로그램을 작성하여보자. 한 학급은 최대 10명까지의 학생들로 이루어진다. 각 학생들은 3번의 시험을 치른다. 사용자로부터 값을 입력받을 수 있도록 한다.

 학번

 시험 #1

 시험 #2

 시험 #3

 1

 30

 10

 11

 2

 40

 90

 32

 3

 70

 65

 56

 4

 70

 43

 32

 5

 80

 10

 89

(a) 각 시험마다 최고점수, 최저점수, 평균점수를 출력하여라.

(b) 각 학생마다 최고점수, 최저점수, 평균점수를 출력하여라.

(c) 각 시험마다 산술 평균값, 최빈값을 계산하여서 출력하여라.

(d) 각 학생별로 총점을 구하고, 이 총점을 기준으로 정렬하여라. 본문에 등장하는 선택 정렬을 사용한다.


 #define _CRT_SECURE_NO_WARNINGS

 #include <stdio.h>

 #include <stdlib.h>


 int main(void)

 {

int stats[10][3] = {};

int student = 0;

int i, j,k, score;

int high_score[3] = { 0 },

low_score[3] = { 100, 100, 100 },

aver_score[3] = { 0, };

int high_student[10] = { 0, },

low_student[10] = { 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, },

aver_student[10] = { 0, },

total_student[10] = { 0, };

int mode[3] = { 0 }, temp[3] = { 0, }, count[3],least;

while (1)

{

printf("계산하실 학생 수를 입력해주세요(최대10명): ");

scanf("%d", &student);

if (student > 0 && student <= 10)

break;

else printf("범위를 벗어났습니다\n");

}

for (j = 0; j < student; j++)

{

for (i = 0; i < 3; i++)

{

printf("%d번째 학생의 %d번째 시험점수: ", j + 1, i + 1);

scanf("%d", &score);

stats[j][i] = score;

}

printf("\n");

}

for (j = 0; j < student; j++)

{

for (i = 0; i < 3; i++)

{

//(a)

if (high_score[i] < stats[j][i])

high_score[i] = stats[j][i]; //시험 최고점수 계산

if (low_score[i] > stats[j][i])

low_score[i] = stats[j][i]; //시험 최저점수 계산

aver_score[i] += stats[j][i]; //시험 평균점수 계산


//(b)

if (high_student[j] < stats[j][i])

high_student[j] = stats[j][i]; //학생별 최고점수 계산

if (low_student[j] > stats[j][i])

low_student[j] = stats[j][i]; //학생별 최저점수 계산

aver_student[j] += stats[j][i]; //학생별 평균점수 계산

total_student[j] += stats[j][i]; //(d)총점 계산

}

}


//(c) 최빈값 계산

for (i = 0; i < 3; i++)

{

for (j = 0; j < student; j++)

{

count[i] = { 0 };

for (k=0; k < student; k++)

{

if (stats[j][i] == stats[k][i])

count[i]++;

}

if (temp[i] <= count[i])

{

temp[i] = count[i];

mode[i] = stats[j][i];

}

}

}


for (i = 0; i < 3; i++)

{

printf("%d번째 시험 최고점수 : %d\n", i + 1,high_score[i]);

printf("%d번째 시험 최저점수 : %d\n", i + 1, low_score[i]);

printf("%d번째 시험 평균점수 : %d\n\n", i + 1, aver_score[i] / student);

}

for (j = 0; j < student; j++)

{

printf("%d번째 학생 최고점수 : %d\n", j + 1, high_student[j]);

printf("%d번째 학생 최저점수 : %d\n", j + 1, low_student[j]);

printf("%d번째 학생 평균점수 : %d\n\n", j + 1, aver_student[j]/3);

}

for (i = 0; i < 3; i++)

{

printf("%d번째 시험 산술평균값 : %d\n", i + 1, aver_score[i] / student);

printf("%d번째 시험 최빈값 : %d / %d회\n\n", i + 1, mode[i],temp[i]);

}

       

      // (d) 총합의 점수 낮은 순서대로 정렬

for (j = 0; j < student -1 ; j++)

{

least = j;

for (k = j + 1; k < student; k++)

if (total_student[k] < total_student[least])

least = k;

temp[0] = total_student[j];

total_student[j] = total_student[least];

total_student[least] = temp[0];

}

for (j = 0; j < student; j++)

printf("%d ", total_student[j]);

printf("\n");

system("pause");

 }



3. 사용자로부터 20개 이하의 실수 자료를 읽어서 평균과 표준 편차를 계산하는 프로그램을 작성하여보자. 사용자로부터 받은 자료들은 배열에 저장한다. 평균은 n개의 실수가 주어져 있을때, 다음과 같이 계산된다.



표준편차는 분산의 양의 제곱근으로 분산은 다음과 같이 계산된다. 표준편차는 자료가 평균값 주위에 어느 정도의 넓이로 분포하고 있는가를 나타내는 하나의 척도이다.



 #include "stdafx.h"

 #include <stdlib.h>

 #include <math.h>


 int main()

 {

  double num[20];

double sum=0,avg=0,dev=0;

int count = 0;

printf("평균과 표준편차를 계산할 20개 이하의 실수를 입력해주세요.\n");

while (scanf_s("\n%lf", &num[count]) != NULL)

{

sum += num[count];


count++;

if (count == 20)

break;

}

avg = sum / count;

printf("평균 = %lf\n", avg);


sum = 0;

for (int i = 0; i < count ; i++)

sum += (num[i] - avg)*(num[i] - avg);

dev = sum / count;


printf("표준편차 = %lf", dev);


system("pause");

    return 0;

 }



728x90
반응형