#include <ctype.h>
#define N 4
typedef struct
{char num[N];
char nam[N];
char retir;
int wage;
}AA;
main()
{AA people[N],*p=people;
int p1,p2,w1,w2,i=1;
float pw1,pw2;
clrscr();
for(;p<people+N;p++)
{printf("\n%dpeo\n",i);
printf(" nu\n");
scanf("%s",p->num);
printf(" na\n");
scanf("%s",p->nam);
printf(" ret\n");
scanf("%c",&p->retir);
printf(" wa\n");
scanf("%d",&p->wage);
}
p1=p2=w1=w2=0;
for(p=people;p<people+N;p++)
{if(toupper(p->retir)=='Y')
{p1++;w1+=p->wage;}
if(toupper(p->retir)=='N')
{p2++;w2+=p->wage;}
}
pw1=w1/N;pw2=w2/N;
printf("retir peo=%d,tatol wa=%d,ave=%f\n",p1,w1,pw1);
printf("NO retir peo=%d,tatol wa=%d,ave=%f\n",p2,w2,pw2);
} 为什么系统不让我输入scanf("%c",&p->retir);求指教??
scanf("%c",&p->retir);为什么会出错呢
如:
scanf("%s",p->num);
printf(" na\n");
scanf("%s",p->nam);getchar(); //这里加,严格来说,应该在每一个后面都加,因为你在输入每个数据后,都会键入一个回车。这个回车保存在缓存中,当下一个是输入char时,会将回车读走。导致不能真实输入一个字符。
printf(" ret\n");
scanf("%c",&p->retir);
printf(" wa\n");
scanf("%d",&p->wage);
# include "stdlib.h"
# include "stdio.h"
2、
printf(" ret\n");
fflush(stdin);////////加此句
scanf("%c",&p->retir);
printf(" wa\n");*/
3、去掉 clrscr();追问
fflush(stdin);////////加此句
这句话什么意思,还有就是为什么要去掉clrscr()呀
fflush(stdin);用于清除缓冲区的内容
在用scanf输入字符时,一般加上此语句
clrscr();在conio.h头文件中。
但Visual C++ 6.0或7等新版本已没这个了