正定新区公安消防大队:为什么无法正确输入数据

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 15:53:53
#define MAX 60
#include <string.h>
struct student
{
int NO;
char name[20];
float score;
}class1[MAX],class2[MAX],class3[MAX];

datain(struct student *p)
{
printf("please input student data end by char ? :\n");
for(p=class1;p<=p+MAX;p++)
{
scanf("%d%s%f\n",&p->NO,p->name,&p->score);
while(p->NO=='?')
{
break;
}
}

}

print(int class)
{
printf("please input class%d student data:\n",class);
}

class_ch()
{
printf("please input class No:");
}

main()
{
int class_no;
int class_1,class_2,class_3;
printf("1: input class1 student data:\n2: input class2 student data:\n3: input class3 student data:\n ");
class_ch();
scanf("%d",&class_no);
switch(class_no)
{
case 1:print(class_no);datain(class1);break;
case 2:print(class_no);datain(class2);break;
case 3:print(class_no);datain(class3);break;
default:printf("class number error!\n");
}

}

在输入数据的时候,无法将成绩正确输入,
比如说输入:1 xiaoming 88 然后回车,只会发现数组里只有序号“1”和姓名“xiaoming”,成绩并没有,而且回车后只能输入这一组数据,并不能继续输入。我这里是以符号“?”结束的。

请各位高手帮个忙~

for(p=class1;p<=p+MAX;p++)
{
scanf("%d%s%f\n",&p->NO,p->name,&p->score);
while(p->NO=='?') //如果p->no=='?'那么while会执行break;跳出while但是不会跳出for
{
break;
}
}