printf与scanf实际显示顺序出错,如何解决?

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); }

img

把 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);
    }