C语言高精度加法
我用数组来做高精度加法问题,源码如下,但就总是出错!请大家帮忙指证一下!谢谢#include"stdio.h"main(){staticinta[100],b[100],...
我用数组来做高精度加法问题,源码如下,但就总是出错!请大家帮忙指证一下!谢谢
#include "stdio.h"
main()
{
static int a[100],b[100],c[100];
int la,lb,i,m,temp;
gets(a);
gets(b);
la=strlen(a);
lb=strlen(b);
for(i=0;i<(la/2);i++)
{
temp=a[i];
a[i]=a[la-i-1];
a[la-i-1]=temp;
}
for(i=0;i<(lb/2);i++)
{
temp=b[i];
b[i]=b[lb-i-1];
b[lb-i-1]=temp;
}
m=la>lb?la:lb;
for(i=0;i<m;i++)
{
c[i]=a[i]+b[i];
if(c[i]>9)
{
c[i]=c[i]-10;
c[i+1]++;
}
}
for(i=0;i<m+1;i++)
printf("%d",c[i]);
} 展开
#include "stdio.h"
main()
{
static int a[100],b[100],c[100];
int la,lb,i,m,temp;
gets(a);
gets(b);
la=strlen(a);
lb=strlen(b);
for(i=0;i<(la/2);i++)
{
temp=a[i];
a[i]=a[la-i-1];
a[la-i-1]=temp;
}
for(i=0;i<(lb/2);i++)
{
temp=b[i];
b[i]=b[lb-i-1];
b[lb-i-1]=temp;
}
m=la>lb?la:lb;
for(i=0;i<m;i++)
{
c[i]=a[i]+b[i];
if(c[i]>9)
{
c[i]=c[i]-10;
c[i+1]++;
}
}
for(i=0;i<m+1;i++)
printf("%d",c[i]);
} 展开
展开全部
你输入的是字符哦!!应该把字符转为数字再运算,然后你那两个循环的转换有什么作用??
我随便帮改了下!!不过其他输入方面的错误和浮点数的考虑我没加上!!自己想想吧!!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char a[500], b[500];
int c[501];
void strfun ( char *p, int min, int max );//靠右对齐两个字符串
int main()
{
int la, lb, i, j, m;
gets (a);
gets (b);
la = strlen (a);
lb = strlen (b);
if ( la > lb )
strfun ( b, lb, la );
else if ( la < lb )
strfun ( a, la, lb );
m = la > lb ? la : lb;
for ( i = m; i >= 0; --i )
{
c[i] += (a[i] - '0') + (b[i] - '0');
if( c[i] > 9 )
{
c[i] = c[i] - 10;
c[i-1]++;
}
}
if ( c[i] == 1 )
putchar ('1');
for( i = 0; i < m; i++ )
printf("%d", c[i]);
putchar ('\n');
system ("PAUSE");
return 0;
}
void strfun ( char *p, int min, int max )//靠右对齐两个字符串
{
int i, j, k;
k = max - min;
for ( i = max, j = min; i >= 0; --i, --j )
{
if ( i >= k )
*(p + i) = *(p + j);
else *(p + i) = '0';
}
}
我随便帮改了下!!不过其他输入方面的错误和浮点数的考虑我没加上!!自己想想吧!!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char a[500], b[500];
int c[501];
void strfun ( char *p, int min, int max );//靠右对齐两个字符串
int main()
{
int la, lb, i, j, m;
gets (a);
gets (b);
la = strlen (a);
lb = strlen (b);
if ( la > lb )
strfun ( b, lb, la );
else if ( la < lb )
strfun ( a, la, lb );
m = la > lb ? la : lb;
for ( i = m; i >= 0; --i )
{
c[i] += (a[i] - '0') + (b[i] - '0');
if( c[i] > 9 )
{
c[i] = c[i] - 10;
c[i-1]++;
}
}
if ( c[i] == 1 )
putchar ('1');
for( i = 0; i < m; i++ )
printf("%d", c[i]);
putchar ('\n');
system ("PAUSE");
return 0;
}
void strfun ( char *p, int min, int max )//靠右对齐两个字符串
{
int i, j, k;
k = max - min;
for ( i = max, j = min; i >= 0; --i, --j )
{
if ( i >= k )
*(p + i) = *(p + j);
else *(p + i) = '0';
}
}
Sievers分析仪
2024-10-13 广告
2024-10-13 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准...
点击进入详情页
本回答由Sievers分析仪提供
展开全部
我在自己的电脑上运行了,没错误现在
#include "stdio.h"
void main()
{
static char a[100],b[100],c[100];
int la,lb,i,m,temp;
gets(a);
gets(b);
la=strlen(a);
lb=strlen(b);
for(i=0;i<(la/2);i++)
{
temp=a[i];
a[i]=a[la-i-1];
a[la-i-1]=temp;
}
for(i=0;i<(lb/2);i++)
{
temp=b[i];
b[i]=b[lb-i-1];
b[lb-i-1]=temp;
}
m=la>lb?la:lb;
for(i=0;i<m;i++)
{
c[i]=a[i]+b[i];
if(c[i]>9)
{
c[i]=c[i]-10;
c[i+1]++;
}
}
for(i=0;i<m+1;i++)
printf("%d",c[i]);
}
不懂看下面,我帮你彻底搞定,呵呵
#include "stdio.h"
void main()
{
static char a[100],b[100],c[100];
int la,lb,i,m,temp;
gets(a);
gets(b);
la=strlen(a);
lb=strlen(b);
for(i=0;i<(la/2);i++)
{
temp=a[i];
a[i]=a[la-i-1];
a[la-i-1]=temp;
}
for(i=0;i<(lb/2);i++)
{
temp=b[i];
b[i]=b[lb-i-1];
b[lb-i-1]=temp;
}
m=la>lb?la:lb;
for(i=0;i<m;i++)
{
c[i]=a[i]+b[i];
if(c[i]>9)
{
c[i]=c[i]-10;
c[i+1]++;
}
}
for(i=0;i<m+1;i++)
printf("%d",c[i]);
}
不懂看下面,我帮你彻底搞定,呵呵
参考资料: http://hi.baidu.com/aiwori
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
所谓高精度加法一般都是把数字存成字符型,然后按照加法规则一位一位的加并进位。我做过长整数的,基本上位数没什么限制。如果带小数的话需要处理一下,稍微麻烦一些
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询