博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大数加法之C语言函数法(只有正数版)
阅读量:6516 次
发布时间:2019-06-24

本文共 1108 字,大约阅读时间需要 3 分钟。

     由于某些原因,我于今天2017-4-19将我的博文搬到博客园了,以后我就在这里扎根了。

 

      之前想过在博客写文章方便日后复习,但一直未能实现,所以,现在这篇是我个人人生中第一篇博客,所以写博客完全没经验,可能会有些啰嗦,读者将就着看吧,哈哈。由于本人还是学生,所以有理解不对的地方,请各位大神指出,让我,让后面看到此文章的人共同进步,谢谢,本文适合新手看,个人觉得思路挺清晰,大神可飘过,勿喷。

     大数加法,可以模拟小学的加法,主要是几步:由字符型转换成整形数组,反转相加,处理进位情况,再转换回字符型输出答案。废话不多说了,代码如下:

   

 

# include
# include
char * sum(char *a,char*b)//对C语言来说返回一个字符指针,因为我们的结果是以字符串形式输出{ int s[1000]= {0};//用整形数组存储数字,记得清零 char c[1000];//这将是我们用来输出的数组,后面直接返回数组名 c即可 int i,j,maxlen,d; int la=strlen(a),lb=strlen(b); la>lb?maxlen=la:maxlen=lb;//这里是要找出两个数字的最高位 for(j=la-1; j>=0; j--)//将字符转换成数字并反转存进整形数组 s[la-1-j]+=a[j]-'0'; for(j=lb-1; j>=0; j--)//同上 s[lb-1-j]+=b[j]-'0'; for(i=0,d=0; i
0)//处理最高位 s[maxlen++]+=d; for(i=maxlen-1; i>=0; i--)//再将整形数组 反转转换为字符数组 c[maxlen-1-i]=s[i]+'0'; c[maxlen]='\0';//最后面加上结束符 return c;//返回字符指针}int main(void){ char a[1000],b[1000]; char *c; while(scanf("%s %s",a,b)) { c=sum(a,b); printf("%s\n",c); } return 0;}

以上就是鄙人之见

测试效果如下:

 

转载于:https://www.cnblogs.com/yellowgg/p/6735244.html

你可能感兴趣的文章
Java数据结构与算法(六) 希尔排序
查看>>
canvas学习笔记
查看>>
PHP获取Cookie模拟登录CURL(转)
查看>>
PHP-权限控制类(转)
查看>>
CSS3秘笈第三版涵盖HTML5学习笔记9~12章
查看>>
leetcode-136-Single Number
查看>>
http服务器小项目
查看>>
《Spring1之第十次站立会议》
查看>>
Unity Shader 噪声消融特效 - 剑灵死亡特效
查看>>
添加一条信息到列表,如果重复就替换,
查看>>
C#基础第五天
查看>>
uva 12325 枚举暴力 b
查看>>
多线程问题(JVM重排序)
查看>>
LeetCode 459 Repeated Substring Pattern
查看>>
POJ 3268 Silver Cow Party
查看>>
EMLS项目推进思考
查看>>
Eclipse快捷键 10个最有用的快捷键
查看>>
2018-2019-1 20165302 实验五 通讯协议设计
查看>>
Golang 知识点总结
查看>>
JAVA 8 特性
查看>>