C语言输入若干个整数,输入-1时停止输入。输出删去唯一最大值后的所有值,并将结果从小到大排序输出
时间: 2023-12-10 14:38:35 浏览: 30
以下是实现该功能的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
int main() {
int nums[MAX_SIZE], unique_max, max_index, n = 0;
// 输入整数
printf("请输入若干个整数(输入-1停止):\n");
while (1) {
int num;
scanf("%d", &num);
if (num == -1) {
break;
}
nums[n++] = num;
}
// 查找唯一最大值
unique_max = nums[0];
max_index = 0;
for (int i = 1; i < n; i++) {
if (nums[i] > unique_max) {
unique_max = nums[i];
max_index = i;
} else if (nums[i] == unique_max) {
unique_max = -1; // 不唯一,用-1标记
}
}
// 删除唯一最大值
if (unique_max != -1) {
for (int i = max_index; i < n - 1; i++) {
nums[i] = nums[i + 1];
}
n--;
}
// 排序并输出
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (nums[i] > nums[j]) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
}
printf("删去唯一最大值后的所有值(从小到大排序)为:\n");
for (int i = 0; i < n; i++) {
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
```
程序的思路如下:
1. 先输入若干个整数;
2. 查找唯一最大值,并删除唯一最大值;
3. 对剩余的数进行排序,并输出。
例如,输入以下数据:
```
5 3 2 1 4 7 6 8 9 -1
```
则输出结果为:
```
删去唯一最大值后的所有值(从小到大排序)为:
1 2 3 4 5 6 7 8
```