gpt4 book ai didi

C - 如果长度不同,则将 2 个字符串中的数字加在一起

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

如果我有两个字符串:

a = "1234"
b = "4321"

我可以像这样将两个数字加在一起:

for(i=0; i<width-1; i++){
sum = (a[width-2-i]-48) + (b[width-2-i]-48) + carry;
carry = 0;
if(sum > 9){
carry = 1;
sum-=10;
}
answer[i] = sum+48;
}

if(carry) answer[i++] = carry+48;
answer[i]= 0;

然后反转(宽度等于strlen(a))。

如果出现以下情况,我怎么能做同样的事情呢?

a = "12345"
b = "4321"

我需要重新分配内存吗?或者什么?

(顺便说一句 - the problem I'm trying to solve 使用了许多 50 位数字,因此据我所知,strtoul 或 strtoull 是不可能的。Here's my code so far。)

最佳答案

int getcharval(const char *s, int idx) {
if (idx < strlen(s))
return s[strlen(s) - idx - 1] - 48;
return 0;
}

void add() {
const char *a = "1234";
const char *b = "13210";
char answer[256];
int i, wa=strlen(a), wb=strlen(b), width, sum, carry;
width = wa > wb ? wa : wb;
for(i=0; i<width; i++){
char ca = getcharval(a, i);
char cb = getcharval(b, i);
printf("%d %d\n", ca, cb);
sum = ca + cb + carry;
carry = 0;
if(sum > 9){
carry = 1;
sum-=10;
}
answer[i] = sum+48;
}
if(carry) answer[i++] = carry+48;
answer[i]= 0;
for (i = 0; i < strlen(answer) / 2; i++) {
char t = answer[i];
answer[i] = answer[strlen(answer) - i - 1];
answer[strlen(answer) - i - 1] = t;
}

printf("%s\n", answer);
}

关于C - 如果长度不同,则将 2 个字符串中的数字加在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16660677/

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