社区讨论

求助为什么用函数就错了

P1601高精度加法参与者 3已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lpns5gnv
此快照首次捕获于
2023/12/02 16:16
2 年前
此快照最后确认于
2023/12/02 18:27
2 年前
查看原帖
C
\\这个是不用函数的通过了
#include<stdio.h>
#include<string.h>

int main(){
	char a[505],b[505];
	int a1[505], b1[505], c[505] = {0};
	scanf("%s\n%s",a,b);		
	int la = strlen(a), lb = strlen(b);
	int lc = la>lb?la:lb;
    for (int i = 0; i < la; i++) {
        a1[la - i - 1] = a[i] - '0';
    }
    for (int i = 0; i < lb; i++) {
        b1[lb - i - 1] = b[i] - '0';
    }    
    for (int i = 0; i < lc; i++) {
        c[i] += a1[i] + b1[i];
        c[i + 1] += c[i] / 10;
        c[i] %= 10;
    }
    while (c[lc] == 0 && lc > 0)
        lc--;
    for (int i = lc; i >= 0; i--) {
        printf("%d",c[i]);
    }
	return 0;
}
\用了函数以后两个长度不同的字符串相加会出错```c #include<stdio.h> #include<string.h>
int High_precision_addition(char a[], char b[]) { int la = strlen(a), lb = strlen(b); int a1[505], b1[505], c[505] = {0}; int lc = la>lb?la:lb; for (int i = 0; i < la; i++) { a1[la - i - 1] = a[i] - '0'; } for (int i = 0; i < lb; i++) { b1[lb - i - 1] = b[i] - '0'; }
CPP
for (int i = 0;i < lc; i++) {
    c[i] += a1[i] + b1[i];
    c[i + 1] += c[i] / 10;
    c[i] %= 10;
}
while (c[lc] == 0 && lc > 0) 
	lc--;
for (int i = lc; i >= 0; i--) {
    printf("%d",c[i]);
}
return 0;
} int main(){ char a[505],b[505]; scanf("%s\n%s",a,b); High_precision_addition(a,b); return 0; }
CPP

回复

2 条回复,欢迎继续交流。

正在加载回复...