用C语言编程:随机产生一个长度为30的整数数组,编程查找数组中最小元素,次小元素,第三小元素,并将这三个元素分别与数组的前三个元素交换,输出交换前后的数组内容。注:需考虑到数组前三个元素中是否有最小元素,次小元素,第三小元素的情况
时间: 2024-03-10 19:49:24 浏览: 58
好的,我可以帮您解决这个问题。以下是C语言的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int arr[30];
int i, j, temp, min, second_min, third_min;
// 初始化随机数种子
srand((unsigned)time(NULL));
// 随机生成30个整数并存入数组
for(i=0; i<30; i++) {
arr[i] = rand() % 100;
printf("%d ", arr[i]);
}
printf("\n");
// 查找最小元素、次小元素、第三小元素
min = arr[0];
second_min = third_min = 100;
for(i=0; i<30; i++) {
if(arr[i] < min) {
third_min = second_min;
second_min = min;
min = arr[i];
} else if(arr[i] < second_min) {
third_min = second_min;
second_min = arr[i];
} else if(arr[i] < third_min) {
third_min = arr[i];
}
}
// 将这三个元素分别与数组的前三个元素交换
for(i=0; i<30; i++) {
if(arr[i] == min) {
temp = arr[0];
arr[0] = min;
arr[i] = temp;
break;
}
}
for(i=0; i<30; i++) {
if(arr[i] == second_min) {
temp = arr[1];
arr[1] = second_min;
arr[i] = temp;
break;
}
}
for(i=0; i<30; i++) {
if(arr[i] == third_min) {
temp = arr[2];
arr[2] = third_min;
arr[i] = temp;
break;
}
}
// 输出交换前后的数组内容
printf("交换前的数组内容:\n");
for(i=0; i<30; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
以上代码会先随机生成一个长度为30的整数数组,并将数组内容输出。接着,它会查找数组中的最小元素、次小元素、第三小元素,并将它们分别与数组的前三个元素交换。最后,程序会输出交换前后的数组内容。
阅读全文