为什么输出学号的后面又重新输出一遍名字呢?怎么才能去掉学号后面的名字呢?
2条回答 默认 最新
- a5156520 2024-01-13 13:31关注
因为学生结构中存储学号的字符数组太小了,导致数组越界,打印的时候把其他内存位置的数据也打印出来,所以导致结果显示错误;
可以将结构中存储学号的字符数组的大小设置大一点。
修改如下:#include <stdio.h> struct students{ char number[10]; // 输入的学号为5位,故学号字符数组大小最小为6,也可以适当设置大一点 char name[10]; int grade; }; int main(void){ int i,N; double average,sum=0; struct students stu[11]; scanf("%d",&N); /** 5 00001 zhang 70 00002 wang 80 00003 qian 90 10001 li 100 21987 chen 60 */ for(i=0;i<N;i++){ scanf("%s%s%d",stu[i].number,stu[i].name,&stu[i].grade); getchar(); sum+=stu[i].grade; } for(i=0;i<N;i++){ printf("%s,%s,%d\n",stu[i].number,stu[i].name,stu[i].grade); } average=sum/N; printf("%.2lf\n",average); for(i=0;i<N;i++){ if(stu[i].grade<average){ printf("%s %s\n",stu[i].name,stu[i].number); } } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 问题遇到的现象和发生背景 360导航页面千次ip是20元,但是我们是刷量的 超过100ip就不算量了,假量超过100就不算了 这是什么逻辑呢 有没有人能懂的 1000元红包感谢费
- ¥30 计算机硬件实验报告寻代
- ¥15 51单片机写代码,要求是图片上的要求,请大家积极参与,设计一个时钟,时间从12:00开始计时,液晶屏第一行显示time,第二行显示时间
- ¥15 用C语言判断命题逻辑关系
- ¥15 原子操作+O3编译,程序挂住
- ¥15 使用STM32F103C6微控制器设计两个从0到F计数的一位数计数器(数字),同时,有一个控制按钮,可以选择哪个计数器工作:需要两个七段显示器和一个按钮。
- ¥15 在yolo1到yolo11网络模型中,具体有哪些模型可以用作图像分类?
- ¥15 AD9910输出波形向上偏移,波谷不为0V
- ¥15 淘宝自动下单XPath自动点击插件无法点击特定<span>元素,如何解决?
- ¥15 曙光1620-g30服务器安装硬盘后 看不到硬盘