博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大数加减1——将两个数均前后倒置,以对齐最低位
阅读量:4843 次
发布时间:2019-06-11

本文共 2302 字,大约阅读时间需要 7 分钟。

#include 
//将读入的数据存储到num[1]~num[x]中,num[0]表示存入数据的长度。void read(int num[]){ int i; char ch; for (i = 0; i<500; i++) num[i] = 0; i = 1; while ((ch = getchar()) != '\n') { num[i] = ch - '0'; i++; num[0]++; }}//将数据num[]中的数翻转,以便计算void rev(int num[]){ int i, t; for (i = 1; i <= num[0] / 2;i++) { t = num[i]; num[i] = num[num[0] + 1 - i]; num[num[0] + 1 - i] = t; }}void print(int num[]){ char character[11] = { "0123456789-" };//character[n]表示数字n的字符形式。character[10]='-'用于输出减法结果中的负号。 int i; for (i = 1; i <= num[0]; i++) printf("%c", character[num[i]]); printf("\n");}//将a[]和b[]的值相加,存储于sum[]中。void add(int sum[], int a[], int b[]){ //flag为进位标志位。 int i, flag = 0; rev(a); rev(b); for (i = 1; i <= a[0] || i <= b[0]; i++) sum[i] = a[i] + b[i]; if (a[0] > b[0]) sum[0] = a[0]; else sum[0] = b[0]; for (i = 1; i <= sum[0]; i++) { sum[i] += flag; if (sum[i] > 9) { sum[i] = sum[i] % 10; flag = 1; } else flag = 0; } if (1 == flag) { sum[0] += 1; sum[i] = 1; } rev(sum); rev(a);//加法运算完之后,再将a,b翻转回来。 rev(b);}void sub(int rst[], int a[], int b[]){ int i; int flag = 0;//flag为借位标志位。 rev(a); rev(b); for (i = 1; i <= a[0] || i <= b[0]; i++) rst[i] = a[i] - b[i]; if (a[0] > b[0]) rst[0] = a[0]; else rst[0] = b[0]; for (i = 1; i <= rst[0]; i++) { rst[i] += flag; if (rst[i] < 0) { flag = -1; rst[i] += 10; } else flag = 0; } if (-1 == flag) { //此时,flag=-1表示a-b<0,故转换为求b-a。需要先将a,b翻转为原始数据 rev(a); rev(b); sub(rst,b,a); //进行sub运算后,a,b,rst均为正常形式,需要将其翻转后,再添加负号。 rev(rst); rev(a); rev(b); //在结果的最高位增加字符‘-’ rst[0]++; rst[rst[0]] = 10;//如果某位为10,则输出时该位为“-”; } rev(rst); rev(a); rev(b);}int main(){ int a[500], b[500], he[500], cha[500]; printf("Input a:"); read(a); printf("Input b:"); read(b); add(he, a, b); sub(cha, a, b); print(he); print(cha); return 0;}

转载于:https://www.cnblogs.com/Camilo/p/3831688.html

你可能感兴趣的文章
JS-基础-01.变量、基本数据类型
查看>>
iOS ---------NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)
查看>>
命名空间“System.Web”中不存在类型或命名空间名称“Optimization”(是否缺少程序集引用?)...
查看>>
Python异常 --Python
查看>>
Struts数据验证
查看>>
第十二章 动态内存
查看>>
句柄1
查看>>
vb.net入门+vs2010(20180208)
查看>>
一般jsp 翻页 选择 保留 代码
查看>>
操作系统环境变量LANG和NLS_LANG的关系
查看>>
存储过程简单Demo
查看>>
查看oracle实例名
查看>>
java hasmap对象的深复制实现:字节码复制和对象序列化成字符串复制比较。
查看>>
非一般的数据挖掘机:关联规则法
查看>>
粗糙的贝叶斯转化概率预测模型
查看>>
【随笔】8月14日
查看>>
Spring支持的@Transactional声明式事务管理的功能
查看>>
雷林鹏分享:jQuery EasyUI 表单 - 格式化下拉框
查看>>
导出excel失败,提醒提示加载类型库/DDL出错
查看>>
.NET基础架构方法—DataTableToExcel通用方法
查看>>