c语言实现长数字相加算法
2014-10-05 22:00
190 查看
最近突然有写博客的的想法了,真真让我下定决心写博客的事件是电脑硬盘坏了,坏的很彻底,500G的数据啊,陪伴了我三年的数据就这样一点都没剩下全没了,写了三年的程序代码(3年的积累,学习编程的辛酸历程)全没了。
好了,废话有点多了,进入正题。思路啥的也不说了,代码很简单,看下就懂了,第一次写我就从简了,嘿嘿:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char a[31],b[31],c[31],smallStr[31],bigStr[31];
int small,big,temp,str1_len,str2_len,i,j,goHead=0,k;
while(scanf("%s %s",a,b)!=EOF)
{
str1_len=strlen(a);
str2_len=strlen(b);
i=str1_len;
j=str2_len;
if(i>=j)
{
small=j;
big=i;
for(i=0;i<=big;i++)
{
bigStr[i]=a[i];
}
for(i=0;i<small;i++)
{
smallStr[i]=b[i];
}
}
else
{
small = i;
big = j;
for(i=0;i<=big;i++)
{
bigStr[i]=b[i];
}
for(i=0;i<small;i++)
{
smallStr[i]=a[i];
}
}
for(k=big;k>0;k--)
{
if(small>0)
{
temp=bigStr[k-1]-48+smallStr[small-1]-48+goHead;
small--;
}
else
{
temp=bigStr[k-1]+goHead-48;
}
if(temp>=10)
{
goHead =1;
c[k] = temp+38;
}
else
{
goHead=0;
c[k] = temp+48;
}
}
c[big+1]='\0';
if(goHead==1)
c[0]=49;
else
{
for(i=0;i<=big;i++)
{
c[i]=c[i+1];
}
}
printf("%s\n",c);
goHead=0;
}
}
过几天我就会开始写自己学习html的笔记了。。。。
好了,废话有点多了,进入正题。思路啥的也不说了,代码很简单,看下就懂了,第一次写我就从简了,嘿嘿:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char a[31],b[31],c[31],smallStr[31],bigStr[31];
int small,big,temp,str1_len,str2_len,i,j,goHead=0,k;
while(scanf("%s %s",a,b)!=EOF)
{
str1_len=strlen(a);
str2_len=strlen(b);
i=str1_len;
j=str2_len;
if(i>=j)
{
small=j;
big=i;
for(i=0;i<=big;i++)
{
bigStr[i]=a[i];
}
for(i=0;i<small;i++)
{
smallStr[i]=b[i];
}
}
else
{
small = i;
big = j;
for(i=0;i<=big;i++)
{
bigStr[i]=b[i];
}
for(i=0;i<small;i++)
{
smallStr[i]=a[i];
}
}
for(k=big;k>0;k--)
{
if(small>0)
{
temp=bigStr[k-1]-48+smallStr[small-1]-48+goHead;
small--;
}
else
{
temp=bigStr[k-1]+goHead-48;
}
if(temp>=10)
{
goHead =1;
c[k] = temp+38;
}
else
{
goHead=0;
c[k] = temp+48;
}
}
c[big+1]='\0';
if(goHead==1)
c[0]=49;
else
{
for(i=0;i<=big;i++)
{
c[i]=c[i+1];
}
}
printf("%s\n",c);
goHead=0;
}
}
过几天我就会开始写自己学习html的笔记了。。。。
相关文章推荐
- /*算法从9个数中取出3个3位数其中两个3位数相加等于另一个3位数其中每位数字不能重复,c语言怎么实现*/
- 【LeetCode-面试算法经典-Java实现】【129-Sum Root to Leaf Numbers(所有根到叶子结点组组成的数字相加)】
- 设计一个算法,要求在20个数字中(0到19)随机选取十个数字,但是这十个数字不能重复(用C语言或者OC实现)
- Java实现超大数字相加的算法
- 求旋转数组的最小数字算法的解析以及完整c语言代码实现
- C语言超大数相加求和、加减乘除算法实现
- 【LeetCode-面试算法经典-Java实现】【129-Sum Root to Leaf Numbers(全部根到叶子结点组组成的数字相加)】
- 10个重要的算法C语言实现源代码(其2--牛顿插值)
- 一个UUID生成算法的C语言实现 --- WIN32版本
- 一个UUID生成算法的C语言实现 --- WIN32版本
- 10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔
- 防脉冲干扰移动平均值法数字滤波器的C语言算法及其实现
- 用BP网络算法实现对含噪声0到9数字的识别
- (C语言)二分算法实现简单猜数
- C语言中实现点在多边形内的算法
- 10个重要的算法C语言实现源代码
- 用BP网络算法实现对含噪声0到9数字的识别
- 有关统计单词频率的算法c语言实现
- 10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔
- js中,实现两个数字相加