现有4名学生的属性包括学号、姓名、三门功课成绩,输出其中平均成绩最高者的姓名和成绩?
问题描述:
#include <stdio.h>
#include<string.h>
#define N 4
#define M 3
float score[M];
int num[N];
char name[N];
float a_stu[N];
int h;
float high;
void main( )
{
void input();
float search();
input();
search();
printf("name is %d:\n",h);
printf("the highest score is: %5.2f\n",high);
}
float search(void)
{
int i,j;
float s;
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
s+=score[i];
a_stu[i]=s/M;
}
high=a_stu[0];
for(i=0;i<N;i++)
if(score[i]>high)
high=score[i];
h=i+1;
return(high);
}
void input(void)
{
int i;
for(i=0;i<N;i++)
{
printf("输入学号:");
scanf("%d",num[i]);
}
for(i=0;i<N;i++)
{
printf("输入姓名:");
scanf("%s",name[i]);
}
for(i=0;i<N;i++)
{
printf("输入功课成绩:");
scanf("%d",score[i]);
}
printf("\n");
}
答
第5行的float score[M];修改为float score[N][M];
第7行的char name[N];修改为char name[N][20];
第44行scanf("%d",num[i]);//这里,需要加&,修改为scanf("%d",&num[i]);
第54行scanf("%d",score[i]);//这里,需要加&,修改为scanf("%d",&score[i]);
还有其他错误,不写了,直接在代码中改了,如下:如有帮助,请采纳一下,谢谢。
#include <stdio.h>
#include<string.h>
#define N 4
#define M 3
float score[N][M]; //修改1
int num[N];
char name[N][20]; //修改2
float a_stu[N];
int h;
float high;
void main( )
{
void input();
float search();
input();
search();
printf("name is %s:\n",name[h]);
printf("the highest score is: %5.2f\n",high);
}
float search(void)
{
int i,j;
float s;
for(i=0;i<N;i++)
{
s = 0.0;
for(j=0;j<M;j++)
s+=score[i][j]; //修改3
a_stu[i]=s/M;
}
high=a_stu[0];
for(i=0;i<N;i++)
if(a_stu[i]>high) //修改4
{
high=a_stu[i]; //修改5
h=i; //这里干啥的没看懂
}
return(high);
}
void input(void)
{
int i,j; //修改6
for(i=0;i<N;i++)
{
printf("输入学号:");
scanf("%d",&num[i]); //修改7
}
getchar();
for(i=0;i<N;i++)
{
printf("输入姓名:");
scanf("%s",name[i]);
}
getchar();
for(i=0;i<N;i++)
{
printf("输入功课成绩:");
for(j = 0;j<M;j++) //修改8
scanf("%d",&score[i]); //修改9
}
printf("\n");
}