/*
分三种情况:
1.减数长度大于被减数
交换减数与被减数,输出负号,方便减
2.减数长度等于被减数(分三种情况)
a.减数大于被减数,类似1情况1
b.减数等于被减数,两数相等,直接输出0,完成。
c.减数小于被减数
3.减数长度小于被减数
*/ #include<stdio.h>
#include<string.h>
int main() {
char ch1[], ch2[];
int num1[], num2[], num[];
int i, j, flag1 = , max, flag2 = ;
scanf("%s", ch1);
scanf("%s", ch2);
max = strlen(ch1);
if (strlen(ch1)<strlen(ch2)) {//减数长度大于被减数,必定为负数
flag1 = -;
max = strlen(ch2);
printf("-");
}
if (strlen(ch1) == strlen(ch2))
flag1 = ;//确定输入数字的长度比较结果。便于采用合理的运算方式
for (i = ; i<max; i++) {//初始化
num[i] = ;
num1[i] = ;
num2[i] = ;
}
for (i = strlen(ch1) - , j = ; i >= ; i--)
num1[j++] = ch1[i] - '';//将字符数组元素所对应数字存入整形数组
for (i = strlen(ch2) - , j = ; i >= ; i--)
num2[j++] = ch2[i] - '';
//分情况对数字进行减法运算
if (flag1 == ) {//第三种情况
for (i = ; i<strlen(ch1); i++) {
num[i] = num1[i] - num2[i];
if (num[i]<) {
num[i] += ;
num1[i + ]--;
}
}
}
else if (flag1 == ) {//第二种情况
for (i = strlen(ch1) - ; i <= ; i--) {//循环结束的情况有两种 1.ch1[i]!=ch2[i] 2.遍历完数组中所有元素
if (ch1[i] != ch2[i])
break;
}
if (ch1[i]>ch2[i]) {//ch1[i]>ch2[i],自然相减
for (i = ; i<strlen(ch1); i++) {
num[i] = num1[i] - num2[i];
if (num[i]<) {
num[i] += ;
num1[i + ]--;
}
}
}
else if (ch1[i] == ch2[i]) {//相等为0
printf("");
}
else {//输出负号,交换减数被减数
printf("-");
for (i = ; i<strlen(ch1); i++) {
num[i] = num2[i] - num1[i];
if (num[i]<) {
num[i] += ;
num2[i + ]--;
}
}
}
} else {//第一种情况
for (i = ; i<strlen(ch2); i++) {
num[i] = num2[i] - num1[i];
if (num[i]<) {
num[i] += ;
num2[i + ]--;
}
}
}
for (i = max; i >= ; i--) {
if (num[i] <= && flag2 == )
continue;
flag2 = ;
printf("%d", num[i]);
}
return ; }

最新文章

  1. 转载--PayPal高级工程总监:读完这100篇论文 就能成大数据高手
  2. java web学习之表单
  3. LINUX内核笔记:自旋锁
  4. Python成长笔记 - 基础篇 (一)python简介
  5. Dynamic CRM 2013学习笔记(十五)报表设计:报表入门、开发工具及注意事项
  6. Android笔记:Socket客户端收发数据
  7. webssh software
  8. Android模拟器配置选项说明
  9. [转]回答--python django学的很迷茫怎么办?
  10. oracle数据库常用操作命令
  11. Python爬虫入门:爬虫基础了解
  12. LeetCode题型分类及索引
  13. Python学习之list有序集合
  14. 类似Jquery ui 标签页(Tabs)
  15. 2016221 Java第二周学习补充
  16. WEBBASE篇: 第九篇, JavaScript知识4
  17. 如何更优雅的在kubernetes平台下记录日志
  18. CSS 列表实例
  19. [leetcode-897-Increasing Order Search Tree]
  20. POJ 2236:Wireless Network(并查集)

热门文章

  1. GitHub进阶之利用Git远程仓库篇
  2. Nginx代理服务——反向代理
  3. path_info和get_full_path()的区别
  4. CQOI十二省联考游记
  5. c#数字图像处理(二)彩色图像灰度化,灰度图像二值化
  6. 文件上传三:base64编码上传
  7. [ZJOI2007]报表统计(splay,堆)
  8. 了解人工智能?-百度AI
  9. 基于spring cloud OAuth2的微服务授权验证服务搭建的一些坑, 包括401,client_secret,invalid_scope等问题
  10. oracle11G 已开启监听,但远程连接依旧无监听解决过程