for(i=0;i<3;i++) { printf("请输入第%d个客户的性别(M或者G)\n",i+1); scanf("%c",&numb[i].sex); printf("请输入第%d个客户的名字\n",i+1); getchar(); scanf("%s",numb[i].name); printf("请输入第%d个客户的年龄\n",i+1); scanf("%d",&numb[i].age); }
把 getchar 放在 sex 之后,printf 之前
解决这个问题需要从printf和scanf语句的顺序入手。printf语句需要按照字符串的输入顺序输出,而scanf语句需要按照输入的字符串的格式scanf语句返回值的类型来输出。
以下是修改后的代码:
for(i=0;i<3;i++)
{
char性别;
scanf("%c",&性别);
printf("请输入第%d个客户的性别(M或者G):",i);
scanf("%s",&numb[i].sex);
printf("请输入第%d个客户的名字:",i);
scanf("%s",numb[i].name);
printf("请输入第%d个客户的年龄:",i);
scanf("%d",&numb[i].age);
}
在这个修改后的程序中,我们修改了printf语句和scanf语句的顺序,使得输出顺序正确。同时,我们还修改了变量i的值,使得程序可以正确地输入3个客户的性别和名字和年龄。
希望这个解决方案能有所帮助。
scanf("%c",&numb[i].sex);
前面加上
fflush(stdin);
1.将里面的getchar注释掉
2.不按键盘能调到现在第二行输入姓名的打印吗?
我估计是误按了键盘!
这么改试试:
for(i=0;i<3;i++) {
printf("请输入第%d个客户的性别(M或者G)\n",i+1);
scanf(" %c",&numb[i].sex);
printf("请输入第%d个客户的名字\n",i+1);
scanf(" %s",numb[i].name);
printf("请输入第%d个客户的年龄\n",i+1);
scanf("%d",&numb[i].age);
}