c语言结构体方面编程问题 求大神 已崩溃!!!

2 编写一个程序,建立结构体类型表示一个学生的基本情况,包含以下成员项:学号、姓名、三门课的成绩、三门课的平均成绩。用该结构说明一个变量和一个指针,并完成成员项的输入、计算平均值、输出结果(用变量及指针两种方式)。 在以上结构的基础上建立一个班级学生的基本情况(数组)。计算出每个学生三门课的平均成绩,输出平均成绩最高的学生的各成员项值。以5个学生为例调试程序。#include<stdio.h>struct student{ int num; char name[20]; float score[3]; float avscore;}stu[5],*p;void fun(struct student stu[5]){ int i,j,n=0;for(i=1;i<5;i++){if(stu[i].avscore>stu[n].avscore) n=i;}printf("%d %s\t",stu[n].num,stu[n].name);for(j=0;j<3;j++)printf("%.2f\t",stu[n].score[j]);}void main(){ p=stu; int i,j; float t,s=0; for(i=0;i<5;i++) {printf("输入一位同学的学号,姓名,三门课成绩:\n"); scanf("%d",&(p+i)->num); scanf("%s",&(p+i)->name); for(j=0;j<3;j++) { scanf("%.2f",&t); stu[i].score[j]=t; s+=t; } (p+i)->avscore=s/3; } printf("学号 姓名\t成绩1\t成绩2\t成绩3\n"); for(i=0;i<5;i++) { printf("%d %s\t",(p+i)->num,(p+i)->name); for(j=0;j<3;j++) printf("%.2f\t",stu[i].score[j]); printf("\n"); } fun(stu);}这个刚输完第一个同学的信息 就跳出来两次提示输入同学信息 然后再输一遍直接就结束了 求问大神怎么回事 而且里面数据为什么是负数?!

scanf("%s",&(p+i)->name);这一句!!
&(p+i)->name这个,返回的是一个数组指针,你用他去接受%s肯定出错.

根据结果分析啊,自己学会调试,重复显示输出,说明输入缓冲区一次没读完,
结果为负说明赋值有误,本来你全局变量应该为0,没初始化上,但是用t去赋值,t没输入上就是野生值.
根据结果知道出错位置,,然后慢慢去找错误,,这么久了我想你也应该找到答案了吧.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-12-21
15红包帮写或调试
相似回答