永发信息网

C语言中结构体和指针运用。

答案:4  悬赏:70  手机版
解决时间 2021-05-09 06:16
  • 提问者网友:兔牙战士
  • 2021-05-08 21:06

#include<stdio.h>
#define N 2
struct STUDENT
{
char name[20];
int number;
float Math;
float English;
float Chinese;
};
struct STUDENT student[N];
void main()
{
int i;
struct STUDENT *p;
p=student;
printf("please input ten stuents' information!\n");
for(i=0;i<N;i++,p++)
scanf("%s,%d,%f,%f,%f",p->name,&p->number,&p->Chinese,&p->Math,&p->English);
for(i=0;i<N;i++,p++)
printf("%s,%d,%f,%f,%f\n",p->name,p->number,p->Chinese,p->Math,p->English);
}

输入学生的姓名,学号,三科成绩,再输出,编译正确,却得不到正确答案,不知为什么?

最佳答案
  • 五星知识达人网友:过活
  • 2021-05-08 21:37

如楼上所说的..必须多写一次p=student;



但是我觉得您还有一个错误,就是...对于字符串的输入..应该与数值的输入分离的.



比如说.您输入的是: zhoujielun,12,23,45,65



那么在读入的时候就会将上面输入的整个字符串当成学生的姓名了.而导致各科目的分数没有数据的输入..



这样就孬了..您再仔细想想吧..如果想不出来就来问我..嘿嘿..

全部回答
  • 1楼网友:风格不统一
  • 2021-05-08 23:25
去了后面那个for
  • 2楼网友:鱼忧
  • 2021-05-08 23:04
我也是如楼上所说的.你再把p=student;写在第二个for()函数前.为什么会这样呢.因为当第一个for()孙数执行N次的时候.p也指向最后一个了.而第二个for又开始执行.所以p输出的是上次最后面的下一个.现在加上p=student;,让p重新指向开头.这样就可以输出.
  • 3楼网友:梦中风几里
  • 2021-05-08 21:56

再一次写p=student;

for(i=0;i<N;i++,p++) printf("%s,%d,%f,%f,%f\n",p->name,p->number,p->Chinese,p->Math,p->English);

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