c语言实现大数运算_c语言标准库教程

c语言实现大数运算_c语言标准库教程前言:通过前面的3篇文章我们已经实现了大数的四则运算,本篇博客我们会把这是几个个方法做成一个库文件,可以供自己日后使用。细心的读者可能意到了,每个程序都引用了big.h但是都被注释掉了。big.h就是头文件只要将函数的声明放到该文件中,然后在其它程序中引用该文件就可以使用大数运算的方法。重复的代码我就不再写了,其实有了算法你们自己就可以实现,所以我就简单的说几句。文件命名:头文件:b


Jetbrains全系列IDE稳定放心使用

前言 :
通过前面的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语言大数运算,参考了很多人的博客和代码,学到了很多,在这里表示感谢。这次对大数运算的小小总结也是希望可以帮到有需求的人,哪怕一点点。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185061.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 链表排序总结(全)(C++)[通俗易懂]

    链表排序总结(全)(C++)[通俗易懂]文章目录链表排序与数组排序的区别借助外部空间冒泡排序插入排序归并排序快速排序链表排序与数组排序的区别数组的排序几乎所有人都很熟悉了,常用的算法插入、冒泡、归并以及快排等都会或多或少依赖于数组可以在O(1)时间随机访问的特点。链表排序一般指单链表排序,链表是不支持随机访问的,需要访问后面的节点只能从表头顺序遍历,所以链表的排序是一个相对比较复杂的问题。那么怎样进行链表排序呢?借助外部空间既然数组排序简单,那可以借助数组进行排序:把链表中的值一次遍历导入数组(时间复杂度O(n))对数组进行排序

    2022年10月11日
  • 原生js添加元素

    原生js添加元素今天做页面使用的mui,因为使用mui情况下无法使用jquery,于是在ajax请求完毕添加元素的时候发现自己竟然对原生js添加元素的方法有点模糊了,真是越活越倒退了,赶紧整理一波。首先最简单的innerHTML,这个不想多说,入门新手喜欢这么用,但他的缺点也很明显:不管你渲染部分还是全部,始终需要替换原先所有的子元素,也就是需要重复渲染,会增加浏览器压力。接下来就是正题了,js推荐是这样…

    2022年6月22日
  • Linux 将本地文件上传Linux服务器, 即ssh 命令上传本地文件

    Linux 将本地文件上传Linux服务器, 即ssh 命令上传本地文件

    2021年10月15日
  • ETL数据同步工具Kettle简介

    ETL数据同步工具Kettle简介很多时候,我们需要将一个系统的数据同步到另外一个系统中,两个系统的数据库可能不同,ETL数据同步工具Kettle可能轻松帮我们实现,该功能,而且还可以定时执行数据同步任务。ETL数据同步工具Kettle使用Kettle简介:Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。Kettle中文名称叫水壶,该项目的主程序

    2022年6月28日
  • stata令相关系数加显著性

    stata令相关系数加显著性pwcorra1a2,sigstar(0.01)

    2022年6月16日
  • 多种方法彻底解决pycharm中: OSError: [WinError 1455] 页面文件太小,无法完成操作 的问题

    多种方法彻底解决pycharm中: OSError: [WinError 1455] 页面文件太小,无法完成操作 的问题目录1.重启pycharm(基本没啥用)2.把num_works设置为0(可能也没啥用)3.调大页面文件的大小(彻底解决问题)相信很多小伙伴在使用pycharm的时候都遇到这个问个报错问题吧,我是在跑PyTorch相关代码遇到的这个问题,也搜索了很多解决办法,这里介绍下我总结的经验.这是我搜索到的三种解决方法,依次来介绍下:1.重启pycharm(基本没啥用)这是最简单的方法了,可以先尝试一下,反正也很简单,不过如果你是第一次遇到这个问题,基本是解…

    2022年6月24日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号