
高精度乘法C语言帮忙看一下有什么不对
#include <string.h>
int main() {
char a[1010], b[1010];
int al[1010], bl[1010], c[2010];
int i, j, la, lb;
scanf("%s%s", a, b);
la = strlen(a);
lb = strlen(b);
for (i = 0; i < la; i = i + 1) al[la - 1 - i] = a[i] - '0';
for (i = 0; i < lb; i = i + 1) bl[lb - 1 - i] = b[i] - '0';
for (i = 0; i < la; i = i + 1) {
for (j = 0; j < lb; j = j + 1) {
c[i + j] = al[i] * bl[j] + c[i + j];
}
}
for (i = 0; i < la + lb - 1; i = i + 1) {
c[i + 1] += c[i] / 10;
c[i] = c[i] % 10;
}
if (c[la + lb - 2] < 10) {
i = la + lb - 2;
} else if (c[la + lb - 2] <100) {
i = la + lb - 1;
c[la + lb - 1] = c[la + lb - 2] / 10;
c[la + lb - 2] = c[la + lb - 2] % 10;
} else if (c[la + lb - 2] < 1000) {
i = la + lb;
c[la + lb] = c[la + lb - 2] / 100;
c[la + lb - 1] = c[la + lb - 2] / 10 - 10 * c[la + lb];
c[la + lb - 2] = c[la + lb - 2] % 100;
} else if (c[la + lb - 2] < 10000) {
i = la + lb + 1;
c[la + lb + 1] = c[la + lb - 2] / 1000;
c[la + lb] = c[la + lb - 2] / 100 - 10 * c[la + lb + 1];
c[la + lb - 1] = c[la + lb - 2] % 100 / 10;
c[la + lb - 2] = c[la + lb - 2] %1000;
} else {
i = la + lb + 2;
c[la + lb + 2] = c[la + lb - 2] / 10000;
c[la + lb + 1] = c[la + lb - 2] % 10000 / 1000;
c[la + lb] = c[la + lb - 2] % 1000 / 100;
c[la + lb - 1] = c[la + lb - 2] % 100 / 10;
c[la + lb - 2] = c[la + lb - 2] % 10;
}
for (j = i; j >= 0; j = j - 1) printf("%d", c[j]);
printf("\n");
return 0;
}
总是少一个数 展开
#include <stdio.h>
#include <string.h>
int main() {
char a[1010], b[1010];
int al[1010]={0}, bl[1010]={0}, c[2010]={0};
int i, j, la, lb;
scanf("%s%s", a, b);
printf("%s * %s = ",a,b);
la = strlen(a);
lb = strlen(b);
for (i = 0; i < la; i = i + 1) al[la - 1 - i] = a[i] - '0';
for (i = 0; i < lb; i = i + 1) bl[lb - 1 - i] = b[i] - '0';
for (i = 0; i < la; i = i + 1) {
for (j = 0; j < lb; j = j + 1) {
c[i + j] = al[i] * bl[j] + c[i + j];
}
}
for (i = 0; i <= la + lb - 1; i = i + 1) {
c[i + 1] += c[i] / 10;
c[i] = c[i] % 10;
}
while(c[i]==0)i--;
for (j = i; j >= 0; j = j - 1) printf("%d", c[j]);
printf("\n");
getch();
return 0;
}
那我那个为什么在数大的时候总是少一位那?
你那个太烦了,实在看不懂。。。
不只是少一位吧,a,b,c数组都没有初始化
广告 您可能关注的内容 |