![]() |
#2
apull2022-01-09 23:01
看你写法是不考虑输入负数了
比较输入的a,b大小,b>a则调换a,b 注释内容为修改部分。 ![]() #include<stdio.h> #include<string.h> #include<math.h> #define M 10005 int main() { char *a, *b, ai[M], bi[M]; // int a1[M], b1[M], i, j, m, n, k, max; ///////////////// // scanf("%s%s", ai, bi); a = ai; b = bi; if(strcmp(ai, bi) < 0) { a = bi; b = ai; printf("-"); } k = m = strlen(a); n = strlen(b); if(k < n) k = n; //选出最大位数是多少位 ///////////////// for(i = 0; i < m; i++) //将字符串转换为数组 a1[i] = a[m - 1 - i] - '0'; for(j = 0; j < n; j++) b1[j] = b[n - 1 - j] - '0'; i = 0; if(k == m) { for(j = 0; j < k; j++) { if(a1[i] < b1[j]) { a1[i] = a1[i] - b1[j] + 10; a1[i + 1]--; i++; } else { a1[i] = a1[i] - b1[j]; i++; } } i = k; while(a1[i] == 0) i--; if(i < 0) printf("0\n"); else { for(; i >= 0; i--) printf("%d", a1[i]); } } else { for(j = 0; j < k; j++) { if(b1[i] < a1[j]) { b1[i] = b1[i] - a1[j] + 10; b1[i + 1]--; i++; } else { b1[i] = b1[i] - a1[j]; i++; } } i = k; while(b1[i] == 0) i--; if(i < 0) printf("0\n"); else { for(; i >= 0; i--) printf("%d", b1[i]); //// } } return 0; } |

#include<stdio.h>
#include<string.h>
#include<math.h>
#define M 10005
int main()
{
char a[M],b[M];
int a1[M],b1[M],i,j,m,n,k,max;
scanf("%s%s",&a,&b);
m=strlen(a);
n=strlen(b);
max=m;
if(max<n)
max=n; //选出最大位数是多少位
k=max;
for(i=0;i<m;i++) //将字符串转换为数组
a1[i]=a[m-1-i]-'0';
for(j=0;j<n;j++)
b1[j]=b[n-1-j]-'0';
i=0;
if(k==m)
{
for(j=0;j<k;j++)
{
if(a1[i]<b1[j])
{
a1[i]=a1[i]-b1[j]+10;
a1[i+1]--;
i++;
}
else
{
a1[i]=a1[i]-b1[j];
i++;
}
}
i=k;
while(a1[i]==0)
i--;
if(i<0)
printf("0\n");
else
{
for(;i>=0;i--)
printf("%d",a1[i]);
}
}
else
{
for(j=0;j<k;j++)
{
if(b1[i]<a1[j])
{
b1[i]=b1[i]-a1[j]+10;
b1[i+1]--;
i++;
}
else
{
b1[i]=b1[i]-a1[j];
i++;
}
}
i=k;
while(b1[i]==0)
i--;
if(i<0)
printf("0\n");
else
{
for(;i>=0;i--)
printf("-%d",b1[i]);
}
}
return 0;
}
#include<string.h>
#include<math.h>
#define M 10005
int main()
{
char a[M],b[M];
int a1[M],b1[M],i,j,m,n,k,max;
scanf("%s%s",&a,&b);
m=strlen(a);
n=strlen(b);
max=m;
if(max<n)
max=n; //选出最大位数是多少位
k=max;
for(i=0;i<m;i++) //将字符串转换为数组
a1[i]=a[m-1-i]-'0';
for(j=0;j<n;j++)
b1[j]=b[n-1-j]-'0';
i=0;
if(k==m)
{
for(j=0;j<k;j++)
{
if(a1[i]<b1[j])
{
a1[i]=a1[i]-b1[j]+10;
a1[i+1]--;
i++;
}
else
{
a1[i]=a1[i]-b1[j];
i++;
}
}
i=k;
while(a1[i]==0)
i--;
if(i<0)
printf("0\n");
else
{
for(;i>=0;i--)
printf("%d",a1[i]);
}
}
else
{
for(j=0;j<k;j++)
{
if(b1[i]<a1[j])
{
b1[i]=b1[i]-a1[j]+10;
b1[i+1]--;
i++;
}
else
{
b1[i]=b1[i]-a1[j];
i++;
}
}
i=k;
while(b1[i]==0)
i--;
if(i<0)
printf("0\n");
else
{
for(;i>=0;i--)
printf("-%d",b1[i]);
}
}
return 0;
}