#|整数的大数加减

萌新的整数大数加减 大致思路:

  1. 数据输入将数据存入字符数组 运算符号存入字符。
  2. 整数正负判断使用strlen()函数将两组字符串长度存入整形变量len,之后判断数据是否为负,是则长度减一并且使用一整型变量存储正负数据。
  3. 数据类型转换倒叙将字符数组转为整型数组。
  4. 判断运算类型#|整数的大数加减
    文章图片

  5. 输出符号判断
    #|整数的大数加减
    文章图片

  6. 数据运算加法运算直接模拟竖式计算;减法运算使被减数在两组数据最高位后一位补一,再相减(如456-789转换为1456-789=0667),如果最高位后一位为1直接输出,否则(即为0)使最高位为1其余为0减去结果(1000-0667=333)。
  7. 输出运算结果找到第一个不为0的数开始输出,全0则输出0。
分割线
【#|整数的大数加减】2018.10.30 代码有点bug,应该是第43行没处理好,懒得改了
#include #include #include #include #include using namespace std; char str1[1010],str2[1010]; int v1[1010],v2[1010],range=1000+1; //range为计算位数+1void add(int len)//加法运算 { int i; for(i=range-1; i>=len; i--)//倒叙相加逢十进一 { v1[i]+=v2[i]; if(v1[i]>9) { v1[i]-=10; v1[i-1]++; } } if(v1[len-1]!=0)printf("%d",v1[len-1]); //判断最高位下一位是否为0 for(i=len; i0为正 =0为0 <0为负 if(v1[len]==v2[len])//判断数据结果是否为负或0 { for(i=len+1; i=len; i--)//相减结果存入v1 { v1[i]-=v2[i]; if(v1[i]<0) { v1[i]+=10; v1[i-1]--; } } if(v1[len-1]==1)//最高位前一位未被借位 { for(i=len; i=len; i--) { v2[i]-=v1[i]; if(v2[i]<0) { v2[i]+=10; v2[i-1]--; } } for(i=len; i

    推荐阅读