输入一个五位整数,对此整数中的五个数值进行从大到小的顺序排序,形成一个新的五位整数,并输出这个整数。要求:用函数调用
#include <stdio.h>
int getMaxFive(int n)
{
int a[5], i, j, k = 0, t;
while (n!=0){
a[k] = n%10;
n /= 10;
k++;
}
if (k != 5)return -1;
for (i = 0; i < k; ++i){
for (j = 0; j < k-i-1; ++j){
if (a[j] < a[j+1]){
t = a[j], a[j] = a[j+1], a[j+1] = t;
}
}
}
t = 0;
for (i = 0; i < k; ++i){
t = t*10 + a[i];
}
return t;
}
int main()
{
int e;
scanf("%d",&e);
e=getMaxFive(e);
printf ("%d\n", e);
return 0;
}
我把注释也写上吧,帮助你理解:
using System;
namespace FiveDigitNumberSort
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入一个五位整数:");
int number = int.Parse(Console.ReadLine());
// 调用Sort方法对数字进行排序
int sortedNumber = Sort(number);
// 输出排序后的数字
Console.WriteLine("排序后的数字为:" + sortedNumber);
}
static int Sort(int number)
{
// 定义一个数组,用来存储数字的每一位
int[] digits = new int[5];
// 遍历每一位,从高位到低位
for (int i = 4; i >= 0; i--)
{
digits[i] = number % 10;
number /= 10;
}
// 对数组进行排序,从大到小
Array.Sort(digits);
Array.Reverse(digits);
// 将排序后的数组转换为一个整数并返回
int sortedNumber = 0;
for (int i = 0; i < 5; i++)
{
sortedNumber = sortedNumber * 10 + digits[i];
}
return sortedNumber;
}
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话: