90求助orz,#6 too long
查看原帖
90求助orz,#6 too long
935299
yashi258楼主2023/2/20 23:12

用的c语言,逻辑写的可能有点混乱,大佬们见谅

#include<stdio.h>
int max(int a, int b)
{
   if (a > b)
   	return a;
   else
   	return b;
}
int main()
{
   //先来写a>b的情况
   char s1[10100];
   char s2[10100];
   int a[10100]={0};
   int b[10100]={0};
   int c[10100]={0};
   int d[10010] = { 0 };
   int k = 0;//作为标准告知是否输出‘-’
   scanf("%s%s", s1, s2);
   int la = strlen(s1);
   int lb = strlen(s2);
   int i = 0;
   for (i = 0; i < la; i++)
   {
   	a[la - i] = s1[i]-'0';
   	d[la - i] = s1[i] - '0';
   }
   for (i = 0; i < lb; i++)
   {
   	b[lb - i] = s2[i]-'0';
   }
   int lc = max(la, lb)+1;
   for (i = 0; i < lc; i++)//判断a<b的情况
   {
   	a[i] -= b[i];
   	if (a[i] < 0)
   	{
   		a[i + 1]--;
   		a[i] += 10;
   	}
   }
   if (a[lc] + 1 == 0)
   	lc--;
   if (a[lc + 1] < 0)
   {
   	k = 1;
   	for (i = 0; i <= lc; i++)
   	{
   		int z = 0;
   		z=d[i];
   		d[i] = b[i];
   		b[i] = z;
   	}
   }
   for (i = 1; i <=lc; i++)
   {
   	if (d[i] < b[i])
   	{
   		d[i + 1]--;
   		d[i] += 10;
   		c[i] = d[i] - b[i];
   	}
   	else
   		c[i] = d[i] - b[i];
   }
   if (c[lc] == 0 && lc > 0)
   	lc--;
   if (k == 0)
   {
   	for (i = lc; i > 0; i--)
   	{
   		printf("%d", c[i]);
   	}
   }
   else
   {
   	printf("-");
   	for (i = lc; i > 0; i--)
   	{
   		printf("%d", c[i]);
   	}
   }
   return 0;
} 
2023/2/20 23:12
加载中...