c语言输入N个无序的数,请将相同的数删成只剩下一个,并将删除后的数列从小到大排序后输出。(如输入:8 32 12 25 12 8 36 25 26 12 ,输出:8 12 25 26 32 36)
时间: 2024-03-05 12:51:19 浏览: 88
好的,这个问题可以使用C语言来实现。以下是解题思路:
1. 首先读入N个数,使用数组存储这N个数。
2. 定义一个新的数组,用于存储删除后的数列。
3. 遍历原始数列,将每个数与新数组中的数进行比较,如果相同则不加入新数组,否则加入新数组。
4. 对新数组进行排序,从小到大输出。
下面是实现代码:
```c
#include <stdio.h>
#define MAX 100
int main()
{
int num[MAX], new_num[MAX];
int n, i, j, k, flag;
printf("请输入N个数(以空格分隔):\n");
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &num[i]);
}
k = 0;
for (i = 0; i < n; i++) {
flag = 0;
for (j = 0; j < k; j++) {
if (num[i] == new_num[j]) {
flag = 1;
break;
}
}
if (!flag) {
new_num[k++] = num[i];
}
}
// 冒泡排序
for (i = 0; i < k - 1; i++) {
for (j = 0; j < k - i - 1; j++) {
if (new_num[j] > new_num[j + 1]) {
int temp = new_num[j];
new_num[j] = new_num[j + 1];
new_num[j + 1] = temp;
}
}
}
printf("删除后的数列为:\n");
for (i = 0; i < k; i++) {
printf("%d ", new_num[i]);
}
printf("\n");
return 0;
}
```
希望这个解答能够帮助你!
阅读全文