在编写把%c 输入 2 个数字(0–9),将 2 个数字组成 2 位数并每位上的数字不能相同,以%d 输出题目时,碰到输入字符把空格和回车也输入的问题,多方查找后终于解决
以下是我碰到的问题展示
代码:
#include <stdio.h>
int main(void)
{
char a,b;
int sum;
while(scanf("%c %c",&a,&b)==2){
printf("%d %d\n",a,b);
if(a==b){
printf("两数不能相等\n");
}else if(a<'0'||a>'9'||b<'0'||b>'9'){
printf("请输入0~9之间的数\n");
}else{
sum=(a-'0')*10+(b-'0');
printf("%d\n",sum);
}
}
return 0;
}
问题如图所示:
在第一次输入时正确,但是第二次输入时则出现错误。
###改正方法为:
1.在scanf第一次%c前加一个空格。因为这样做会scanf()第一个空格(enter为一个空格),从第一个非空白字符开始读取。
改动如下:
2.在在scanf第一次%c前加一个\n,道理和上面一致。
改正后如下: