問題
三人分の四科目の得点の平均を求め、これをもとに四段階の評価を決定して学生番号と共に表示するプログラム。
| 番号 |
国語 |
算数 |
理科 |
社会 |
| 1001 |
95 |
83 |
45 |
56 |
| 1002 |
25 |
36 |
66 |
48 |
| 1003 |
89 |
80 |
79 |
90 |
評価は A>80>B>70>C>60>D とする。
解答例
#include <stdio.h>
#define NINZU 3
#define KAMOKU 4
double get_ave(int*);
void get_hyouka(double,char*);
void print_data(int,int*,double,char);
main()
{
int bango[NINZU]={1001,1002,1003};
int ten[KAMOKU]={95,83,45,56},{25,36,66,48},{89,80,79,90};
double ave[NINZU]={0.0,0.0,0.0};
char hyouka[NINZU];
int i;
printf(" No. kokugo sansu rika syakai heikin hyouka\n");
for(i=0;i<NINZU;i++){
ave[i]=get_ave(ten[i]);
get_hyouka(ave[i],&hyouka[i]);
print_data(bango[i],ten[i],ave[i],hyouka[i]);
}
}
double get_ave(int* p_ten) &color(red){//渡されたten[i]をint* p_ten として受けている。}
{
int j;
double ave=0.0;
for(j=0;j<KAMOKU;j++) ave=ave+*p_ten;
ave = ave / KAMOKI;
return(ave);
}
void get_hyouka(double ave,char* p_hyouka)
{
if (ave<60.0) *p_hyouka='D';
else if (ave<70.0) *p_hyouka='C';
else if (ave<80.0) *p_hyouka='B';
else *p_hyouka='A';
}
void print_data(int bango,int* p_ten,double ave,char hyouka)
{
int i;
printf("%4d",bango);
for (i=0;i<KAMOKU;i++) printf(" %4d",*p_ten++); &color(red){//tenを表示したあと、次のtenへ移動。}
printf(" %8.2f %1c\n",ave,hyouka);
}
最終更新:2010年12月03日 23:30