C语言编程,输入五个学生的五科成绩,求每科的平均分,最高分,最低分。已有程序,在此基础上改错。

#include <stdio.h>
main()
{
double a[6][6];
int i,j;
for(i=0;i<5;i++){
for(j=0;j<5;j++)
scanf("%lf",&a[i][j]);}
for(j=0;j<5;j++){
a[j][6]=0;
for(i=0;i<5;i++)
a[j][6]+=(a[i][j]/5.0);
printf("课程%d的平均分=%g\n",j+1,a[j][6]);}
for(i=0;i<5;i++){
a[6][i]=a[0][i];
for(j=0;j<5;j++){
if(a[6][i]<a[i][j])
a[6][i]=a[i][j];}
printf("课程%d的最低分=%g\n",i+1,a[6][i]);}
for(i=0;i<5;i++){
a[6][i]=a[0][i];
for(j=0;j<5;j++){
if(a[6][i]>a[i][j])
a[6][i]=a[i][j];}
printf("课程%d的最高分=%g\n",i+1,a[6][i]);}
}

#include <stdio.h>
main()
{
double a[8][5]={0};
int i,j;
for(i=0;i<5;i++){
for(j=0;j<5;j++)
scanf("%lf",&a[i][j]);}
for(j=0;j<5;j++){
for(i=0;i<5;i++)
a[5][j]+=(a[i][j]/5.0);
printf("课程%d的平均分=%g\n",j+1,a[5][j]);}
for(i=0;i<5;i++){
a[6][i]=a[0][i];
for(j=1;j<5;j++){
if(a[6][i]>a[j][i])
a[6][i]=a[j][i];}
printf("课程%d的最低分=%g\n",i+1,a[6][i]);}
for(i=0;i<5;i++){
a[7][i]=a[0][i];
for(j=0;j<5;j++){
if(a[7][i]<a[j][i])
a[7][i]=a[j][i];}
printf("课程%d的最高分=%g\n",i+1,a[7][i]);}
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-12-15
#include <stdio.h>
int main() {
double a[6][6];
double sum,max,min;
int i,j;
for(i = 0; i < 5; i++) {
sum = 0.0;
for(j = 0;j < 5; j++) {
scanf("%lf",&a[i][j]);
sum += a[i][j];
}
a[i][5] = sum/5.0;//平均成绩
}
for(j = 0;j < 5;j++) {
a[5][j] = 0.0;
max = min = a[0][j];
for(i = 1; i < 5; i++) {
a[5][j] += a[i][j];
if(a[i][j] > max) max = a[i][j];
if(a[i][j] < min) min = a[i][j];
}
printf("课程%d的平均分 = %g\n",j + 1,a[5][j]/5.0);
printf("课程%d的最低分 = %g\n",j + 1,min);
printf("课程%d的最高分 = %g\n",j + 1,max);
}
return 0;
}

第2个回答  2016-12-15
#include <stdio.h>

//输入五个学生的五科成绩,求每科的平均分,最高分,最低分。已有程序

int main(void)
{
double a[5][5] = {0}; // 存储5个学生,每个学生5科成绩, 第一维存储学生,第二维存储课程
int i,j;

double b[5][3]= {0}; // 存储每科平均分,最低分, 最高分,第一维存储课程,第二维存储分数
double max,min,avg;

// 读入成绩
for(i=0;i<5;i++){
for(j=0;j<5;j++)
scanf("%lf",&a[i][j]);}

// 计算每科的平均成绩
for(j=0;j<5;j++){
avg = min = max = a[0][j];
for(i=1;i<5;i++) {
avg += a[i][j];
if(min>a[i][j]) min = a[i][j];
if(max<a[i][j]) max = a[i][j];
}
b[j][0] = avg/5;
b[j][1] = min;
b[j][2] = max;
}

for(j=0; j<5; j++) {
printf("课程%d, 平均分=%g, 最低分=%g, 最高分=%g\n", j, b[j][0], b[j][1], b[j][2]);
}

getchar();
getchar();
}
第3个回答  2016-12-15
#include <stdio.h>
main(){
double a[6][6];
int i,j;
for(i=0;i<5;i++){
for(j=0;j<5;j++)
scanf("%lf",&a[i][j]);}
for(j=0;j<5;j++){
a[j][5]=0;
for(i=0;i<5;i++)
a[j][5]+=(a[i][j]/5.0);
printf("课程%d的平均分=%g\n",j+1,a[j][5]);}
for(i=0;i<5;i++){
a[5][i]=a[0][i];
for(j=0;j<5;j++){
if(a[5][i]>a[j][i])
a[5][i]=a[j][i];}
printf("课程%d的最低分=%g\n",i+1,a[5][i]);}
for(i=0;i<5;i++){
a[5][i]=a[0][i];
for(j=0;j<5;j++){
if(a[5][i]<a[j][i])
a[5][i]=a[j][i];}
printf("课程%d的最高分=%g\n",i+1,a[5][i]);}
}

这是改正过的,很多地方。

追问

那个,还是有点问题

最小值不对

哦错了,是最大值不对

本回答被提问者采纳
第4个回答  2016-12-15
数组越界了, 6*6的二维数组, 下标最大只能为5, 你上面有6了追问

不是很明白你的意思,我定义的是5*5为成绩,剩下一列平均分,一列最值。

嗷我看到了,抱歉,我回去会再试一下的。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网