|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- int main(){
- int a;
- char b;
-
- printf("Input a:>");
- scanf("%d",&a);
- getchar();
- printf("a=%d\n",a);
-
- printf("Input b:>");
- scanf("%d",&b);
- getchar();
-
- printf("a=%d\nb= %d\n",a,b);
-
-
- return 0;
- }
复制代码
运行后,结果如下:
Input a:>11
a=11
Input b:>22
a=0
b= 22
--------------------------------
Process exited after 4.378 seconds with return value 0
请按任意键继续. . .
请大佬解答一下为什么在输入b以后a的值丢失了?
问题出在第二个scanf函数的参数中使用了错误的格式化字符。在第一个scanf函数中,我们使用了"%d"来读取整数并将其存储在变量a中。但在第二个scanf函数中,我们错误地使用了"%d"来读取字符并将其存储在变量b中。
正确的格式化字符应该是"%c",因为我们希望读取一个字符。修改代码如下:
- #include <stdio.h>
- int main(){
- int a;
- char b;
- printf("Input a:>");
- scanf("%d", &a);
- getchar();
- printf("a=%d\n", a);
- printf("Input b:>");
- scanf("%c", &b);
- getchar();
- printf("a=%d\nb=%c\n", a, b);
- return 0;
- }
复制代码
这样修改后,程序将正确读取字符并输出正确的结果。
|
|