c语言给定一个整数数组,请按从大到小的顺序输出该数组中元素,相同的元素只输出一次
时间: 2023-05-30 17:02:28 浏览: 57
示例代码:
```c
#include <stdio.h>
int main() {
int arr[] = {1, 3, 2, 4, 3, 2, 5, 4, 6, 7, 5, 8};
int len = sizeof(arr) / sizeof(arr[0]);
// 排序
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (arr[j] < arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
// 去重
int prev = arr[0];
printf("%d ", prev);
for (int i = 1; i < len; i++) {
if (arr[i] != prev) {
printf("%d ", arr[i]);
prev = arr[i];
}
}
return 0;
}
```
输出:
```
8 7 6 5 4 3 2 1
```
相关问题
c语言:将给定n个整数存入数组,将这n个数逆序存放然后按顺序输出数组中的元素
下面是使用C语言实现该功能的代码:
```c
#include <stdio.h>
#define MAX 100 // 数组最大长度
int main() {
int n, i;
int arr[MAX];
// 输入数组长度n和n个整数
printf("请输入数组长度n(不超过%d):", MAX);
scanf("%d", &n);
printf("请输入%d个整数:", n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 将数组逆序存放
int tmp;
for (i = 0; i < n / 2; i++) {
tmp = arr[i];
arr[i] = arr[n - i - 1];
arr[n - i - 1] = tmp;
}
// 按顺序输出数组元素
printf("逆序存放后的数组元素为:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
代码的思路是先输入数组长度和数组元素,然后使用一个循环将数组逆序存放,最后再使用另一个循环按顺序输出数组元素。
c语言 给定一个整数数组 nums,将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序
。这个问题可以使用双指针的方法来解决。设定两个指针 i 和 j,初始时分别指向数组的第一个元素。遍历整个数组,如果遇到非零元素,则将其赋值给 nums[i],并将 i 右移一位。如果遇到零元素,则 j 右移一位,直到找到下一个非零元素,并将其赋值给 nums[i],再将 i 右移一位。遍历结束后,将 j 之后的所有元素赋值为零即可。
以下是 C 语言代码实现:
void moveZeroes(int* nums, int numsSize){
int i = 0, j = 0;
while (j < numsSize) {
if (nums[j] != 0) {
nums[i++] = nums[j];
}
j++;
}
while (i < numsSize) {
nums[i++] = 0;
}
}