C语言练习题-C语言练习题实例67
题目:输入一个数组,将其中最大的元素与第一个元素交换,将最小的元素与最后一个元素交换,然后输出数组。
程序分析:通过遍历数组找到最大值和最小值的索引,并进行交换操作。
实例
#include <stdio.h>
#include <stdlib.h>
void swap(int *s, int i, int j) {
int temp = s[i];
s[i] = s[j];
s[j] = temp;
}
void arraySwap(int *s, int n) {
int maxIndex = 0;
int minIndex = 0;
int i;
for (i = 0; i < n; i++) {
if (s[i] > s[maxIndex]) {
maxIndex = i;
}
if (s[i] < s[minIndex]) {
minIndex = i;
}
}
swap(s, maxIndex, 0);
swap(s, minIndex, n - 1);
}
void printArray(int *s, int n) {
int i;
for (i = 0; i < n; i++) {
printf("%d ", s[i]);
}
printf("\n");
}
int main() {
int s[20];
int i, n;
printf("设置数组长度(<20): ");
scanf("%d", &n);
printf("输入 %d 个元素:\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &s[i]);
}
arraySwap(s, n);
printf("交换后的数组:\n");
printArray(s, n);
return 0;
}
以上代码执行输出结果为:
设置数组长度(<20): 5
输入 5 个元素:
12 123 4 65 21
交换后的数组:
123 12 21 65 4
在上述代码中,我们首先定义了一个swap
函数,用于交换数组中的两个元素。然后,我们通过遍历数组找到最大值和最小值的索引,分别与第一个元素和最后一个元素进行交换操作。最后,我们使用printArray
函数打印输出交换后的数组。
请注意,在swap
函数中,我们通过指针参数*s
来修改数组元素的值,从而实现了交换操作。