大数加法的实现(不考虑负数)
来源:互联网 发布:java cyclicbarrier 编辑:程序博客网 时间:2024/05/01 12:13
实现思路:
1、先将两数倒序排列
2、从0到len-1位按位相加,和大于10设置进位标示;
3、处理两数位数相比多出的部分;
4、将结果以及原来两个加数倒序;
#include 《string.h〉
#include 〈stdlib.h》
#define MAX 100 //最大支持的位数
//倒序
void revnum(char *a)
{
int len = strlen(a);
char t;
for(int i = 0; i< len/2; i++)
{
//i与j交换位置 i与len-i-1交换
t = *(a+i);
*(a+i) = *(a+(len-i-1));
*(a+(len-i-1)) = t;
}
}
//大数加法(不考虑负数)
char * bigAdd(char *a,char *b)
{
revnum(a);
revnum(b);
int lena = strlen(a);
int lenb = strlen(b);
int lenc = lena;
if(lenb > lenc)
{
lenc = lenb;
}
char * result = (char *)malloc(lenc+1);
int t;
int carry = 0;
char *flagChar;
char *flagresult;
bool flag = false;
for(int i = 0 ; i<lenc;i++)
{
//t = (*a(i)) + (*b(i));// -'0'-'0' + carry;
if ( a[i] == '/0' )
{
flag = true;
flagChar = &b[i];
flagresult = result+i;
break;
}
if(b[i] == '/0')
{
flag = true;
flagChar = &a[i];
flagresult = result+i;
break;
}
t = a[i] +b[i]-'0'-'0' + carry ;
if( t > 9)
{
itoa(t-10,result+i,10);
carry= 1;
}
else
{
itoa(t,result+i,10);
carry =0;
}
}
//两个加数长度不相同
if(flag)
{
while(*(flagChar) != '/0')
{
t = flagChar[0] -'0' + carry ;
if( t > 9)
{
itoa(t-10,flagresult++,10);
carry= 1;
}
else
{
itoa(t,flagresult++,10);
carry =0;
}
flagChar++;
}
}
if ( carry != 0)
{
*(result+lenc) = '1';
*(result+lenc+1) = '/0';
}
else
{
*(result+lenc) = '/0';
}
//printf("len:%d/n",lena);
revnum(result);
revnum(a);
revnum(b);
return result;
}
int main()
{
char a[MAX];//= "321";
char b[MAX];//= "26";
while(1)
{
printf("分别输入两个加数/n");
gets_s(a);
gets_s(b);
char *add = bigAdd(a,b);
printf(" %s/n+%s/n-------/n %s/n",a,b,add);
char t[2];
printf("是否继续(y/n)(输入n退出)?/n");
if(getchar() == 'n') break;
//清空缓冲区
flushall();
}
}
- 大数加法的实现(不考虑负数)
- 大数加法(考虑负数)
- 面试常见题目:大数相加的Java实现(考虑负数情况)
- c++实现大数加法(含负数)
- 大数加法的实现
- 用字符串实现大数的相加,没有考虑存在负数的情况
- 大数加法 可为负数
- 51nod 1005 大数加法(可为负数)
- 51nod 1005 大数加法(可为负数)
- C++实现大数的加法
- 大数加法的字符串实现
- 大数加法和大数乘法的实现
- 数值的整数次方(不考虑大数问题)
- 大数的加法,乘法,全排列实现
- 大数(非负数)的乘法
- 大数乘法、大数加法实现
- 大数运算-加法(C/C++实现)
- 大数加法.重载实现
- 从函数指针角度理解MFC消息映射
- Zw函数与Nt函数的分别与联系
- PAIP.DB4O与SQL配合使用在海量数据下.txt
- 没关闭socket带来的后果
- 数组,结构,枚举
- 大数加法的实现(不考虑负数)
- 事务管理
- 使用存储过程
- GeoServer 2.0.0的配置及使用
- 遮罩弹出效果 和 仿51job的弹出返回效果
- JS正则
- jQuery中判断元素是否存在的方法
- 运算符重载(复数运算(+、-、*重载),输入、出类对象(流类运算符>>/<<的重载))
- jQuery中判断元素是否存在的方法