gpt4 book ai didi

c - 在C中求5个连续整数的乘积

转载 作者:行者123 更新时间:2023-11-30 18:20:24 25 4
gpt4 key购买 nike

我试图计算5个连续整数的乘积,但结果完全错误。我认为我的逻辑是正确的,但为什么它显示给我一个不真实的数字:344362200

序列号是从1到10,代码如下(仅供测试):

void problem8()
{
char *input = "123456789";
char c;
int step = 5, i = 0, prod = 0, temp = 1;
for (; i < step; i++)
{
temp *= *(input + i);
printf("%d\n", temp);
}
}

输出真的很奇怪!在第一个循环中,结果是 42 @@,而它应该是 1,而且只是 1。我检查了 *(input + 0) 或 1 2 4 等的单个结果,它是正确的。但产品是错误的。

最佳答案

您需要区分数字代码('0' 为 48,'1' 为 49,等等)和数字 1、2、第一次迭代你应该得到 49;事实上,我得到:

49
2450
124950
6497400
344362200

如果您想要前 5 个阶乘,则需要使用 temp *= input[i] - '0'; (其中 input[i] 是比 *(input + i) 更简洁,IMNSHO)。

我给出的代码对于 ISO 8859-1 等代码集以及 UTF-8 和许多其他相关代码集有效。但它们对于 EBCDIC 无效。

关于c - 在C中求5个连续整数的乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22949121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com