반응형
9. 7명의 심판에게 점수를 입력받고, 최고점과 최저점을 뺀 점수의 평균을 구하는 프로그램을 작성하라.
#include <stdio.h> #include <stdlib.h> int sum(int sc[], int N); int max(int sc[], int N); int min(int sc[], int N); int main() { int score[7]; int N = sizeof(score) / sizeof(int); for (int i = 0; i < N; i++) { printf("%d번째 심판의 점수를 입력하세요 : ", i + 1); scanf_s("%d", &score[i]); } printf("최종 점수는 최고점 %d점과 최하점 %d점을 뺀 총점 %d점의 평균인 %.2lf점 입니다. \n", max(score, N), min(score, N), (sum(score, N) - max(score, N) - min(score, N)), (double)(sum(score, N) - max(score, N) - min(score, N)) / (double)(N - 2) ); } int sum(int sc[], int N) { int sum = 0; for (int i = 0; i < N; i++) { sum += sc[i]; } return sum; } int max(int sc[], int N) { int max = sc[0]; for (int i = 1; i < N; i++) { if (max < sc[i]) { max = sc[i]; } } return max; } int min(int sc[], int N) { int min = sc[0]; for (int i = 1; i < N; i++) { if (min > sc[i]) { min = sc[i]; } } return min; }
10. 2차 방정식 ax^2+bx+c=0에서 a,b,c의 값을 입력받고, 판별식D를 확인하는 함수를 작성하고, 허근이 아닐 때 근을 구하는 함수를 작성하라.
#include <stdio.h> #include <stdlib.h> #include <math.h> double discriminant(double a, double b, double c); double quadratic(double a, double b, double c, double D); int main() { double a, b, c; printf("2차방정식 ax^2+bx+c의 근을 확인합니다. \n"); printf("a값을 입력하세요 : "); scanf_s("%lf", &a); printf("b값을 입력하세요 : "); scanf_s("%lf", &b); printf("c값을 입력하세요 : "); scanf_s("%lf", &c); quadratic(a, b, c, discriminant(a, b, c)); } double discriminant(double a, double b, double c) { return pow(b, 2) - (4 * a*c); } double quadratic(double a, double b, double c, double D) { if (a == 0) { printf("2차 방정식이 아닙니다. \n"); printf("1차 방정식의 근은 %lf입니다. \n", (-(double)c/(double)b)); return (-(double)c / (double)b); } if (D < 0) { printf("2차방정식의 두근이 허근입니다. \n"); return 0; } if(D > 0) { printf("2차 방정식의 두근은 %.2lf,%.2lf입니다. \n", (-b + (pow(D, 1.0 / 2.0))) / 2 * a , (-b - (pow(D, 1.0 / 2.0))) / 2 * a); printf("리턴값은 첫번째 값입니다. \n"); } if (D == 0) { printf("이 2차방정식의 근은 %.2lf입니다. \n", (-b + (pow(D, 1.0 / 2.0))) / 2 * a); printf("이 2차방정식은 중근 하나만 갖습니다. \n"); } return (-b + (pow(D, 1.0 / 2.0))) / 2 * a; }
11. 산술, 기하, 조화 평균을 구하는 함수를 각각 작성하라.
#include <stdio.h> #include <math.h> double arithmatic(int iarr[],int Num); double geometric(int iarr[],int Num); double harmonic(int iarr[], int Num); int main() { const int Num = 2; int iarr[Num]; for (int i = 0; i < Num; i++) { printf("%d번째 값을 입력하세요 : ", i + 1); scanf_s("%d", &iarr[i]); } int line = 0; for (int i = 0; i < Num; i++) { printf("%d ", iarr[i]); line++; if (line == 10) { printf("\n"); line = 0; } } printf("의 산술평균 = %.2lf, 기하평균 = %.2lf, 조화평균 = %.2lf 입니다.", arithmatic(iarr, Num), geometric(iarr, Num), harmonic(iarr, Num)); } double arithmatic(int iarr[], int Num) { double sum = 0; for (int i = 0; i < Num; i++) { sum += iarr[i]; } return (sum / (double)Num); } double geometric(int iarr[], int Num) { double multiple = 1; for (int i = 0; i < Num; i++) { multiple *= iarr[i]; } return pow(multiple, 1.0 / Num); } double harmonic(int iarr[], int Num) { for (int i = 0; i < Num; i++) { if (iarr[i] < 0) { printf("모든 수가 양수일 때만 조화평균을 구할 수 있습니다. \n"); return 0; } } double sum = 0; for (int i = 0; i < Num; i++) { sum += (1.0 / iarr[i]); } return (double)Num / sum; }
12. 1열에 점수가 들어있는 2차원 배열의 2열에 각 점수에 대한 석차를 구해서 저장하는 함수를 작성하라.
#include <stdio.h> const int N = 5; void grade(int score[N][2], int Num); int main() { int score[N][2]; printf("점수를 입력받습니다. \n"); for (int i = 0; i < N; i++) { printf("%d번째 점수를 입력해주세요 : ",i+1); scanf_s("%d", &score[i][0]); } grade(score, N); for (int i = 0; i < N; i++) { printf("%d점 %d등 \n", score[i][0], score[i][1]); } } void grade(int score[N][2], int Num) { int top; for (int i = 0; i < Num; i++) { score[i][1] = 1; } for (int k = 0; k < Num; k++) { for (int i = 0; i < Num; i++) { if (score[i][1] > i) { top = score[i][0]; break; } } for (int i = 0; i < Num; i++) { if (score[i][1] > k) { if (score[i][0] > top) { top = score[i][0]; } } } for (int i = 0; i < Num; i++) { if (score[i][0] < top) { score[i][1]++; } } } }
//머리가 안 돌아... 왜 되는건지 잘 모르겠어... 순서도 그려봐야지...
반응형