首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

教材内容修订之一

在教材下篇 / C程序设计训练 / 第一层次 / 程序填空 / 第15题的程序有错误,题目为:

15.函数void add(char add1[],char add2[],char sum[])模拟手工加法运算过程(低位对齐,从低位向高位逐位相加,满十进一)。其中参数add1和add2均保存数字字符串,分别作为第一加数、第二加数,sum以字符串形式保存加法和。例如字符串"9045"和"7916"经add函数处理后,得到字符串"16961";"50345"和"4178"经add函数处理后,得到字符串"54523"。程序如下:

#include

#include

void add(char add1[],char add2[],charsum[]){

intlen1,len2,len3;

inti,carry;

len1=strlen(add1);

len2=strlen(add2);

len3=len1

if(【1】)

for(i=len1;i>=0;i--){

add1[i+len2-len1]=add1[i];

add1[i]='0';

}

if(len1>len2)

for(i=len2;i>=0;i--){

add2[i+len1-len2]=add2[i];

add2[i]='0';

}

carry=0;

sum[len3]=0;

for(i=len3-1;i>=0;i--){

sum[i]=【2】

carry=sum[i]/10;sum[i]=sum[i]%10+'0';

}

if(carry!=0){

for(i=len3;i>=0;i--)

sum[i+1]=sum[i];

sum[0]=carry+'0';

}

}

int main(){

char add1[10]={"50345"},add2[10]={"4178"},sum[11];

add(add1,add2,sum);

puts(sum);

return0;

}

如果把主程序中的第1行改为:

char add1[10]={"5"},add2[10]={"4178"},sum[11];

则程序运行出现错误,因此修改程序如下。

#include

#include

void add(char add1[],char add2[],char sum[]){

int len1,len2,len3;

int i,carry;

len1=strlen(add1);

len2=strlen(add2);

len3=len1

if(【1】) {

for(i=len1;i>=0;--i)

add1[i+len2-len1]=add1[i];

for(i=0; i

add1[i]='0';

}

if(len1>len2) {

for(i=len2;i>=0;--i)

add2[i+len1-len2]=add2[i];

for(i=0; i

add2[i]='0';

}

carry=0;

sum[len3]=0;

for(i=len3-1;i>=0;--i){

sum[i]=【2】

carry=sum[i]/10;

sum[i]=sum[i]%10+'0';

}

if(carry!=0){

for(i=len3;i>=0;--i)

sum[i+1]=sum[i];

sum[0]=carry+'0';

}

}

int main(){

char add1[10]={"50345"},add2[10]={"4178"},sum[11];

add(add1,add2,sum);

puts(sum);

return 0;

}

感谢夏良丽老师发现问题,并及时告知。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180923G08RKC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券