zcjy 发表于 2016-5-28 21:16:20

请教大家一个程序,输出时好像if没有运行,直接输出的no swap

#include"stdio.h"
main()
{
        int a,b,t;
        char c;
        printf("请输入一个数a=");
        scanf("%d", &a);
        printf("请输入一个数b=");
        scanf("%d", &b);
        printf("请输入一个字符c=");
        scanf("%c", &c);
        if(c=='y'){
                t=a;
                a=b;
                b=t;
                printf("a=%d b=%d", a,b);
        }else{
                printf("No swap");
    }
       
}
是判断一个变量是否等于字符‘y’,若是交换a,b值

光脚的部长 发表于 2016-5-28 21:37:33

这个问题我也遇到过,同求大神解答。
我的感觉就是在输入b然后敲击回车的时候,回车这个字符留在了scanf的类似缓冲区的地方,然后c就直接读取回车了。我之前遇到类似问题就在读取b之后加一句getchar();一般就能解决这种问题。

zcjy 发表于 2016-5-28 22:57:07

光脚的部长 发表于 2016-5-28 21:37
这个问题我也遇到过,同求大神解答。
我的感觉就是在输入b然后敲击回车的时候,回车这个字符留在了scanf的 ...


刚问到了
这是键盘缓存冲突问题。。加上      fflush(stdin);即可
页: [1]
查看完整版本: 请教大家一个程序,输出时好像if没有运行,直接输出的no swap