c语言问题 计算高精度加法
由键盘输入两个位数很长的整数(一行一个数,每个数最长不超过80位),试计算并输出这两个数的和。输入:1234567890123456789987654321098765正...
由键盘输入两个位数很长的整数(一行一个数,每个数最长不超过80位),试计算并输出这两个数的和。
输入:
1234567890123456789
987654321098765
正确输出:
1235555544444555554 展开
输入:
1234567890123456789
987654321098765
正确输出:
1235555544444555554 展开
2013-12-03
展开全部
#include<stdio.h>
#include<conio.h>
#include<string.h>
#define MaxLen 256
void myadd( char* p, int n )
{
int t;
if( (*p) != '\0' ) t = (*p)-'0';
else t=0;
t = t + n;
if( t>=10 )
{
myadd( p+1, t/10 );
}
*p = t%10 + '0';
}
main()
{
char s[MaxLen] = {0};
char a[MaxLen] = {0};
char b[MaxLen] = {0};
printf( "输入第一个数字\n" );
scanf( "%s",a );
printf( "输入第二个数字\n" );
scanf( "%s",b );
int lena = strlen(a);
int lenb = strlen(b);
int len = (lena>=lenb?lenb:lena);
int i;
for( i=0;i<len;i++ )
{
int t = (a[lena-1-i]-'0') + (b[lenb-1-i]-'0');
myadd( &s[i], t );
}
if( lena>lenb )
{
for( ;i<lena;i++ )
{
int t = (a[lena-1-i]-'0');
myadd( &s[i], t );
}
}
else if( lenb>lena )
{
for( ;i<lenb;i++ )
{
int t = (b[lenb-1-i]-'0');
myadd( &s[i], t );
}
}
len = strlen(s);
for( int i1=0;i1<len/2;i1++ )
{
char ch = s[i1];
s[i1] = s[len-1-i1];
s[len-1-i1] = ch;
}
printf( "\n" );
printf( "%s\n",s );
getch();
}
#include<conio.h>
#include<string.h>
#define MaxLen 256
void myadd( char* p, int n )
{
int t;
if( (*p) != '\0' ) t = (*p)-'0';
else t=0;
t = t + n;
if( t>=10 )
{
myadd( p+1, t/10 );
}
*p = t%10 + '0';
}
main()
{
char s[MaxLen] = {0};
char a[MaxLen] = {0};
char b[MaxLen] = {0};
printf( "输入第一个数字\n" );
scanf( "%s",a );
printf( "输入第二个数字\n" );
scanf( "%s",b );
int lena = strlen(a);
int lenb = strlen(b);
int len = (lena>=lenb?lenb:lena);
int i;
for( i=0;i<len;i++ )
{
int t = (a[lena-1-i]-'0') + (b[lenb-1-i]-'0');
myadd( &s[i], t );
}
if( lena>lenb )
{
for( ;i<lena;i++ )
{
int t = (a[lena-1-i]-'0');
myadd( &s[i], t );
}
}
else if( lenb>lena )
{
for( ;i<lenb;i++ )
{
int t = (b[lenb-1-i]-'0');
myadd( &s[i], t );
}
}
len = strlen(s);
for( int i1=0;i1<len/2;i1++ )
{
char ch = s[i1];
s[i1] = s[len-1-i1];
s[len-1-i1] = ch;
}
printf( "\n" );
printf( "%s\n",s );
getch();
}
Sievers分析仪
2024-10-13 广告
2024-10-13 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准...
点击进入详情页
本回答由Sievers分析仪提供
2013-12-03
展开全部
#include <stdio.h>
#include <string.h>
void main()
{
char n1[100],n2[100],n3[100],t;
int i1,i2,i3,nn1,nn2,n,m=0;
printf("输入第1个数:");
scanf("%s",n1);
printf("输入第2个数:");
scanf("%s",n2);
i1=strlen(n1)-1;
i2=strlen(n2)-1;
for(i3=0;i1>=0 || i2>=0;i1--,i2--,i3++)
{
nn1=i1>=0?n1[i1]-'0':0;
nn2=i2>=0?n2[i2]-'0':0;
n=nn1+nn2+m;
if(n>9)
{
n-=10;
m=1;
}
else
m=0;
n3[i3]=n+'0';
}
if(m)
n3[i3++]=m+'0';
n3[i3--]='\0';
for(i1=0,i2=i3;i1<i2;i1++,i2--)
{
t=n3[i1];
n3[i1]=n3[i2];
n3[i2]=t;
}
printf("%s",n3);
}
#include <string.h>
void main()
{
char n1[100],n2[100],n3[100],t;
int i1,i2,i3,nn1,nn2,n,m=0;
printf("输入第1个数:");
scanf("%s",n1);
printf("输入第2个数:");
scanf("%s",n2);
i1=strlen(n1)-1;
i2=strlen(n2)-1;
for(i3=0;i1>=0 || i2>=0;i1--,i2--,i3++)
{
nn1=i1>=0?n1[i1]-'0':0;
nn2=i2>=0?n2[i2]-'0':0;
n=nn1+nn2+m;
if(n>9)
{
n-=10;
m=1;
}
else
m=0;
n3[i3]=n+'0';
}
if(m)
n3[i3++]=m+'0';
n3[i3--]='\0';
for(i1=0,i2=i3;i1<i2;i1++,i2--)
{
t=n3[i1];
n3[i1]=n3[i2];
n3[i2]=t;
}
printf("%s",n3);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询