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

2编写一个程序,建立结构体类型表示一个学生的基本情况,包含以下成员项:学号、姓名、三门课的成绩、三门课的平均成绩。用该结构说明一个变量和一个指针,并完成成员项的输入、计算... 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);}这个刚输完第一个同学的信息 就跳出来两次提示输入同学信息 然后再输一遍直接就结束了 求问大神怎么回事 而且里面数据为什么是负数?! 展开
 我来答
Yasashi_i
2016-12-21 · TA获得超过129个赞
知道答主
回答量:5
采纳率:0%
帮助的人:2.1万
展开全部
scanf("%s",&(p+i)->name);这一句!!
&(p+i)->name这个,返回的是一个数组指针,你用他去接受%s肯定出错.

根据结果分析啊,自己学会调试,重复显示输出,说明输入缓冲区一次没读完,
结果为负说明赋值有误,本来你全局变量应该为0,没初始化上,但是用t去赋值,t没输入上就是野生值.
根据结果知道出错位置,,然后慢慢去找错误,,这么久了我想你也应该找到答案了吧.
阳光的雷咩咩
2016-12-21 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7658万
展开全部
15红包帮写或调试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式