概述
题目描述:
Description
龙龙觉得之前的二进制加法可能对你来说太简单了,正好你也学完了“字符串处理”专题,那么就来考验一下你对大数加法的熟练程度吧?下面举一个实数加法运算的实例:2.01
+ 1.0
-------
3.01
请你模拟这个过程。Input
第一行输入一个实数 a 表示加数,第二行输入一个实数 b 表示被加数,保证输入实数的长度 |a| , |b| ≤1000,而且 a 和 b 非负,可能会有前导零和后导零出现。Output
请模拟实数加法,按题目描述的格式输出正确的运算结果,注意换行,没有多余的空格和换行。Hint
前后导零:略
输出格式:略
前置代码如下:
#include <stdio.h>
#include <string.h>
#define N 1010
char a[N],b[N],result[N];
char a1[N],b1[N],a2[N],b2[N],result1[N],result2[N];
int carry=0; //carry表示进位
int main() {
scanf("%s",&a);
scanf("%s",&b);
int a_dot,b_dot;
//a_dot和b_dot的含义记录小数点在第几位
其中,字符串a和b分别是两个加数,result是两个数相加的结果。
a1、b1、result1是整数部分,a2、b2、result2是小数部分。
整体思路如下:
第一步,读入a和b;
第二步,找到小数点;
第三步,以小数点为分界拆分为整数部分和小数部分,并且分别存储在a1、a2,b1、b2中;
第四步,分别计算两部分的和,并且存储在result1和result2中;
第五步,按格式输出。
使用这个思路,关键就是①判断有无小数点 ②小数点在哪里 ③输出格式
代码的每一步都要围绕“有没有小数点”进行分情况讨论!!
第二步和第三步可以一起写,以a为例:
//判断a是否存在小数点,并且拆分为整数部分a1和小数部分a2
int k;
//k用来遍历字符串a
if ( strstr(a,".") ) {
//有小数点的情况
k=0;
//获得a1
while ( a[k] != '.' ) {
a1[k] = a[k];
k++;
}
a1[k] = '