渴望春天247 2021-06-22 18:12 采纳率: 84.6%
浏览 66
已结题

现有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");

}

 

  • 写回答

1条回答 默认 最新

  • qfl_sdu 2021-06-22 19:11
    关注

    第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");
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月27日
  • 已采纳回答 9月19日

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?