这里是一直循环输入计算公约数,当计算完后提示是否继续,输入 n 退出,否则继续,但是我这个每次都是直接跳开头,没有输字符环节,为什么?
#include
int main(void)
{
int a,b,c;
char ch;
while(1)
{
printf("请输入2个整数:");
scanf("%d%d",&a,&b);
c = a;
while(a%c != 0 || b%c != 0)
{
c--;
}
printf("%d和%d的最大公约数是:%d",a,b,c);
printf("你要继续计算吗?\n y or n\n"); //输入n时停止程序,否则继续,这个有输出
scanf("%c",&ch); //上一步直接接开头请输入整数那里,这一步没有,直接跳回开头了
if (ch == 'n')
break;
}
return 0;
}
在 %c 前面加一个空格,可以解决这个问题
scanf(" %c",&c);
因为在进行输入时候,会以回车符作为结束,前面有输入的情况下,回车符会存在缓存里面。
当你使用 scanf("%c",&c); 时,(不加空格的情况下)会默认将回车符读入,从而跳过了让你输入 y/n 的过程。
加个空格之后,可以利用格式化的输入,跳过第一个字符。
scanf("%c",&ch); 前面加上
fflush(stdin);
试试看
看循环结束条件是输入字符 n ,输入 n 不能结束吗?