3教科の平均点が最大と最小の学生番号と各平均点が最大と最小の教科を表示するを表示する。
Posted: 2011年6月16日(木) 11:57
#include <stdio.h>
#define STD_NO 5
#define SUB_NO 3
int sum_sub(int v[][SUB_NO], int sub)
{
int i;
int sum = 0;
for(i = 0;i < STD_NO;i++)
sum += v[i][sub];
return(sum);
}
double ave_sub(int v[][SUB_NO], int sub)
{
return((double)sum_sub(v, sub) / STD_NO);
}
int top_sub(int v[][SUB_NO], int sw)
{
int i;
int tmp = ave_sub(v, 0);
for(i =1;i < STD_NO;i++){
if(sw){
if(ave_sub(v, i) > tmp)
tmp = ave_sub(v, i);
}
else {
if(ave_sub(v, i) < tmp)
tmp = ave_sub(v, i);
}
}
return(tmp);
}
int sum_std(int v[][SUB_NO], int no)
{
int i;
int sum = 0;
for(i = 0;i < SUB_NO;i++)
sum += v[no][i];
return(sum);
}
int top_std(int v[][SUB_NO], int sw)
{
int i;
int tmp = sum_std(v, 0);
int bangou = 1;
for(i = 1;i < SUB_NO;i++){
if(sw){
if(sum_std(v, i) > tmp){
tmp = sum_std(v, i);
bangou = i;
}
}
else {
if(sum_std(v, i) < tmp){
tmp = sum_std(v, i);
bangou = i;
}
}
}
return(bangou);
}
int main (void)
{
int i;
int tensu[STD_NO][SUB_NO];
for(i = 0;i < STD_NO;i++){
printf("[%2d番]", i+1);
printf("国語:"); scanf("%d", &tensu[i][0]);
printf(" 数学:"); scanf("%d", &tensu[i][1]);
printf(" 英語:"); scanf("%d", &tensu[i][2]);
}
putchar('\n');
printf("3教科の平均点が最大の学生番号は%d番です。\n", top_std(tensu,1));
printf("3教科の平均点が最小の学生番号は%d番です。\n", top_std(tensu,0));
printf("の平均点は%.fで最高点です。\n", top_sub(tensu,1));
printf("の平均点は%.fで最低点です。", top_sub(tensu,0));
return(0);
}