1. /*
  2. 分三种情况:
  3. 1.减数长度大于被减数
  4. 交换减数与被减数,输出负号,方便减
  5. 2.减数长度等于被减数(分三种情况)
  6. a.减数大于被减数,类似1情况1
  7. b.减数等于被减数,两数相等,直接输出0,完成。
  8. c.减数小于被减数
  9. 3.减数长度小于被减数
  10. */
  11.  
  12. #include<stdio.h>
  13. #include<string.h>
  14. int main() {
  15. char ch1[], ch2[];
  16. int num1[], num2[], num[];
  17. int i, j, flag1 = , max, flag2 = ;
  18. scanf("%s", ch1);
  19. scanf("%s", ch2);
  20. max = strlen(ch1);
  21. if (strlen(ch1)<strlen(ch2)) {//减数长度大于被减数,必定为负数
  22. flag1 = -;
  23. max = strlen(ch2);
  24. printf("-");
  25. }
  26. if (strlen(ch1) == strlen(ch2))
  27. flag1 = ;//确定输入数字的长度比较结果。便于采用合理的运算方式
  28. for (i = ; i<max; i++) {//初始化
  29. num[i] = ;
  30. num1[i] = ;
  31. num2[i] = ;
  32. }
  33. for (i = strlen(ch1) - , j = ; i >= ; i--)
  34. num1[j++] = ch1[i] - '';//将字符数组元素所对应数字存入整形数组
  35. for (i = strlen(ch2) - , j = ; i >= ; i--)
  36. num2[j++] = ch2[i] - '';
  37. //分情况对数字进行减法运算
  38. if (flag1 == ) {//第三种情况
  39. for (i = ; i<strlen(ch1); i++) {
  40. num[i] = num1[i] - num2[i];
  41. if (num[i]<) {
  42. num[i] += ;
  43. num1[i + ]--;
  44. }
  45. }
  46. }
  47. else if (flag1 == ) {//第二种情况
  48. for (i = strlen(ch1) - ; i <= ; i--) {//循环结束的情况有两种 1.ch1[i]!=ch2[i] 2.遍历完数组中所有元素
  49. if (ch1[i] != ch2[i])
  50. break;
  51. }
  52. if (ch1[i]>ch2[i]) {//ch1[i]>ch2[i],自然相减
  53. for (i = ; i<strlen(ch1); i++) {
  54. num[i] = num1[i] - num2[i];
  55. if (num[i]<) {
  56. num[i] += ;
  57. num1[i + ]--;
  58. }
  59. }
  60. }
  61. else if (ch1[i] == ch2[i]) {//相等为0
  62. printf("");
  63. }
  64. else {//输出负号,交换减数被减数
  65. printf("-");
  66. for (i = ; i<strlen(ch1); i++) {
  67. num[i] = num2[i] - num1[i];
  68. if (num[i]<) {
  69. num[i] += ;
  70. num2[i + ]--;
  71. }
  72. }
  73. }
  74. }
  75.  
  76. else {//第一种情况
  77. for (i = ; i<strlen(ch2); i++) {
  78. num[i] = num2[i] - num1[i];
  79. if (num[i]<) {
  80. num[i] += ;
  81. num2[i + ]--;
  82. }
  83. }
  84. }
  85. for (i = max; i >= ; i--) {
  86. if (num[i] <= && flag2 == )
  87. continue;
  88. flag2 = ;
  89. printf("%d", num[i]);
  90. }
  91. return ;
  92.  
  93. }

