成吉思汗手游变态:我想要的结果怎么和运行的结果不同啊(C语言)

来源:百度文库 编辑:高校问答 时间:2024/04/19 12:38:22
#include <stdio.h>

void scoremax (float score[10][5]);
void main()
{
float score[10][5];
int i,j;
for(i=0;i<10;i++)
for(j=0;j<5;j++)
{
printf("请输入第%d个学生的第%d门课的成绩:",i+1,j+1);
scanf("%f",&score[i][j]);
}
scoremax (score);

}

void scoremax (float score[10][5])
{
int i,j,m=0,n=0,a[10]={0};
for(i=0;i<10;i++)
for(j=1;j<5;j++)
if (score[i][j]>score[i][j-1])
a[i]=j;
for(i=1;i<10;i++)
if(score[i][a[i]]>score[i-1][a[i-1]])

{
m=i;
n=a[i];
}
printf("所有的分数中最高的分数所对应的学生号为%d\n",m);
for(j=0;j<5;j++)
printf("他的第%d门课的成绩为%.2f\n",j+1,score[m][j]);
}
就是我明明知道最高分是第几号但是程序运行却与事实想反。

你的scoremax()里的查找方法有问题
void scoremax (float score[][])
{
int i,j,m=0,n=0,max=0;
for(i=0;i<10;i++)
for(j=1;j<5;j++)
if (score[i][j]>max) {m=i;n=j;}
printf("所有的分数中最高的分数所对应的学生号为%d\n",m+1);
for(j=0;j<5;j++)
printf("他的第%d门课的成绩为%.2f\n",n+1,score[m][n]);
}

if (score[i][j]>score[i][j-1]) 你这种找最大数的方法不对,如果有这样的数10 5 7 3 5;找到的j是4,试试冒泡的吧.