ZZULIOJ 1169: 大整数(指针专题)

题目描述输入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])


  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值