gpt4 book ai didi

c - 为什么同一个程序在 ideone 和 codeblocks 中表现不同?

转载 作者:太空宇宙 更新时间:2023-11-04 06:57:44 25 4
gpt4 key购买 nike

此代码旨在计算 100! 的数字总和。我在 ideone 中得到了正确的输出,但在 codeblocks 中得到了错误的输出。请帮忙。

#include <stdio.h>
#include <stdlib.h>
#define size_of_number 160
#define question 100

//Function Prototypes
void initialise(int[]);
int sum_of_digits(int[]);
void factorial(int[],int);

int main()
{
int number[size_of_number];
int sum;

initialise(number);

factorial(number, question);
//Getting the sum of the digits of the number
sum = sum_of_digits(number);
printf("The sum of the digits of %d! is %d.\n",question, sum);

return 0;
}

//Initially, the number is 0 so all it's digits are set to zero.
void initialise(int number[])
{
int i;
for(i = 0; i < size_of_number; i++)
{
number[i] = 0;
}
}

//Finding the factorial by multiplying the digits
void factorial(int number[], int num)
{
int i, first_digit;
int carry, replace, product;

first_digit = 0;
number[first_digit] = 1;

while(num != 1)
{
carry = 0;
for(i = 0; i <= first_digit; i++)
{
product = num*number[i] + carry;
replace = product%10;
carry = product/10;
number[i] = replace;

if( (i == first_digit) && (carry > 0) )
{
first_digit++;
}
}

num--;
}
}

//Finding the sum of all digits
int sum_of_digits(int number[])
{
int i, sum;

for(i = 0; i < size_of_number; i++)
{
sum = sum + number[i];
}
return sum;
}

我在使用其他一些程序时也遇到了问题。为什么 Codeblocks 没有给出正确的输出,即 648?

最佳答案

您没有在函数 sum_of_digits 中初始化 sum。在 C 中,普通局部变量不会自动获得起始值,因此您的程序具有 C 标准所称的未定义行为。任何事情都可能发生,但通常会发生的情况是,变量以内存中恰好位于该变量所在位置的任何数据开始。

关于c - 为什么同一个程序在 ideone 和 codeblocks 中表现不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42008603/

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