|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这是计算两个100位以内的数字的减法,提交后系统说有错误,请问哪里错了呢?
#include<stdio.h>
#include<string.h>
int t[110];
void fun(char a[],int n,char b[],int m)
{
int i,j;
n--;m--;
for(;n>=0;n--,m--)
{
if(m<0)
{
t[n]=a[n]-'0';
}
else if(a[n]>=b[m])
t[n]=a[n]-b[m];
else
{
t[n]=10+a[n]-b[m];
a[n-1]--;
}
}
}
void pr(int i,int n)
{
for(;i<n;i++)
{
printf("%d",t[i]);
}
}
int main()
{
char a[110],b[110];
int i,j,k,n,m,s;
scanf("%s",&a);
scanf("%s",&b);
n=strlen(a);
m=strlen(b);
if(n>m)
{
fun(a,n,b,m);
for(i=0;i<=n&&t[i]==0;i++);
pr(i,n);
}
else if(n<m)
{
fun(b,m,a,n);
for(i=0;i<=m&&t[i]==0;i++);
printf("-");
pr(i,m);
}
else
{
for(i=0;i<n;i++)
{
s=1;
if(a[i]!=b[i])
{
s=0;
break;
}
}
if(s)
{
printf("0");
return 0;
}
else if(a[i]>b[i])
{
fun(a,n,b,m);
for(i=0;i<=n&&t[i]==0;i++);
pr(i,n);
}
else
{
fun(b,m,a,n);
for(i=0;i<=m&&t[i]==0;i++);
printf("-");
pr(i,m);
}
}
}
|
|