大数四则运算之减法运算-----c语言版
/*
分三种情况:
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 ; }
大数四则运算之减法运算-----c语言版的更多相关文章
- libnode 0.4.0 发布,C++ 语言版的 Node.js
libnode 0.4.0 支持 Windows ,提升了性能,libuv 更新到 0.10.17 版本,libj 更新到 0.8.2 版本. libnode 是 C++ 语言版的 Node.js,和 ...
- md5加密算法c语言版
from: http://blog.sina.com.cn/s/blog_693de6100101kcu6.html 注:以下是md5加密算法c语言版(16/32位) ---------------- ...
- 基于gSOAP使用头文件的C语言版web service开发过程例子
基于gSOAP使用头文件的C语言版web service开发过程例子 一服务端 1 打开VS2005,创建一个工程,命名为calcServer. 2 添加一个头文件calc.h,编辑内容如下: 1// ...
- Windows 8.1 with Update 镜像下载(增OEM单语言版)
该系统已有更新的版本,请转至<Windows 8.1 with update 官方最新镜像汇总>下载. 2014年4月9日凌晨,微软向MSDN订阅用户开放了Windows 8.1 with ...
- 数据结构C语言版 有向图的十字链表存储表示和实现
/*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h> ...
- 数据结构C语言版 表插入排序 静态表
数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./* 数据结构C语言版 表插入排序 算法10.3 P267-P270 编译 ...
- 数据结构C语言版 弗洛伊德算法实现
/* 数据结构C语言版 弗洛伊德算法 P191 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h>#include <limits.h> # ...
- VS2015如何新建C++或者C语言版的lib文件
当我们不想公开我们的代码的时候,可以把我们的代码封装成静态数据连接库,即lib文件.下面介绍下如何生成lib文件. 以VS2015为例,一种是C++版的lib文件,一种是C语言版的lib文件. 一.按 ...
- hbase rest api接口链接管理【golang语言版】
# go-hbase-resthbase rest api接口链接管理[golang语言版]关于hbase的rest接口的详细信息可以到官网查看[http://hbase.apache.org/boo ...
随机推荐
- MySQL多表联查以及以及架构
多表之间关联查询: 据库操作中,多表联合查询是后台开发者常用到的查询语句. JOIN SQL JOIN 子句用于把来自两个或多个表的行结合起来,最常见的 JOIN 类型:SQL INNER ...
- 高通量计算框架HTCondor(三)——使用命令
目录 1. 目录 2. 进程 3. 命令 3.1. condor_q 3.2. condor_status 3.3. conodr_submit 3.4. conodr_rm 4. 相关 1. 目录 ...
- Python 练习实例100 | 菜鸟教程
http://www.runoob.com/python/python-exercise-example100.html
- Xen+OpenQRM快速部署
一.选择系统平台 a) Ubuntu-11.10-server-amd64 二.Xen安装 a) Xen安装 # apt-get -y install xen-hypervisor-4.1-a ...
- 从maven安装配置到idea成功创建maven项目
在文章开始之前,我还是想安抚下你躁动的心情,说实话这一套操作下来的确花了我不少时间,的确头疼. 不过对于现在在看文章的你,我还是想提倡多多尝试,耐心哈,别砸键盘......废话少说切入正题 一. ma ...
- 分享一下我在mysql5.6+mysql8数据库安装过程中的一些坑!
Mysql5.6安装 下载好安装包后,在bin目录下用cmd打开,输入mysqld install [服务名]新建个服务 在windows+r输入services.msc即可查看服务 怎样使用mysq ...
- libc.so.6修改链接指向后导致系统无法使用的原因及解决方法
https://www.cnblogs.com/weijing24/p/5890031.html http://man.linuxde.net/ldconfig
- js---描述链表
js描述链表 有些情况下js的数组结构在实际使用中速度很慢,此时可以考虑用链表来代替它: //链表类 function Node(element){ this.element=element; thi ...
- 小白学Java:RandomAccessFile
目录 小白学Java:RandomAccessFile 概述 继承与实现 构造器 模式设置 文件指针 操作数据 读取数据 read(byte b[])与read() 追加数据 插入数据 小白学Java ...
- SVN : 在SVN检测下来的Maven项目没有Maven标志
在Ecplise使用import->从SVN检出项目, 检出的项目没有了 Maven标志 解决方案 右键点击项目->configure->Convert to Maven Proje ...