大数四则运算之减法运算-----c语言版的更多相关文章

  1. libnode 0.4.0 发布,C++ 语言版的 Node.js

    libnode 0.4.0 支持 Windows ,提升了性能,libuv 更新到 0.10.17 版本,libj 更新到 0.8.2 版本. libnode 是 C++ 语言版的 Node.js,和 ...

  2. md5加密算法c语言版

    from: http://blog.sina.com.cn/s/blog_693de6100101kcu6.html 注:以下是md5加密算法c语言版(16/32位) ---------------- ...

  3. 基于gSOAP使用头文件的C语言版web service开发过程例子

    基于gSOAP使用头文件的C语言版web service开发过程例子 一服务端 1 打开VS2005,创建一个工程,命名为calcServer. 2 添加一个头文件calc.h,编辑内容如下: 1// ...

  4. Windows 8.1 with Update 镜像下载(增OEM单语言版)

    该系统已有更新的版本,请转至<Windows 8.1 with update 官方最新镜像汇总>下载. 2014年4月9日凌晨,微软向MSDN订阅用户开放了Windows 8.1 with ...

  5. 数据结构C语言版 有向图的十字链表存储表示和实现

    /*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h> ...

  6. 数据结构C语言版 表插入排序 静态表

    数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./*  数据结构C语言版 表插入排序  算法10.3 P267-P270  编译 ...

  7. 数据结构C语言版 弗洛伊德算法实现

    /* 数据结构C语言版 弗洛伊德算法  P191 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h>#include <limits.h> # ...

  8. VS2015如何新建C++或者C语言版的lib文件

    当我们不想公开我们的代码的时候,可以把我们的代码封装成静态数据连接库,即lib文件.下面介绍下如何生成lib文件. 以VS2015为例,一种是C++版的lib文件,一种是C语言版的lib文件. 一.按 ...

  9. hbase rest api接口链接管理【golang语言版】

    # go-hbase-resthbase rest api接口链接管理[golang语言版]关于hbase的rest接口的详细信息可以到官网查看[http://hbase.apache.org/boo ...

随机推荐

  1. redis 注意事项

    1.scan_iter car_key = 'shopping*' # print(car_key) data_li = [] for i in con.scan_iter(car_key): # p ...

  2. equals()和hashCode()必须同时覆盖的原因

    我们在用JAVA创建自己的类的时候,一种比较常见的覆盖就是覆盖Object中的equals()方法和hashCode()方法.如果不这样做的话,就很可能违反Object.hashCode()的通用约定 ...

  3. airtest启用本地python环境的方法

    实现目标,air如果想引用第三方python库,则需要在本地python欢迎执行运行 1.打开设置,红色箭头处,选择本地python路径 2.安装air的两个核心库airtest和pocoui 安装方 ...

  4. Centos7安装 Anaconda + jupyter notebook

    一.安装Anaconda 1 下载Anaconda安装脚本 为了避免漫长的等待,镜像源选择国内的清华镜像源,镜像源地址:https://mirrors.tuna.tsinghua.edu.cn/ana ...

  5. CSS-17-页面布局

    页面布局: 静态布局: 静态布局:元素不变的布局. 布局特点:缩小后内容被遮挡,拖动滚动条显示布局 设计方法: PC:居中布局,所有样式使用绝对宽度和高度 移动设备:另外建立移动网站,以m.域名为域名 ...

  6. PKU-3580 SuperMemo(Splay模板题)

    SuperMemo 题目链接 Your friend, Jackson is invited to a TV show called SuperMemo in which the participan ...

  7. CTF--HTTP服务--SQL注入POST参数-注入HTTP报文

    开门见山 1. 扫描靶机 2. 对靶机开放端口进行扫描 3. 扫描全部信息 4. 用nikto -host 探测敏感信息 5. 用dirb探测敏感目录 6. 打开一些目录探测出的网页进行查看 7. 再 ...

  8. Iptables和Firewall-selinux

    一.Iptables防火墙 ---------- **三表五链:**三表: filter过滤表 nat转换表 mangle表五链: PREROUTING--->在进行路由选择前处理数据包 INP ...

  9. Java基础知识之设计模式--单例模式

    Java设计模式--单例模式 声明:本文根据慕课网汤小洋老师的精品课程整理来的:慕课网 什么是设计模式(Design Pattern)? 设计模式是一套被反复使用,多数人知晓的,经过分类编目的,代码设 ...

  10. leetcode水题题解

    344. Reverse String Write a function that takes a string as input and returns the string reversed. E ...