有关getchar函数的问题!!!
学生成绩管理#include<stdio.h>
#include<stdlib.h>
#define A "%d %s %d %d %d-----%f\n"
#define B st[i].num,st[i].name,st[i].score[0],st[i].score[1],st[i].score[2],st[i].avr
#define N 50 /*学生人数*/
struct student
{
int num;
char name[15];
int score[3];
double avr;
}st[N],k;
/*函数声明*/
void Insertandinput (struct student st[]);
void Output(struct student st[]);
void Sort(struct student st[]);
void Desert(struct student st[]);
/*全局变量*/
int j,m,a,sum;
int i=0,n=0,x=0;/*n为计数器*/
/*主函数*/
void main()
{
loop: printf("\n");
printf("Please input the data:\n");
printf("***1--------Insertandinput***\n");
printf("***2----------Output***\n");
printf("***3----------Sort***\n");
printf("***4------------Desert***\n");
printf("***0------------exit***\n");
scanf("%d",&m);
switch(m)
{
case 1:Insertandinput(st); break;
case 2:Output(st); break;
case 3:Sort(st);break;
case 4:Desert(st); break;
default: exit(0);
}
goto loop;
}
void Insertandinput(struct student st[])/*输入与插入函数的合并*/
{
printf("Input the data :\n");
while(getchar()!='E')
{
scanf("%d %s %d %d %d",&st[i].num,st[i].name,
&st[i].score[0],&st[i].score[1],&st[i].score[2]);
getchar();/*此处若不加 getchar();while循环将视输入E后的回车为一次输入得到下次学生的信息为0,
若加则必须在每次学生信息输完后打回车,不打回车getchar();就会吃掉下次学生的一部分学号。我想既不打回车(打空格行),
下次学生的信息也不为0,该怎么做?*/ i++;n++;
}
}
数天前我发过一个求救帖,主要是让大家帮我做一个有关学生成绩管理的程序,经过这么多天的“折磨”,我终于自己编成了(除了上面的问题外),感谢各位对我的帮助,希望大家能帮我看看怎么改?
谢谢了!