c语言怎么进行大整数加法,c语言 大整数加法
2013-12-07 回答
以前我也做过一个大整数程序,2000!,不过那里面没有减法。做这个减法真让花时间啊。
#include
#include
#include
#define max 4000/*数位上限*/
dd(char *a)
{
char t[max];
int i,j;
for(i=0;i {
if(a[i]==null)
{
for(j=0;i>0;j++,i--)
{
t[j]=a[i-1];
}
strncpy(a,t,j);
break;
}
}
}
add1(char *a,char *b,int n,char *c)
{
int n;
if(*a!=null&&*b!=null)
n=*a-'0'+*b-'0'+n;
else if(*a==null&&*b!=null)
n=*b-'0'+n;
else if(*a!=null&&*b==null)
n=*a-'0'+n;
else
n=n;
*c=(n%10)+'0';
n=n/10;
if(*(a+1)!=null||*(b+1)!=null||n!=0)
{
add1(a+1,b+1,n,c+1);
}
}
addab(char *a,char *b,char *c)
{
dd(a);
dd(b);
dd(c);
add1(a,b,0,c);
dd(a);
dd(b);
dd(c);
}
d_(char *a)
{
int i;
for(i=0;a[i]!=null;i++)
{
a[i]=a[i+1];
}
}
udg1(char *a,char *b,int n,char *c)
{
int n;
if(*b==null)
{
n=*a-'0'-n;
n=0;
}
else
{
if(*a>=(*b+n))
{
n=*a-*b-n;
n=0;
}
else
{
n=*a+10-*b-n;
n=1;
}
}
*c=n+'0';
if(*(a+1)!=null)
udg1(a+1,b+1,n,c+1);
}
udg(char *a,char *b,char *c)
{
int i;
if((strcmp(a,b)>0&&strlen(a)==strlen(b))||strlen(a)>strlen(b))
i=1;
else if((strcmp(a,b)<0&&strlen(a)==strlen(b))||strlen(b)>strlen(a))
i=-1;
else
i=0;
dd(a);
dd(b);
dd(c);
if(i==1)
udg1(a,b,0,c);
else if(i==-1)
{
udg1(b,a,0,c);
for(i=0;i {
if(c[i]==null)
{
c[i]='-';
break;
}
}
}
else
*c='0';
dd(a);
dd(b);
dd(c);
}
add_(char *c)
{
int i;
char t1,t2;
t1=c[0];
t2=c[1];
c[0]='-';
for(i=1;t1!='\0';i++)
{
c[i]=t1;
t1=t2;
t2=c[i+1];
}
}
main()
{
char a[max]={null},b[max]={null},c[max]={null};
printf("输入两个数:\n");
scanf("%s",a);
getchar();
scanf("%s",b);
getchar();
if(a[0]!='-'&&b[0]!='-')
{
addab(a,b,c);
}
else
{
if(a[0]=='-'&&b[0]!='-')
{
d_(a);
udg(b,a,c);
}
else if(a[0]!='-'&&b[0]=='-')
{
d_(b);
udg(a,b,c);
}
else
{
d_(b);
d_(a);
addab(a,b,c);
add_(c);
}
}
printf("%s\n",c);
getchar();
}
c语言怎么进行大整数加法,c语言 大整数加法相关推荐
- C语言入门,编写程序,输出两个整数中的较大值。
#include <stdio.h> // 定义函数,求两个整数中的较大值 int max(int x, int y) { int z; /*说明变量 */if(x > y) z = ...
- 大整数乘法---C语言实现
一.前言 如上 二.内容 在科学计算中,无法计算非常大的整数,于是就有大整数乘法问题. (int存放4字节,float-已有的数据类型数据范围有限),硬件无法实现,只能靠软件(代码)实现了. 三.代码 ...
- c语言无符号扩展,深入理解计算机系统(2.4)---C语言的有符号与无符号、二进制整数的扩展与截断...
开篇请各位猿友允许LZ啰嗦几句,最近一直在写计算机系统原理这系列文章,也已经下定决心要把这本书的内容写完.主要目的其实是为了巩固LZ的理解,另外也想把这些内容分享给猿友们,毕竟LZ觉得这些内容对程序猿 ...
- 语言取10的整数倍_C语言结构体用法很多,坑也很多
C语言可谓是编程界的传奇语言,历经几十年,依然排名前列. 前不久还写了一篇文章<2019年11月C语言接近Java>,说了C语言是比较受欢迎的一种语言,有望在年底超过JAVA,再次成为第一 ...
- 怎样用才c语言定义一个三位数,怎样编写一个c语言程序计算任意输入一个3位数的整数的各位数字之和。要求主函数包括输入输出和调用该函数。...
点击查看怎样编写一个c语言程序计算任意输入一个3位数的整数的各位数字之和.要求主函数包括输入输出和调用该函数.具体信息 答:#include void main(){ int a,sum=0; pri ...
- PTA 基础编程题目集 7-33 有理数加法 C语言
PTA 基础编程题目集 7-33 有理数加法 C语言 本题要求编写程序,计算两个有理数的和. 输入格式: 输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范 ...
- C语言结构联合位字段知识体系总结大学霸IT达人
C语言结构联合位字段知识体系总结大学霸IT达人 C语言的基础类型中只能去定义单一类型的变量用于指代数据,但在现实生活中我们常常要处理的数据却会包含多种类型的数据. 例如,公司员工的信息管理,每个员工的 ...
- Python 是怎么火起来的? 转载 2018年01月12日 00:00:00 133 图:Python 之父 Guido 正在设计 Python 语言,结果家里突然潜入一条大蟒蛇,一番激烈斗争,大
Python 是怎么火起来的? 转载 2018年01月12日 00:00:00 133 图:Python 之父 Guido 正在设计 Python 语言,结果家里突然潜入一条大蟒蛇,一番激烈斗争,大蟒 ...
- 大数据场景中语言虚拟机的应用和挑战
点击上方蓝字关注我们 大数据场景中语言虚拟机的应用和挑战 吴明瑜1,2, 陈海波1,2, 臧斌宇1,2 1 领域操作系统教育部工程研究中心,上海 200240 2 上海交通大学软件学院并行与分布式系统 ...
- python整数池_对Python中小整数对象池和大整数对象池的使用详解
1. 小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提 ...
最新文章
- linux命令行大全 笔记,分享|4 个 Linux 下的命令行笔记程序
- JAVA中类的访问修饰符的作用范围
- jinja2 {{}} href 双大括号
- mybatis的Example[Criteria]的使用
- 手机系统安装打印机服务器错误代码,OKI打印机报错?各型号代码故障解决方法...
- python-列表包字典-根据字典的某一个键的值来进行排序
- 微信小程序|开发实战篇之八-list列表组件及其子组件
- mysql InnoDb存储引擎索引
- Illumina联手IBM Watson Health解读癌症基因谱
- python有趣小程序-第一个有趣的python小程序
- tensorflow实现对彩色图像的均值滤波
- DHTML【3】--HTML
- 动画图解:十大经典排序算法动画与解析,看我就够了!(配代码完全版)
- 记一次勒索病毒攻击事件的处理过程
- ionic 实时调试android手机
- jquery实现返回顶部功能
- OSG笔记一:在Win7、VS2010下配置OSG3.4
- 苹果手机解压缩软件_360压缩大师360 推出的免费 macOS 解压缩软件
- java 双屏显示_程序员,你双屏了吗?
- SAP ERP数据表清单
热门文章
- NATURAL LANGUAGE INFERENCE OVER INTERACTION SPACE
- 【译】颜色空间 REC.709 vs sRGB的
- OpenAI 的外包数据标注员,时薪不足2美元,称工作是“精神创伤”
- 【闪电侠学netty】第4章 服务端启动流程
- Vnode-Vdom-diff算法
- 分布式存储 分布式处理 古老概念随想
- Docker安装及修改镜像仓库地址
- java.lang.NoClassDefFoundError: net/sf/ehcache/CacheManager
- 公务员笔试之三段论解题技巧
- U盘刻录14.10镜像出问题的解决方法