用c语言实现请应用数组存储用户输入的10个整数,编写算法将该数组按照从小到大的顺序排列好。用户再输入1个整数,编写代码把它插入原数列中,要求仍然保持从小到大有序。 编写程序时应考虑到所插入数的各种可能性(比原来所有的数都小;比原来所有的数都大;在最大数和最小数之间)。 输入格式: 请在一行中输入10整数,数据间以空格为间隔。 再在一行中输入1个待插入的整数。 输出格式: 将插入前后排好的有序序列分别在一行内输出,每个数的显示格式:占3位,右对齐。
时间: 2023-07-16 12:14:47 浏览: 102
C语言程序设计-编写函数fun对主程序中用户输入的具有10个数据的数组a按由大到小排序,并在主程序中输出排序结果;
5星 · 资源好评率100%
以下是用C语言实现的代码:
```
#include <stdio.h>
void sort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
int main() {
int arr[10], n, i, j, temp;
for (i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
sort(arr, 10);
scanf("%d", &n);
if (n < arr[0]) { // 如果插入数比原数组所有数都小
for (i = 9; i >= 0; i--) {
arr[i + 1] = arr[i];
}
arr[0] = n;
} else if (n > arr[9]) { // 如果插入数比原数组所有数都大
arr[10] = n;
} else { // 如果插入数在最大数和最小数之间
for (i = 0; i < 10; i++) {
if (arr[i] > n) {
for (j = 9; j >= i; j--) {
arr[j + 1] = arr[j];
}
arr[i] = n;
break;
}
}
}
printf("排序前:\n");
for (i = 0; i < 10; i++) {
printf("%3d", arr[i]);
}
printf("\n");
sort(arr, 11);
printf("排序后:\n");
for (i = 0; i < 11; i++) {
printf("%3d", arr[i]);
}
printf("\n");
return 0;
}
```
代码分为两个函数:sort()和main()。sort()函数用于对数组进行排序,main()函数用于实现输入、插入、排序和输出。此外,还有一个if-else语句判断插入数的位置,分别处理三种情况。
输入10个整数和1个待插入的整数后,程序会输出排序前和排序后的数组。每个数占3位,右对齐。
阅读全文