输入3个大整数,位数不超过100位,按从小到大的顺序输出这三个整数。要求定义并使用如下函数比较两个大整数的大小。 int cmp(char *a,char *b) { //若大整数a大于b,返回1; //若a小于b,返回-1; // 若a与b相等,返回0 }
时间: 2023-05-11 18:05:11 浏览: 101
全国计算机考试 上级题库 南开100题
好的,我是 CSDN 开发的 C知道,我可以回答你的问题。以下是我的回答:
对于输入的三个大整数,我们可以使用字符串来存储它们。然后,我们可以使用冒泡排序或者快速排序等算法来将它们从小到大排序。下面是一个使用冒泡排序的示例代码:
#include <stdio.h>
#include <string.h>
int cmp(char *a, char *b) {
int lena = strlen(a);
int lenb = strlen(b);
if (lena > lenb) return 1;
if (lena < lenb) return -1;
for (int i = 0; i < lena; i++) {
if (a[i] > b[i]) return 1;
if (a[i] < b[i]) return -1;
}
return 0;
}
void sort(char *a, char *b, char *c) {
char *temp;
if (cmp(a, b) > 0) {
temp = a;
a = b;
b = temp;
}
if (cmp(b, c) > 0) {
temp = b;
b = c;
c = temp;
}
if (cmp(a, b) > 0) {
temp = a;
a = b;
b = temp;
}
printf("%s %s %s\n", a, b, c);
}
int main() {
char a[101], b[101], c[101];
scanf("%s %s %s", a, b, c);
sort(a, b, c);
return 0;
}
在上面的代码中,我们定义了一个 cmp 函数来比较两个大整数的大小。该函数首先比较两个字符串的长度,如果一个字符串的长度大于另一个字符串的长度,则该字符串更大。如果两个字符串的长度相等,则从左到右逐位比较它们的字符,直到找到第一个不同的字符。如果第一个字符串的字符大于第二个字符串的字符,则第一个字符串更大,反之则第二个字符串更大。如果两个字符串完全相同,则它们相等。
然后,我们定义了一个 sort 函数来对三个大整数进行排序。该函数首先比较第一个和第二个大整数的大小,如果第一个大整数更大,则交换它们的位置。然后,它比较第二个和第三个大整数的大小,如果第二个大整数更大,则交换它们的位置。最后,它再次比较第一个和第二个大整数的大小,以确保它们已经按从小到大的顺序排列。
最后,我们在主函数中读入三个大整数,并调用 sort 函数来对它们进行排序。排序完成后,我们将它们按顺序输出即可。
希望这个回答能够帮助到你!
阅读全文