Description
输入3个大整数,位数不超过100位,按从小到大的顺序输出这三个整数。要求定义并使用如下函数比较两个大整数的大小。
int cmp(char *a,char *b)
{
//若大整数a大于b,返回1;
//若a小于b,返回-1;
// 若a与b相等,返回0
}
Input
输入有3行,每行输入一个大整数,位数不超过100位,输入不含前导0。
Output
输出3行,即排序后的3个大整数。
Sample Input
123456789012345678999999999999999111111111111111
Sample Output
999999999999991111111111111111234567890123456789
HINT
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 105
int cmp(char *a,char *b);
//若大整数a大于b,返回1;
//若a小于b,返回-1;
// 若a与b相等,返回0
int main()
{
char p[3][N];
char *q;
q=(char *)malloc(sizeof(char)*N);
int i,j;
for(i=0; i<3; i++)
gets(p[i]);
for(i=0; i<3; i++)
for(j=i+1; j<3; j++)
{
if(cmp(p[i],p[j])==1)
{
strcpy(q,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],q);
}
}
for(i=0; i<3; i++)
puts(p[i]);
return 0;
return 0;
}
int cmp(char *a,char *b)
{
int len1,len2,max;
int i;
len1=strlen(a);
len2=strlen(b);
max=(len1<len2)?len2:len1;
if(a[0]=='-'&&b[0]=='-')
{
if(len1!=len2)
{
if(len1>len2)
return 1;
else
return -1;
}
else
{
for(i=0; i<max; i++)
{
if(a[i]>b[i])return -1;
if(a[i]<b[i])return 1;
}
return 0;
}
}
if(a[0]!='-'&&b[0]!='-')
{
if(len1!=len2)
{
if(len1>len2)
return 1;
else
return -1;
}
else
{
for(i=0; i<max; i++)
{
if(a[i]<b[i])return -1;
if(a[i]>b[i])return 1;
}
return 0;
}
}
if(a[0] == '-' && b[0] != '-')
return -1;
if(a[0] != '-' && b[0] == '-')
return 1;
return 0;
}