社区讨论
求助为什么用函数就错了
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';
}
CPPfor (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 条回复,欢迎继续交流。
正在加载回复...