写出上述的C语言代码
时间: 2024-11-20 20:29:16 浏览: 4
在C语言中,你可以用以下代码来解决这个问题:
```c
#include <stdio.h>
#include <stdlib.h> // 引入sort函数库
// 定义一个结构体辅助比较
typedef struct {
int key;
int index;
} Item;
int compare(const void *a, const void *b) {
Item *item_a = (Item *) a;
Item *item_b = (Item *) b;
return item_a->key - item_b->key;
}
void find_min_and_second_min(int n, int keys[]) {
Item items[n];
for (int i = 0; i < n; i++) {
items[i].key = keys[i];
items[i].index = i;
}
qsort(items, n, sizeof(Item), compare); // 排序
if (n >= 2) {
printf("%d ", items[0].key); // 输出最小值
printf("%d\n", items[1].key); // 输出第二小值
} else {
printf("只有一个元素\n");
}
}
int main() {
int n, key;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &key);
keys[i] = key;
}
find_min_and_second_min(n, keys);
return 0;
}
```
这段代码首先创建了一个`Item`结构体来存储键值及其索引,然后通过`qsort`对数组进行排序,最后找出并打印最小值和(如果有)第二小值。注意在主函数中读取用户输入的键值,并将它们传递给`find_min_and_second_min`函数。
阅读全文