C语言大数运算-大数运算库篇
前言 :
通过前面的3篇文章我们已经实现了大数的四则运算,本篇博客我们会把这是几个个方法做成一个库文件,可以供自己日后使用。细心的读者可能意到了,每个程序都引用了big.h但是都被注释掉了。big.h就是头文件只要将函数的声明放到该文件中,然后在其它程序中引用该文件就可以使用大数运算的方法。重复的代码我就不再写了,其实有了算法你们自己就可以实现,所以我就简单的说几句。
文件命名:
头文件: big.h 源码在本篇
大数加法:big_add.c 完整源码在加法篇
大数减法:big_sub.c 完整源码在减法篇
大数乘法:big_mul.c 完整源码在乘除法篇
大数除法:big_div.c 完整源码在乘除法篇
测试文件:main.c 源码在本篇
实现:
1.将每个源码文件中的main函数去掉,将big.h注释取消。
2.编写big.h代码如下。
1 char * bigadd(char *adda,int lena,char *addb,int lenb);2 char * bigsub(char *suba,int lena,char *subb,int lenb);3 char * bigmul(char *m,int lena,char *f,int lenb);4 char * bigdiv(char *diva,int lena,char *divb,int lenb);
3.编写一个测式的文件,代码如下。
1 #include"big.h"2 #include<string.h>3 #include<stdlib.h>4 #include<stdio.h>5 int lena,lenb;6 char *result;7 char sa[BUFSIZ],sb[BUFSIZ];8 void getdata(){9 scanf("%s",sa);10 scanf("%s",sb);11 lena=strlen(sa);12 lenb=strlen(sb);13 14 }15 void myadd(void){16 getdata();17 result=bigadd(sa,lena,sb,lenb);18 puts(result);19 }20 void mysub(void){21 getdata();22 result=bigsub(sa,lena,sb,lenb);23 puts(result);24 }25 void mymul(void){26 getdata();27 result=bigmul(sa,lena,sb,lenb);28 puts(result);29 }30 void mydiv(void){31 getdata();32 result=bigdiv(sa,lena,sb,lenb);33 puts(result);34 }35 36 int main(){37 myadd();38 mysub();39 mymul();40 mydiv();41 return 0;42 }
编译和测试:
gcc big_add.c big_sub.c big_mul.c big_div.h./a.out
C语言大数运算,参考了很多人的博客和代码,学到了很多,在这里表示感谢。这次对大数运算的小小总结也是希望可以帮到有需求的人,哪怕一点点。
C语言大数运算-大数运算库篇相关推荐
- 易语言 大数计算 大数支持库的使用实例
部分数据过大需要使用到大数计算,网上暂时没看到简单的例子实例,所以记录下.希望能帮上需要的人. 以下代码直接复制到易语言即可使用.支持库里需要勾选上 数值计算支持库 EC模块下载地址:易语言大数 ...
- 大数取模运算,快速幂取模运算
1.快速幂取模 http://www.cnblogs.com/yinger/archive/2011/06/08/2075043.html 快速幂取模就是在O(logn)内求出a^n mod b的值. ...
- c语言 0x12ed,C语言基本数据类型及运算题库有答案.doc
C语言基本数据类型及运算题库有答案 第二章 基本数据类型及运算 一.选择题 1. 若以下选项中的变量已正确定义,则正确的赋值语句是 . A) x1=26.8%3; B) 1+2=x2; C) x3=0 ...
- 大数取余运算(详解)
大数取余运算(详解) //(19^3 mod 23)^2 mod 31=25 //a=19 b=3 c=23 d=2 e=31 #include<stdio.h> long long po ...
- c语言for循环除法运算,C语言入门这一篇就够了
c语言入门 C语言一经出现就以其功能丰富.表达能力强.灵活方便.应用面广等特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等.C语言也是其它众多高级 ...
- C语言中的移位运算乘法,C语言中 移位操作运算
移位规律: 左移时总是移位和补零.右移时无符号数是移位和补零,此时称为逻辑右移;而有符号数大多数情况下是移位后补最左边的位(也就是补最高有效位),移几位就补几位,此时称为算术右移.(其实跟扩展逻辑一样 ...
- C语言实现1024bit大数加法(1)
本来利用一般的思想的是一个数组位存一位数, 需要初始化数组a[1024],但是可以利用更节省空间的方法. C语言unsigned int 的范围是0-2^32-1,一个数组位就可以存32bit(1个i ...
- c语言10以内位运算,C语言基础知识--位运算
1.原码,反码,补码: (1)在n位的机器数中,最高位为符号位,该位为零表示为正,为一表示为负:其余n-1位为数值位,各位的值可为零或一.当真值为正时,原码.反码.补码数值位 完全相同:当真值为负时, ...
- c语言中一些常用的逻辑运算,C语言中的位运算和逻辑运算
这篇文章来自:http://blog.csdn.net/qp120291570/article/details/8708286 位运算 C语言中的位运算包括与(&),或(|),亦或(^),非( ...
- bc库 php,PHP实现高精确度运算BC函数库
这篇文章主要介绍了PHP高精确度运算BC函数库,结合实例形式分析了BC函数库中bccomp.bcadd.bcsub.bcmod.bcp.bcmul等函数的功能以及高精度数学运算使用方法,需要的朋友可以 ...
最新文章
- centos7安装postgresql数据库
- 使用OpenCV 实现matlab的padarray(A, padsize, ‘symmetric’)函数简单实现
- 数据科学学习课件:实用数据挖掘与人工智能
- 解决Error spawning 'cmd.exe'的问题
- IIS 启动不了(服务没有及时响应启动或控制请求)解决
- 又走一人 苹果自动驾驶系统工程项目经理已离职
- 纯CSS实现兼容ie6以上的圆角头像
- 【java】窗口控件及字符串和异常的综合应用
- 代码中(C#)支持动态拼接SQL的参数化查询
- 【浙江大学PAT真题练习乙级】1005 继续(3n+1)猜想 (25分) 真题解析
- mac新手入门:在Mac上怎么使用夜览
- 42.翻转单词顺序 VS 左旋转字符串(C++版本)
- 一建已经过去,正是中级通信工程师黄金备考期!
- 玩转WIN7的MKLINK
- 计算机国二复习攻略,全国计算机等级考试二级复习指导及应试技巧二
- Xshell7怎么更改字体颜色和标签颜色方法教程
- 单管发报机的神奇之处-身兼两职
- transition动画效果
- 【小白入门】用Python增加文章阅读量
- 基于asp.netCoreWebApi的webSocket通信示例(net6)