C语言解决

来源:百度知道 编辑:UC知道 时间:2024/05/31 13:03:11
这个题目是:有10个学生,每个学生的数据包括学号、姓名、3门课程成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。
不知道为什么,我这个程序可以计算出3门课程总成绩,以及最高分,但输不出最高分学生的数据,麻烦帮我查看一下错在哪了,谢谢.

#include<stdio.h>
struct student
{
int num;
char name[15];
float a[3];
}c[10];

void ping(struct student c[]) /*求三门课程的总平均成绩*/
{
int i,j;
float n,p;
for(j=0;j<3;)
{
float sum=0;
for(i=0;i<10;i++)
{
n=c[i].a[j];
sum=sum+n;
}
p=sum/10;
printf("第%d门成绩的总平均成绩为:%f",++j,p);
}
}

void gao(struct student *p) /*求最高分*/
{ struct student *w,*q;
int i,n;
float sum,max=0;
w=p;
for(i=0;i<10;i++)
{
sum=p->a[0]+p->a[1]+p->a[2];
if(sum>max)
max=sum;
p++;
}
printf("最高分为:%f",max);

for(i=0;i<10;i++) /*输出最高分同学的信息*/
{ if((

第一种解题方法
void gao(struct student *p) /*求最高分*/
{ struct student *w,*q;
int i,n,temp=0; /*temp是用于记录最大的学生在结构体数组中的下标*/
float sum,max=0;
w=p;
for(i=0;i<10;i++)
{
sum=p->a[0]+p->a[1]+p->a[2];
if(sum>max)
{max=sum; temp=i;)
p++;
}
printf("最高分为:%f",max);
p=w+i;
printf("%10d%13S%4.1f%4.1f%4.1f",p->num,p->name,p->a[0],p->a[1],p->a[2]);

/**
for(i=0;i<10;i++) /*输出最高分同学的信息*/
{ if((p->a[0]+p->a[1]+p->a[2])==max)
{printf("这个学生的数据是:\n");
printf("%10d%13S%4.1f%4.1f%4.1f",p->num,p->name,p->a[0],p->a[1],p->a[2]);}
p++;
} */
}

或者
第二种解题方法:
void gao(struct student *p) /*求最高分*/
{ struct student *w,*q;
int i,n;
float sum,max=0;
w=p;
for(i=0;i<10;i++)
{
sum=p->a[0]+p->a[1]+p->a[2];
if(sum>