有人能告诉我乘法程序中的问题吗?
代码如下:
#include <stdio.h>
int main()
{
int a, b, c;
printf("enter the number of whose table you want");
scanf("d", &b);
for (int a = 1; a <= 10; a++)
{
c = a * b;
printf("%d\n", c);
}
return 0;
}
字符串
输出显示的是不相关的数字
4条答案
按热度按时间ux6nzvsh1#
scanf
使用字符串格式说明符进行阅读。您可能希望将第5行替换为scanf("%d", &b);
jobtbby32#
问题出在scanf函数调用上。您没有为整数(%d)传递正确的格式说明符,而是错误地使用了字母“d”。这将导致scanf函数错误地解释输入,并且无法将其正确存储在变量b中。
要解决此问题,您需要在scanf函数中将不正确的格式说明符“d”替换为“%d”。下面是你的程序的修正版本:
字符串
通过此更改,程序应按预期工作。
sgtfey8w3#
我的乘法表程序有什么问题
关键错误是未在启用所有警告的情况下编译。
一个好的编译器会抱怨
字符串
保存时间并开启所有编译器警告。
polhcujo4#
您忘记了
scanf()
字符串中的%
。scanf("d", &b)
从标准输入中读取一个字节,并将其与d
匹配,如果该字节确实是d
,则将其消耗,否则将其推回。如果没有读取字节,scanf()
返回EOF
,如果读取了字节,scanf()
将返回0
(成功转换的数量),无论d
是否匹配。还要注意的是,
a
在函数体中定义了两次,第二次定义隐藏了第一次定义,其作用域仅扩展到for
体的末尾。这不会导致程序故障,但可能会造成混乱并容易出错。你可以很容易地解决这些问题,但还有更多的东西要学习:
scanf()
的返回值以检测无效或丢失的输入;以下是修改后的版本:
字符串