#include<iostream>
#include<stdio.h>
#include<string.h>
#define max 200
using namespace std;
int mian()
{
char a[max];
char b[max];
int c[max];
int a1[max], b1[max];
memset(c, 0, sizeof(c));
//判断输入a,b的大小
if (strlen(a)>strlen(b))
{
cout << "结果为正\n";
}
else if (strlen(a) < strlen(b))
{
cout << "结果为负\n";
cout << '-';
//交换两数
char n[max];
strcpy(n, a);
strcpy(a, b);
strcpy(b, n);
}
else
{
if (strcmp(a, b) == 0)
{
cout << "两数相等\n";
}
else if (strcmp(a, b) > 0)
{
cout << "结果为正数\n";
}
else
{
cout << "结果为负\n";
char n[max];
strcpy(n, a);
strcpy(a, b);
strcpy(b, n);
}
}
int lena, lenb;
lena = strlen(a);//求a的长度
lenb = strlen(b);//求n的长度
for (int i = 0; i < lena; i++)//将a转换为数字后存储在a1中
{
a1[lena - i] = a[i] - '0';//先处理低位,所以将低位与高位换位置
}
for (int i = 0; i < lenb - 1; i++)
{
b1[lenb - i] = b[i] - '0';
}
int lenc = 0;
if (lena < lenb)
lenc = lenb;
else
lenc = lena;
for (int i = 1; i <= lenc; i++)
{
if (a1[i] < b1[i]) //如果被减数的某位上的数字小于减数则要借位处理
{
a1[i + 1]--; //借位后高位减一
a[i] = a[i] + 10;
}
c[i] = a1[i] - b1[i];
}
while (c[lenc] == 0 && lenc > 1) ////防止最高位0被输出,例如0211
{
lenc--;
}
for (int i = lenc; i > 0; i--)
cout << c[i];
return 0;
}