大数四则运算之减法运算-----c语言版
/* 分三种情况: 1.减数长度大于被减数 交换减数与被减数,输出负号,方便减 2.减数长度等于被减数(分三种情况) a.减数大于被减数,类似1情况1 b.减数等于被减数,两数相等,直接输出0,完成。 c.减数小于被减数 3.减数长度小于被减数 */ #include<stdio.h> #include<string.h> int main() { char ch1[1000], ch2[1000]; int num1[1000], num2[1000], num[1000]; int i, j, flag1 = 1, max, flag2 = 0; scanf("%s", ch1); scanf("%s", ch2); max = strlen(ch1); if (strlen(ch1)<strlen(ch2)) {//减数长度大于被减数,必定为负数 flag1 = -1; max = strlen(ch2); printf("-"); } if (strlen(ch1) == strlen(ch2)) flag1 = 0;//确定输入数字的长度比较结果。便于采用合理的运算方式 for (i = 0; i<max; i++) {//初始化 num[i] = 0; num1[i] = 0; num2[i] = 0; } for (i = strlen(ch1) - 1, j = 0; i >= 0; i--) num1[j++] = ch1[i] - '0';//将字符数组元素所对应数字存入整形数组 for (i = strlen(ch2) - 1, j = 0; i >= 0; i--) num2[j++] = ch2[i] - '0'; //分情况对数字进行减法运算 if (flag1 == 1) {//第三种情况 for (i = 0; i<strlen(ch1); i++) { num[i] = num1[i] - num2[i]; if (num[i]<0) { num[i] += 10; num1[i + 1]--; } } } else if (flag1 == 0) {//第二种情况 for (i = strlen(ch1) - 1; i <= 0; i--) {//循环结束的情况有两种 1.ch1[i]!=ch2[i] 2.遍历完数组中所有元素 if (ch1[i] != ch2[i]) break; } if (ch1[i]>ch2[i]) {//ch1[i]>ch2[i],自然相减 for (i = 0; i<strlen(ch1); i++) { num[i] = num1[i] - num2[i]; if (num[i]<0) { num[i] += 10; num1[i + 1]--; } } } else if (ch1[i] == ch2[i]) {//相等为0 printf("0"); } else {//输出负号,交换减数被减数 printf("-"); for (i = 0; i<strlen(ch1); i++) { num[i] = num2[i] - num1[i]; if (num[i]<0) { num[i] += 10; num2[i + 1]--; } } } } else {//第一种情况 for (i = 0; i<strlen(ch2); i++) { num[i] = num2[i] - num1[i]; if (num[i]<0) { num[i] += 10; num2[i + 1]--; } } } for (i = max; i >= 0; i--) { if (num[i] <= 0 && flag2 == 0) continue; flag2 = 1; printf("%d", num[i]); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了