大数相加求修改
发布网友
发布时间:2022-04-22 22:05
我来回答
共1个回答
热心网友
时间:2023-07-12 20:40
你写的存在很多问题,改了一下发现面目全非;
可以参考一下我写的
主要是看思想,你的程序k的值应该好好考虑,还有每次的进位没考虑!s3的位数也没考虑清楚
#include<stdio.h>
#include<string.h>
int main(){
char a[1005],b[1005];
int c[1005];
int N,cnt=0,i;
scanf("%s%s",a,b);
int len1,len2,length,x1,x2,pos=0;
len1=strlen(a);
len2=strlen(b);
while(len1>0&&len2>0){
x1=a[len1-1]-'0';//字符转换为数字
x2=b[len2-1]-'0';
//printf("x1 = %d x2 = %d\n",x1,x2);
if(x1+x2+pos>=10)
{
c[cnt++]=x1+x2+pos-10;
pos=1;//大于10用pos记下
//cout<<"1__"<<c[cnt-1]<<endl;
}
else
{
c[cnt++]=x1+x2+pos;
//cout<<"2__"<<c[cnt-1]<<endl;
pos=0;
}
len1--;
len2--;
}
if(len1>len2){
while(len1>0){
c[cnt++]=a[len1-1]-'0'+pos;
//cout<<"3__"<<c[cnt-1]<<endl;
pos=0;
len1--;
}
}
if(len1<len2)
{
while(len2>0){
c[cnt++]=pos+b[len2-1]-'0';
//cout<<"4__"<<c[cnt-1]<<endl;
pos=0;
len2--;
}
}
if(len1==len2){
if(pos==1)
c[cnt++]=1;
}
if(i==1){//任意两组数中间有空格
printf("%s + %s = ",a,b);
for(int k=cnt-1;k>=0;k--)
printf("%d",c[k]);
printf("\n");
}
else
{
//printf("\nCase %d:\n",i);
printf("%s + %s = ",a,b);
for(int k=cnt-1;k>=0;k--)
printf("%d",c[k]);
printf("\n");
}
return 0;
}