用 C语言编写程序,任意输入一个4位自然数,调用函数输出该自然数的各位数字组成的最大数(提示:需要定义两个函数fun(),sort(),主函数接受任意4位整型数据的键盘输入,主函数调用fun(),该函数主要实现把这个4位自然数逐个拆开成单个数字,并存放在一个数组里面,然后调用sort()函数,该函数的形参有两个,数组和数组元素的个数,主要完成将传入的数组里面的元素从大到小的排序,回到fun()函数后,将排序好了的数组中的4个单个数字组合成一个整型数字返回给主函数,主函数完成屏幕输出)。
时间: 2024-02-11 08:06:29 浏览: 113
好的,这是一个比较典型的 C 语言编程问题,我会为您给出代码和解释。
```c
#include <stdio.h>
// 函数声明
void fun(int num, int *arr);
void sort(int *arr, int len);
int main()
{
int num, arr[4];
printf("请输入一个4位自然数:");
scanf("%d", &num);
// 调用 fun 函数,将 num 拆分成数组
fun(num, arr);
// 调用 sort 函数,将数组排序
sort(arr, 4);
// 将排序好的数组组合成一个整数
int result = arr[0] * 1000 + arr[1] * 100 + arr[2] * 10 + arr[3];
printf("该自然数的各位数字组成的最大数为:%d\n", result);
return 0;
}
// 将 num 拆分成数组
void fun(int num, int *arr)
{
for (int i = 0; i < 4; i++)
{
arr[i] = num % 10;
num /= 10;
}
}
// 将数组排序
void sort(int *arr, int len)
{
for (int i = 0; i < len - 1; i++)
{
for (int j = i + 1; j < len; j++)
{
if (arr[i] < arr[j])
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
```
代码中,我们首先定义了两个函数 `fun` 和 `sort`,分别用于将输入的自然数拆分成数组,并将数组进行排序。在 `main` 函数中,我们首先接受用户输入的自然数,并调用 `fun` 函数将其拆分成数组。然后,我们调用 `sort` 函数将数组中的元素从大到小排序。最后,我们将排序好的数组组合成一个整数,并输出到屏幕上。
需要注意的是,在 C 语言中,我们可以通过指针来传递数组,这样可以避免函数调用时额外复制一份数组,从而提高程序的效率。同时,在 `sort` 函数中,我们使用了冒泡排序的算法,将数组中的元素从大到小进行排序。
希望这段代码能够帮助您理解如何用 C 语言解决这个问题。
阅读全文