gpt4 book ai didi

在C中计算除999和1之外的任意两个数字的和

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

C 对我不友好。我正在编写一个程序来计算两个数字的总和。由于输入的数字非常大,所以我尝试使用 char 数组来计算。我想知道可能会出现什么问题,因为有时它有效,有时则不起作用。

我的代码是这样的:

if (len[0]>=len[1]){...}
else{
for (int i=0 ;i<len[1];i++){
if (i <=len[0]){
temp[i] = (digits[0][i] + digits[1][i] + carry) % 10;
carry = (digits[0][i] + digits[1][i] + carry) / 10;
}else{
temp[i] = (digits[1][i] + carry) % 10;
carry = (digits[1][i] + carry) / 10;
}}
if (carry==1){
temp[len[1]++]=1;

}
for (int i=0,j=len[1]-1; i <len[1];i++,j--){
sum[j]=temp[i]+'0';

}

它几乎适用于所有情况,直到我输入 1 和 999它给出 220 而不是 1000。

我不确定为什么该程序仅在这种情况下不起作用。

最佳答案

  • 首先,您应该处理缩进和括号中的代码。它可以帮助您和我们阅读您的代码。在提供的代码中,缩进不清晰也不正确,如果提供的代码是这个,则可能是第一个问题。

  • 使用defensive programming 。这里的“j”可能小于 0。

  • 在 for 循环中调用 printf("%d\n", sum[j]);

    for(int i=0,j=len[1]-1; i <len[1];i++,j--)
{
sum[j]=temp[i]+'0';
printf("%d\n",sum[j]);
}
  • 如果你想打印总和,你应该这样做
    for(int i=0,j=len[1]-1; i <len[1];i++,j--)
{
sum[j]=temp[i]+'0';
}
int mySum = 0;
for(int index=0; index <sizeof(sum);index++)
{
mySum += sum[j];
}
printf("%d\n", mySum );
  • 如果您想要有效的代码,请重新编写所有代码
#include <stdio.h>
#include <math.h>

const char * number1_c = "1111";
const char * number2_c = "123";

int number1,number2;

int main()
{
number1 = atoi(number1_c);
printf("Sum of x = %d\n", number1);
number2 = atoi(number2_c);
printf("Sum of y = %d\n", number2);
printf("Sum of x+y = %d\n", number1+number2);
return 0;
}

(如果您想了解如何将 char* 转换为 int,google it!)

关于在C中计算除999和1之外的任意两个数字的和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55473479/

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