帮我修改个 c语言 程序

来源:百度知道 编辑:UC知道 时间:2024/06/01 13:00:51
我是个初学者 正在编 c语言高精度加法
帮我改一下如下的高精度加法 程序 不要另外的! 只要在原代码上修改
急!!

另注:编译器 dev-c++

char a[100];
char b[100];

scanf("%s%s",&a,&b);
int m,n;
m=strlen(a);
n=strlen(b);

int k;

k=m-n;

if(k<0) k=-k;

char add[k];

int i;

if(m>n) {strcat(add,b);
for(i=0;i<strlen(add);i++)
b[i]=add[i];
}
else { strcat(add,a);
for(i=0;i<strlen(add);i++)
a[i]=add[i];}

char c[100];
int d[100];
int l;
for(l=0;l<=100;l++)
c[l]=a[l]+b[l];
for(l=0;l<=strlen(c);l++)
{c[l]=c[l]-48;
d[l]=c[l];}

int j;
for(j=0;j<=100;j++)

if(d[j]>=10) {d[j]=d[j]-10;d[j-1]=d[j-1]+1;}

int p;
for(p=0;p<=100;p++)

printf("%d",d[p]);
是一个一般的高精度加法题

输入两个大数
求相加后的结果

程序我帮你改了下半部分
首先 不改你的程序是不可能实现的了 你还没了解ASII码的转换
像你这样c[l]=a[l]+b[l];
c[l]=c[l]-48;
也减不对的 要减48×2 还要判断每一位加起来是不是大于10 所以说不改是不可能的了
现在我做的可以运行正确了 你仔细看看 应该可以看懂的

#include<stdio.h>
#include <string.h>
void main()
{
char a[100];
char b[100];
char add[100];
int k,m,n,i,j,p,x,y,temp,q;
scanf("%s%s",&a,&b);

m=strlen(a);
n=strlen(b);
k=m-n;
if(k<0)
k=-k;
for(i=99;i>=k;i--)
add[i]='\0';
if(m>=n)
{
x=m;
y=n;
}
else
{
x=n;
y=m;
}
if(m!=n)
for(i=x-1;i>=k;i--)
{
temp=(a[i]+b[y-1])-48*2;
y--;
if(temp>10)
{
a[i-1]=a[i-1]+1;
a[i]=temp%10+48;
}
else
a[i]=temp+48;
}
else
for(i=m-1;i>=0;i--)
{
temp=(a[i]+b[i])-2*48;
if(temp>=10)
{
a[i]=temp%10+48;
if(i==0)