首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言 新手有关问题 求大神相助

2013-12-19 
C语言新手问题求大神相助#include stdio.hint getValue (int a){int result1for(int i1iai++)res

C语言 新手问题 求大神相助
#include <stdio.h>

int getValue (int a)
{
int result=1;
for(int i=1;i<=a;i++)
result=result*i;
return result;
}

int main(void)
{
int a;
char c;
//scanf("%d ",&a);
//scanf("%c",&c);
//printf("%d,%c",a,c);
do{

printf("Please input the number of what you want : \n");
scanf("%d",&a);
printf("the result of %d ! is %d\n",a,getValue(a));

printf("continue?:('y' or 'n')\n");

//fflush(stdin);

scanf("%c",&c);
}while(c!='n');

return 0;
}



不用fflush,不能实现我的目的。就是按y,就可以继续,结果不行,我不知道怎么回事。有个同学给我说缓冲区的问题,我不是很明白。
[解决办法]

scanf("%c",&c);
改为
scanf(" %c",&c);
也就是格式字符串前加个空格。
空格在scanf中表示 忽略空白字符

BTW:printf/scanf这种C/C++最常用的函数都不会,还搞个毛呀?
[解决办法]

scanf(" %c",&c); //%c前加空格就可以解决问题
否则此时读入的是你敲完数字后的回车,debug一下就可以看出来!

[解决办法]
fflush(stdin);的作用是清空输入缓冲区,这么做是为了确保不影响后面的数据读取。
一般来说读完一个字符串后紧接着又要读取另一个字符,中间要加一句fflush(stdin);来情况缓冲区,否则上一次输入的字符可能会留在缓冲区。


[解决办法]
http://blog.csdn.net/kosl90/article/details/6683965
[解决办法]
这个代码我看了!你的问题出在 scanf()上,不知道你的操作时怎样的,如果你先输入 数字然后 回车的话  那末 你的 '\n'就被 c接收了 。建议 在scanf后紧跟一个getchar();

热点排行