大整数a+b
算法思想
由于整型变量无法表示位数接近1000位的数,故操作数无法用整型变量存储而直接进行加法运算。
将操作数以字符串的形式存储下来,编写代码自行实现一个加法器。
算法思路
- 获取两个操作数字符串a,b;
- 将两个操作数按照最低位对齐,模拟手动加法计算过程:
- 设置进位变量CF,置初值为0;设置字符数组r[1002],存储运算结果。
- 从个位开始,获取a,b对应位的数字,与CF一同相加,得到本位结果,存入r中(从0位开始顺序存储),更新进位标志。若此时CF=1或两操作数都未遍历完最高位,再对前一位进行相同的计算,否则执行3。
- 若有操作数未遍历完最高位,则从最高位开始逐个输出未参与计算的数位。
- 输出r中存储的剩下的运算结果(倒序输出)。
C语言函数运用相关细节
在解题开头获取字符串输入时,关于C语言字符串输入各个函数的使用规则有点记不清了,这里归纳整理一下:
- scanf("%s",a); 遇到空白符(空格、制表符、回车符)自动结束,会在其后自动加上结束符'\0'
- gets(a); 遇到换行符结束,换行符被读入并转换为结束符'\0'
- fgets(a,1001,stdin); 遇到换行符结束,会将换行符存入数组(当成正文内容),并在其后自动加上结束符'\0'(函数将保证结束符'\0'一定存储在数组范围内)
登录后发布评论
暂无评论,来抢沙发