c语言怎么输入一个数组,实现将输入的n个数字按照从大到小的顺序输出,并且相同的只输出一次
时间: 2024-10-22 17:08:39 浏览: 29
zz.zip_动态数组输出相反
在C语言中,你可以通过以下几个步骤实现这个功能:
1. 定义一个大小为n的整数数组,用于存储输入的数字。
2. 使用`scanf`函数读取用户输入的n个数字并存入数组。
3. 遍历数组,使用`qsort`函数对数组进行排序(默认是从大到小),`qsort`需要自定义比较函数,这里可以使用`strcmp`或者`memcmp`的负值形式实现降序排列。
4. 删除数组中的重复元素。这一步可以用两个指针(一个正常遍历,一个指向已处理部分的末尾)来检查并删除重复项。
以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 自定义排序函数,降序排列
int compare(const void *a, const void *b) {
return (*(int*)b - *(int*)a); // 负值表示a比b大
}
void removeDuplicates(int arr[], int n) {
int i, j = 0;
for (i = 0; i < n; ++i) {
if (arr[i] != arr[j]) {
arr[++j] = arr[i];
}
}
n = j + 1; // 更新实际元素个数
}
int main() {
int n, i;
printf("Enter the number of elements: ");
scanf("%d", &n);
int arr[n];
// 输入数组元素
printf("Enter %d numbers in descending order:\n", n);
for (i = 0; i < n; ++i)
scanf("%d", &arr[i]);
// 对数组进行降序排序
qsort(arr, n, sizeof(int), compare);
// 删除重复元素
removeDuplicates(arr, n);
// 输出结果
printf("Array with unique elements in descending order:\n");
for (i = 0; i < n; ++i)
printf("%d ", arr[i]);
return 0;
}
```
当你运行程序时,它会让你输入n个数字,然后按照从大到小并去除重复的原则显示结果。
阅读全文