早教吧作业答案频道 -->其他-->
这是两个大数相加请帮忙改成两个大数相减#include#includeusingnamespacestd;intmain(intargc,char*argv[]){intn,t=1;scanf("%d",&n);while(n--){chara[1000],b[1000];intc[1000];scanf("%s%s",a,b);printf("Case%d:\n",t);t++;printf
题目详情
这是两个大数相加 请帮忙改成两个大数相减
#include
#include
using namespace std;
int main(int argc,char *argv[])
{
int n,t=1;
scanf("%d",&n);
while(n--)
{
char a[1000],b[1000];
int c[1000];
scanf("%s %s",a,b);
printf("Case %d:\n",t);
t++;
printf("%s + %s = ",a,b);
int alen,blen;
int Maxlen;
alen=strlen(a);
blen=strlen(b);
if(alen>=blen)
{
Maxlen=alen;
for(int i=Maxlen-1;i>=alen-blen;i--)
{
b[i]=b[i-alen+blen];
}
for(int i=alen-blen-1;i>=0;i--)
{
b[i]='0';
}
}
else
{
Maxlen=blen;
for(int i=Maxlen-1;i>=blen-alen;i--)
{
a[i]=a[i-blen+alen];
}
for(int i=blen-alen-1;i>=0;i--)
{
a[i]='0';
}
}
int flag=0;
int k=0;
for(int i=Maxlen-1;i>=0;i--)
{
c[k]=((a[i]-'0')+(b[i]-'0')+flag)%10;
if((a[i]-'0')+(b[i]-'0')+flag>9)
{
flag=1;
}
else
{
flag=0;
}
k++;
}
if(flag==1)
{
c[Maxlen]=1;
for(int i=Maxlen;i>=0;i--)
{
printf("%d",c[i]);
}
}
else
{
for(int i=Maxlen-1;i>=0;i--)
{
printf("%d",c[i]);
}
}
printf("\n");
if(n>0)
printf("\n");
}
system("PAUSE");
return EXIT_SUCCESS;
}
#include
#include
using namespace std;
int main(int argc,char *argv[])
{
int n,t=1;
scanf("%d",&n);
while(n--)
{
char a[1000],b[1000];
int c[1000];
scanf("%s %s",a,b);
printf("Case %d:\n",t);
t++;
printf("%s + %s = ",a,b);
int alen,blen;
int Maxlen;
alen=strlen(a);
blen=strlen(b);
if(alen>=blen)
{
Maxlen=alen;
for(int i=Maxlen-1;i>=alen-blen;i--)
{
b[i]=b[i-alen+blen];
}
for(int i=alen-blen-1;i>=0;i--)
{
b[i]='0';
}
}
else
{
Maxlen=blen;
for(int i=Maxlen-1;i>=blen-alen;i--)
{
a[i]=a[i-blen+alen];
}
for(int i=blen-alen-1;i>=0;i--)
{
a[i]='0';
}
}
int flag=0;
int k=0;
for(int i=Maxlen-1;i>=0;i--)
{
c[k]=((a[i]-'0')+(b[i]-'0')+flag)%10;
if((a[i]-'0')+(b[i]-'0')+flag>9)
{
flag=1;
}
else
{
flag=0;
}
k++;
}
if(flag==1)
{
c[Maxlen]=1;
for(int i=Maxlen;i>=0;i--)
{
printf("%d",c[i]);
}
}
else
{
for(int i=Maxlen-1;i>=0;i--)
{
printf("%d",c[i]);
}
}
printf("\n");
if(n>0)
printf("\n");
}
system("PAUSE");
return EXIT_SUCCESS;
}
▼优质解答
答案和解析
C语言 两个大数相减
#include
#include
#include
void yun_suan(char *str1,char *str2)
{
int length1,length2;
int sum=0,pos1,pos2,flag1=1;
length1=strlen(str1);
length2=strlen(str2);
pos1=length1-1;
pos2=length2-1;
while(pos2!=0)
{
sum=str1[pos1]-'0'-(str2[pos2]-'0');
if(sum=0)
{
k--;
}
str1[k]=str1[k]-'0'-1+'0';
for(s=k+1;s
#include
#include
#include
void yun_suan(char *str1,char *str2)
{
int length1,length2;
int sum=0,pos1,pos2,flag1=1;
length1=strlen(str1);
length2=strlen(str2);
pos1=length1-1;
pos2=length2-1;
while(pos2!=0)
{
sum=str1[pos1]-'0'-(str2[pos2]-'0');
if(sum=0)
{
k--;
}
str1[k]=str1[k]-'0'-1+'0';
for(s=k+1;s
看了这是两个大数相加请帮忙改成两个...的网友还看了以下:
已知数列a(n)为等比数列,a(4)=16,q=2,数列b(n)前N项和s(n)=1/2*n的平方 2020-05-13 …
当n取正整数时,定义N(n)表示n的最大奇因数.如N(1)=1,N(2)=1,N(3)=3,N(4 2020-05-13 …
(1/(n^2 n 1 ) 2/(n^2 n 2) 3/(n^2 n 3) ……n/(n^2 n 2020-05-16 …
谁帮我做下下面的关于时间复杂度的习题?f(n)=100n^3+n^2+1000,g(n)=25n^ 2020-06-12 …
求渐化式~急已知:p(n)=1/2p(n-1)+1/2p(n-2)求p(n)用n表示由已知可得:p 2020-07-08 …
已知数列{an}的通项公式为an=2^(n-1)+1则a1Cn^0+a2Cn^1+a3Cn^2+. 2020-07-09 …
数列{n×2^(n-1)}的前n项和为多少?A.-n*2^n-1+2^nBn*2^n+1-2^nC 2020-07-09 …
已知f(n)=-n,φ(n)=,g(n)=n-,n∈N+,则[]A.f(n)<g(n)<φ(n)B 2020-07-13 …
不等式的证明设m,n为正整数,f(n)=1+1/2+1/3+.+1/n,证明(1)若n>m,则f( 2020-07-16 …
总体X服从N(u,sigma^2).x1.xn为样本,u已知,sigma^2未知x为样本平均值s^ 2020-08-03 …