使用模块化(用户自定义函数)改写程序 4. 课本93页:自定义函数,求每个同学平均分,每门课总分及每门课程最高分,最高分是谁; #include<stdio.h> int main() { double s[8][6]={{78,82,93,74,65},{91,82,72,76,67},{100,90,85,72,98},{67,89,90,65,78},{77,88,99,45,89}}; int i,j; printf("学号\t语文\t数学\t物理\t化学\t音乐\t平均分\n"); //求平均分 for(i=0;i<5;i++) { for(j=0;j<5;j++){ s[i][5]+=s[i][j]; } s[i][5]=s[i][5]/5; } //求每门课程总分 for(i=0;i<5;i++) { for(j=0;j<5;j++){ s[5][j]+=s[i][j]; } } //求每门课最高分,以及改分数是哪个学生取得的成绩,并打印该学生学号 for(i=0;i<5;i++) { for(j=0;j<5;j++){ if(s[6][j]<s[i][j]){ s[6][j]=s[i][j]; s[7][j]=i+1;}}} //输出 for(i=0;i<8;i++) { if(i<5) printf("NO:%d\t",i+1); else if(i==5) { printf("总分:\t"); }else if(i==6){ printf("最高分:\t"); }else if(i==7){ printf("学号:\t"); } for(j=0;j<6;j++){ if(!((j==5)&&(i==5||i==6||i==7))){ printf("%.2lf\t",s[i][j]); } } printf("\n"); } }
时间: 2024-04-28 07:19:35 浏览: 76
SQL Function 自定义函数详解
5星 · 资源好评率100%
以下是使用模块化改写后的程序:
```c
#include <stdio.h>
// 计算每个同学的平均分
void calc_avg(double s[][6], int n)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < 5; j++)
{
s[i][5] += s[i][j];
}
s[i][5] /= 5;
}
}
// 计算每门课程的总分
void calc_total(double s[][6])
{
for (int j = 0; j < 5; j++)
{
for (int i = 0; i < 5; i++)
{
s[5][j] += s[i][j];
}
}
}
// 计算每门课程的最高分及学生学号
void calc_max(double s[][6])
{
for (int j = 0; j < 5; j++)
{
double max_score = 0;
int max_student = -1;
for (int i = 0; i < 5; i++)
{
if (s[i][j] > max_score)
{
max_score = s[i][j];
max_student = i;
}
}
s[6][j] = max_score;
s[7][j] = max_student + 1;
}
}
// 输出结果
void print_result(double s[][6])
{
printf("学号\t语文\t数学\t物理\t化学\t音乐\t平均分\n");
for (int i = 0; i < 8; i++)
{
if (i < 5)
printf("NO:%d\t", i + 1);
else if (i == 5)
printf("总分:\t");
else if (i == 6)
printf("最高分:\t");
else if (i == 7)
printf("学号:\t");
for (int j = 0; j < 6; j++)
{
if (!((j == 5) && (i == 5 || i == 6 || i == 7)))
{
printf("%.2lf\t", s[i][j]);
}
}
printf("\n");
}
}
int main()
{
double s[8][6] = {{78, 82, 93, 74, 65},
{91, 82, 72, 76, 67},
{100, 90, 85, 72, 98},
{67, 89, 90, 65, 78},
{77, 88, 99, 45, 89}};
calc_avg(s, 5);
calc_total(s);
calc_max(s);
print_result(s);
return 0;
}
```
主要的改动是将原先的代码拆分成了三个函数:`calc_avg`、`calc_total` 和 `calc_max`,分别用于计算每个同学的平均分、每门课程的总分以及每门课程的最高分及学生学号。这样做有利于提高代码的可读性和可维护性。同时,`print_result` 函数用于输出结果。
阅读全文