输入N个无序的数,请将相同的数删成只剩下一个,并将删除后的数列从小到大排序后输出。(如输入:8 32 12 25 12 8 36 25 26 12 ,输出:8 12 25 26 32 36)输入要求二行,第一行整数N(小于1000),表示有N个整数; 第二行,N个无序的整数(小于32767)输出格式要求排序后并删除相同整数输出。用C语言实现
时间: 2024-03-07 12:46:44 浏览: 96
好的,下面是用C语言实现的代码:
```c
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return *(int*)a - *(int*)b; // 比较函数用于qsort排序
}
int main() {
int n, i, j;
scanf("%d", &n); // 输入整数个数
int nums[n];
for (i = 0; i < n; i++) {
scanf("%d", &nums[i]); // 输入无序的整数数组
}
qsort(nums, n, sizeof(int), compare); // 对数组从小到大排序
printf("%d ", nums[0]); // 先输出第一个数字
for (i = 1; i < n; i++) {
if (nums[i] != nums[i-1]) { // 如果相邻的两个数字不同,则输出当前数字
printf("%d ", nums[i]);
}
}
return 0;
}
```
如果您输入的数字是:8 32 12 25 12 8 36 25 26 12,那么程序将会输出:8 12 25 26 32 36。
希望能够帮助到您!
相关问题
输入N个无序的数,请将相同的数删成只剩下一个,并将删除后的数列从小到大排序后输出。(如输入:8 32 12 25 12 8 36 25 26 12 ,输出:8 12 25 26 32 36)
好的,这个问题可以用哈希表来解决。具体步骤如下:
1. 首先,遍历输入的数列,将每个数作为哈希表的键,值设为1(或任意非0值),加入哈希表中。
2. 遍历完后,将哈希表的所有键按从小到大的顺序取出,组成新的数列。
这样,就能得到删除重复数后的有序数列。下面是具体的代码实现:
```python
def remove_duplicates(nums):
hash_table = {}
for num in nums:
hash_table[num] = 1
sorted_nums = sorted(hash_table.keys())
return sorted_nums
```
示例输入:`[8, 32, 12, 25, 12, 8, 36, 25, 26, 12]`,输出:`[8, 12, 25, 26, 32, 36]`。
需要注意的是,哈希表的实现方式可以选择字典、集合等。此外,排序算法的选择也可以根据具体情况来确定,此处使用了Python内置的sorted函数。
c语言输入N个无序的数,请将相同的数删成只剩下一个,并将删除后的数列从小到大排序后输出。(如输入:8 32 12 25 12 8 36 25 26 12 ,输出:8 12 25 26 32 36)
好的,这个问题可以使用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;
}
```
希望这个解答能够帮助你!
阅读全文