早教吧 育儿知识 作业答案 考试题库 百科 知识分享

这是两个大数相加请帮忙改成两个大数相减#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;
}
▼优质解答
答案和解析
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