发布网友 发布时间:2024-10-18 19:33
共1个回答
热心网友 时间:2024-11-07 06:22
怎么老要给你编写完整程序嘛,我没环境,测试不了,给你说一下思路吧。
void add30(char a30[],char b30[],char *sum30){
/*为了实现个位对齐,需要进行数组逆转*/
char a[30],b[30],s[30];
int i,j,k,x;
/*初始化*/
for (i=0;i<30;i++) a[i]=b[i]=s[i]='0';
/*逆转a30到a*/
j=0;
i=strlen(a30);
while(i>=0) a[j++]=a30[i--];
/*逆转b30到b*/
j=0;
i=strlen(b30);
while(i>=0) b[j++]=b30[i--];
/*下面开始计算结果,存入s,变量k为进位数*/
k=0;
for (i=0;i<30;i++)
{x=a[i]-'0'+ (b[i]-'0') + k;
if (x>9) {k=1;x-=10;}
else {k=0;}
s[i]='0'+x;
}
/*把结果s中最后面的'0'变为'\0'*/
i=29;
while(i>=0 && s[i]=='0'){s[i]='\0';i--;}
/*在把s逆转到结果sum30中即可*/
j=0;
i=strlen(s);
while(i>=0) sum30[j++]=s[i--];
}
/*减法的你自己做哈,我相信你能行的,先把我这个看懂*/
main(){
char a[30],b[30],s[30];
printf("请输入30位以内的数a=");scanf("%s",a);
printf("请输入30位以内的数b=");scanf("%s",b);
add30(a,b,s);
printf("a+b=%s",s);
}
可惜我没有环境,我写了这么长时间,我也希望能看到结果。