#include<stdio.h>
#include<string.h>
#define N 100
int res[N] = {0};
char *add(char a[], int n, char b[], int m) //大数相加
{
int i=N-1, z=0, j;
for( ; n>=0; n--, m--)
{
if(m>=0)
res[i] = res[i] + a[n]-'0' + b[m]-'0';//res[i]=0或res[i]=1;
else
res[i] = res[i] + a[n] - '0';
if( res[i] > 9 )
{
res[i] = res[i] - 10;
res[i-1]++;
}
i--;
}
for(j=0 ;i<=N-1; i++, j++)
a[j] = res[i] + '0';
a[j]='\0';
while(a[z] == '0')
z++;
a = a+z;
return a;
}
char *change(char a[], int n, char b[], int m)
{
if(a[0]=='0' && b[0] == '0')
return "0";
else
if(n>=m)
a = add(a, n, b, m);
else
a = add(b, m, a, n);
return a;
}
void main()
{
char a[N], b[N], *s;
int n, m;
printf("Please input the first number: ");
gets(a);
printf("\n\nPlease input the second number: ");
fflush(stdin);
gets(b);
n = strlen(a)-1;
m = strlen(b)-1;
printf("\n\nThe first number add the second number is: ");
s = change(a, n, b, m);
puts(s);
}
#include<stdio.h>
#include<string.h>
char *sub(char a[], int n, char b[], int m) //大数相减
{
int z=0;
for( ; n>=0; n--, m--)
{
if(m>=0)
a[n] = a[n] - b[m] + '0';
else
a[n] = a[n];
if(a[n] < '0')
{
a[n] = a[n] +10;
a[n-1]--;
}
}
while(a[z] == '0')
z++;
a = a+z;
return a;
}
char *change(char a[], int n, char b[], int m)
{
if(n>m)
a = sub(a, n, b, m);
if(n<m)
{
printf("-");
a = sub(b, m, a, n);
}
if(n==m)
{
if(strcmp(a, b) > 0)
a = sub(a, n, b, m);
else
if(strcmp(a, b) <0)
{
printf("-");
a = sub(b, m, a, n);
}
else
return "0";
}
return a;
}
void main()
{
char a[100], b[100], *s;
int n, m;
printf("请输入被减数: ");
gets(a);
printf("\n\n请输入减数: ");
fflush(stdin);
gets(b);
n = strlen(a)-1;
m = strlen(b)-1;
printf("\n\n两数相减: ");
s = change(a, n, b, m);
puts(s);
printf("\n");
}