|
发表于 2020-12-11 18:19:28
|
显示全部楼层
本楼为最佳答案
这个题目原来看到过,也曾对其输出质疑过,无奈人家答案就是答案,不按这么修改程序,过不了系统,看你这边的需求吧
- // 给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。
- #include<stdio.h>
- #define n 5
- int main()
- {
- int i = 0, j, k, temp, a[20];
- printf("输入一组小于100的非负整数:");
- for(i = 0;i < n;i++)
- scanf("%d", &a[i]);
- k = i;
- for(i = 0;i < k;i++)
- {
- for (j = 0;j < k - 1;j++)
- {
- if ((a[j] >= 10) && (a[j + 1] >= 10) && (a[j] < a[j + 1]))
- {
- temp = a[j];
- a[j] = a[j + 1];
- a[j + 1] = temp;
- }
- if ((a[j] >= 10) && (a[j + 1] < 10) && (a[j] / 10 < a[j + 1]))
- {
- temp = a[j];
- a[j] = a[j + 1];
- a[j + 1] = temp;
- }
- else if ((a[j] < 10) && (a[j + 1] >= 10) && ((a[j] <= a[j + 1] / 10) && (a[j + 1] % 10 != 0)))
- {
- temp = a[j];
- a[j] = a[j + 1];
- a[j + 1] = temp;
- }
- else if ((a[j] < 10) && (a[j + 1] < 10) && (a[j] < a[j + 1]))
- {
- temp = a[j];
- a[j] = a[j + 1];
- a[j + 1] = temp;
- }
- }
- }
- for (i = 0;i < k;i++)
- printf("%d", a[i]);
- printf("\n");
- }
复制代码
*************************************************
输入一组小于100的非负整数:3 30 34 5 9
9534330
请按任意键继续 。 。 。
|
评分
-
查看全部评分
|