题目描述输入3个大整数,位数不超过100位,按从小到大的顺序输出这三个整数。要求定义并使用如下函数比较两个大整数的大小。
int cmp(char *a,char *b)
{
//若大整数a大于b,返回1;
//若a小于b,返回-1;
// 若a与b相等,返回0
}
输入输入有3行,每行输入一个大整数,位数不超过100位,输入不含前导0。
输出输出3行,即排序后的3个大整数。
样例输入1234567890123456789
99999999999999
111111111111111
样例输出99999999999999
111111111111111
1234567890123456789
#include<stdio.h>
#include<string.h>
int bj(char* a, char* b);
int main(){
char a[110], b[110], c[110], max[110];
scanf("%s%s%s", a, b, c);
if (bj(a, b) == 1)
strcpy(max, a), strcpy(a, b), strcpy(b, max);
if (bj(a, c) == 1)
strcpy(max, a), strcpy(a, c), strcpy(c, max);
if (bj(b, c) == 1)
strcpy(max, b), strcpy(b, c), strcpy(c, max);
printf("%s\n%s\n%s\n", a, b, c);
return 0;
}
int bj(char* a, char* b){
int len1 = strlen(a), len2 = strlen(b);
if (a[0] == '-'&&b[0] != '-')return -1; // a<b
else
if (a[0] != '-'&&b[0] == '-')return 1; // a>b
else
if (a[0] == '-'&&b[0] == '-'){
if (len1 > len2) return -1; // a<b
else if (len2 > len1) return 1; //a>b
else {
if (strcmp(a, b) > 0) return -1;
else if (strcmp(a, b) < 0) return 1;
else return 0;
}
}
if (a[0] != '-'&&b[0] != '-'){
if (len1 < len2) return -1; // a<b
else if (len2 < len1) return 1; //a>b
else {
if (strcmp(a, b) < 0) return -1; //a<b
else if (strcmp(a, b) > 0) return 1; //a>B
else return 0;
}
}
return 0;
}
还是用Python吧
a = [0] * 3
a[0] = int(input())
a[1] = int(input())
a[2] = int(input())
a.sort()
print(a[0])
print(a[1])
print(a[2])