第1个回答 2013-11-02
在scanf("%c",&a);中的%前加一个空格,写成scanf(" %c",&a);就行了。"%c"把回车('\n')也是当作字符的。它只接收一个字符,而你键入字符后必须有个回车才能生效,这个回车被留在缓冲区,被第二个scanf接收了,你没看见黑框框中的最后一个F:\>前空了一行吗?那就是第二个scanf接收的回车。在%前加一个空格后,这个空格会键入的那个回车吸收掉……
第2个回答 2013-11-02
您好!很高兴为您解答。
function本身就是函数的意思。
C语言中,按下回车键视为输入了一个字符“\n”,当输入“A”并按下回车确认输入后,系统默认第二个输入内容是“\n”,因此看上去是跳过了一次输入。
如改为:
#include <stdio.h>
char info(char a);
char x,y;
char main(void)
{
x=info(x);
printf("%c",x);
y=info(y);
printf("%c",y);
}
char info(char a)
{printf("\nPlease enter a letter (A-Z): ");
scanf("%c",&a);
scanf("%c",&a);//再加一句scanf可以抵消回车的影响
return a;}
望采纳~如您还有不解,欢迎追问~
第3个回答 推荐于2016-10-21
function的中文是“函数”
因为缓存里有一个回车,第二次读到的是一个回车
#include <stdio.h>
char info(char a);
char x,y;
char main(void)
{
x=info(x);
printf("%c",x);
y=info(y);
printf("%c",y);
}
char info(char a)
{
printf("\nPlease enter a letter (A-Z): ");
scanf("%c",&a);
getchar();//////
return a;
}本回答被提问者采纳
第4个回答 2013-11-02
刷一下缓冲区就可以了,否则输入a字符,然后回车,这个回车就是你输入的下一个字符了,等于什么都没输入。
x=info(x);
printf("%c",x);
fflush(stdin);
y=info(y);
printf("%c",y);
第5个回答 2013-11-02
fflush(stdin); // 刷新输入缓冲
scanf("%c",&a);