用c语言写组一个最小数
时间: 2024-02-15 15:03:05 浏览: 23
好的,下面是用 C 语言编写组一个最小数的代码示例:
```c
#include <stdio.h>
// 宏定义常量
#define MAX_DIGITS 10
// 函数声明
void printArray(int arr[], int n);
void swap(int *x, int *y);
void sort(int arr[], int n);
int main() {
int arr[MAX_DIGITS];
int n, i;
printf("输入数字的个数(最多 %d 位):", MAX_DIGITS);
scanf("%d", &n);
printf("输入 %d 个数字:\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 排序
sort(arr, n);
// 输出最小数
printf("最小数为:");
if (arr[0] == 0) {
// 特殊情况:最小数以 0 开头
for (i = 1; i < n; i++) {
if (arr[i] != 0) {
swap(&arr[0], &arr[i]);
break;
}
}
}
printArray(arr, n);
return 0;
}
// 打印数组
void printArray(int arr[], int n) {
int i;
for (i = 0; i < n; i++) {
printf("%d", arr[i]);
}
printf("\n");
}
// 交换两个数字
void swap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}
// 冒泡排序
void sort(int arr[], int n) {
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
// 比较 a+b 和 b+a 的大小
if (arr[j] + arr[j+1] > arr[j+1] + arr[j]) {
swap(&arr[j], &arr[j+1]);
}
}
}
}
```
以上代码使用冒泡排序算法,通过比较数字的组合大小来实现排序。具体实现方法是,将两个数字分别拼接为 a+b 和 b+a 两个数,比较它们的大小,若前者小于后者,则交换它们的位置。最后将数组中的数字按顺序拼接起来,即得到最小数。