输入10个不等的整数,找出最大数和第一个数交换位置,次大数和第二个数交换。 输入样例 19 8 7 5 6 4 1 2 20 3 输出样例 20*19*7*5*6*4*1*2*8*3*
时间: 2024-11-10 07:12:48 浏览: 8
C++通过自定义函数找出一个整数数组中第二大数的方法
5星 · 资源好评率100%
要编写一个程序,根据您的要求找到最大的数和第一个数交换,次大的数和第二个数交换,我们可以使用两个变量分别存储当前的最大值(max)和次大值(second_max)。遍历输入数组,更新这两个变量,然后进行交换。以下是C语言的代码实现:
```c
#include <stdio.h>
int main() {
int arr[10], max, second_max, temp;
// 输入10个不等的整数
printf("请输入10个不等的整数(用空格分隔):");
for (int i = 0; i < 10; ++i) {
scanf("%d", &arr[i]);
}
// 初始化最大值和次大值为数组的第一个元素
max = second_max = arr[0];
// 遍历数组,查找最大值和次大值
for (int i = 1; i < 10; ++i) {
if (arr[i] > max) {
second_max = max;
max = arr[i];
} else if (arr[i] > second_max && arr[i] != max) {
second_max = arr[i];
}
}
// 找到最大值对应的索引
int max_index = -1;
for (int i = 0; i < 10; ++i) {
if (arr[i] == max) {
max_index = i;
break;
}
}
// 找到次大值对应的索引
int second_max_index = -1;
for (int i = 0; i < 10; ++i) {
if (arr[i] == second_max && i != max_index) {
second_max_index = i;
break;
}
}
// 交换最大值和第一个数,次大值和第二个数
if (max_index != 0) {
temp = arr[0];
arr[0] = max;
arr[max_index] = temp;
}
if (second_max_index != 1 && second_max_index != max_index) {
temp = arr[1];
arr[1] = second_max;
arr[second_max_index] = temp;
}
// 输出修改后的数组,由于题目要求显示交换操作的结果而不是原始数字,所以这里省略了输出数组
// 只输出交换后的对应位置
printf("*%d*", max);
if (second_max_index != 1) {
printf("*%d*", second_max);
}
return 0;
}
```
阅读全文