问题描述
从键盘输入十个整数,将其中最小的数字与输入的第一个数字交换,将最大的数字与输入的最后一个数字交换。例:
解决思路
- 先在数组中遍历一遍,找到其中的最大值与最小值;
- 再分别将最小值与数组中第一个数字交换,最大的值与最后一个数字交换,然后将交换后的结果输出。
代码实现
//获取数组最大值
int getMax(int* a, int n){
int max = 0;
for (int i = 1; i < n; i++) {
if (a[max] < a[i]) {
max = i;
}
}
return max;
}
//获取数组最小值
int getMin(int* a, int n) {
int min = 0;
for (int i = 1; i < n; i++) {
if (a[min] > a[i]) {
min = i;
}
}
return min;//注意返回的是下标
}
//交换两个数
void swap(int* a, int* b) {
int tmp = *a;
*a = *b;
*b = tmp;
}
//数据处理
void fun(int* a, int n) {
int min = getMin(a, n);//获取数组中的最小值下标
int max = getMax(a, n);//获取数组中最大值的下标
//分别交换数组元素
swap(&a[max], &a[n-1]);
swap(&a[min], &a[0]);
}
int main()
{
int num[10];
//输入数据
printf("请输入十个整数:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &num[i]);
}
//处理数据
fun(num, 10);
//输出数据
printf("处理后的数据如下:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", num[i]);
}
return 0;
}