文章

2

粉丝

133

获赞

1

访问

9.4k

头像
大整数a+b
P1398 华中科技大学
发布于2022年2月22日 19:05
阅读数 4.8k

算法思想

由于整型变量无法表示位数接近1000位的数,故操作数无法用整型变量存储而直接进行加法运算。

将操作数以字符串的形式存储下来,编写代码自行实现一个加法器。

算法思路

  1. 获取两个操作数字符串a,b;
  2. 将两个操作数按照最低位对齐,模拟手动加法计算过程:
    1. 设置进位变量CF,置初值为0;设置字符数组r[1002],存储运算结果。
    2. 从个位开始,获取a,b对应位的数字,与CF一同相加,得到本位结果,存入r中(从0位开始顺序存储),更新进位标志。若此时CF=1或两操作数都未遍历完最高位,再对前一位进行相同的计算,否则执行3。
    3. 若有操作数未遍历完最高位,则从最高位开始逐个输出未参与计算的数位。
    4. 输出r中存储的剩下的运算结果(倒序输出)。

C语言函数运用相关细节

在解题开头获取字符串输入时,关于C语言字符串输入各个函数的使用规则有点记不清了,这里归纳整理一下:

  • scanf("%s",a);     遇到空白符(空格、制表符、回车符)自动结束,会在其后自动加上结束符'\0'
  • gets(a);    遇到换行符结束,换行符被读入并转换为结束符'\0'
  • fgets(a,1001,stdin);    遇到换行符结束,会将换行符存入数组(当成正文内容),并在其后自动加上结束符'\0'(函数将保证结束符'\0'一定存储在数组范围内)

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发