输入 10个未排序的整数存入数组 a,要求通过指针法设计函数hanshu(),将值大的元素与第一个元素进行值交换,值最小的元素与最后一个元素进行值交换,在主函数输出交换后的数组。
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void hanshu(int *arr, int n) {
int max = arr[0];
int maxIndex = 0;
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
maxIndex = i;
}
}
swap(&arr[0], &arr[maxIndex]);
int min = arr[n - 1];
int minIndex = n - 1;
for (int i = n - 2; i >= 0; i--) {
if (arr[i] < min) {
min = arr[i];
minIndex = i;
}
}
swap(&arr[minIndex], &arr[n - 1]);
}
int main() {
int arr[10];
printf("请输入10个整数:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
hanshu(arr, 10);
printf("交换后的数组为:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
如果解决您的问题,请采纳,谢谢。
【以下回答由 GPT 生成】
问题的主要目标是使用指针法设计一个函数来交换数组中的最大值和最小值。为了更好地理解问题,让我们先定义一个问题的示例。
示例问题: 给定一个未排序的数组a,其中包含10个整数。需要编写一个函数hanshu()
,通过指针法将数组中的最大值与第一个元素进行交换,并将最小值与最后一个元素进行交换。然后,在主函数中输出交换后的数组。
为了解决这个问题,我们可以按照以下步骤设计解决方案:
hanshu()
的函数,该函数接受一个整数型指针(即数组)和数组长度作为参数。hanshu()
函数中,遍历数组,找到最大值和最小值以及它们对应的索引。hanshu()
函数,传入数组和数组长度作为参数。下面是具体的解决方案代码:
#include <stdio.h>
// 定义hanshu()函数
void hanshu(int* arr, int length) {
int maxIndex = 0;
int minIndex = 0;
int i;
// 查找数组中的最大值和最小值以及它们的索引
for (i = 1; i < length; i++) {
if (arr[i] > arr[maxIndex]) {
maxIndex = i;
}
if (arr[i] < arr[minIndex]) {
minIndex = i;
}
}
// 使用指针法交换最大值和第一个元素
int temp = arr[0];
arr[0] = arr[maxIndex];
arr[maxIndex] = temp;
// 使用指针法交换最小值和最后一个元素
temp = arr[length - 1];
arr[length - 1] = arr[minIndex];
arr[minIndex] = temp;
}
int main() {
int arr[10] = {5, 2, 8, 1, 4, 7, 3, 9, 6, 10};
int length = sizeof(arr) / sizeof(arr[0]);
int i;
// 调用hanshu()函数
hanshu(arr, length);
// 输出交换后的数组
for (i = 0; i < length; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
运行上述代码将会输出交换后的数组。注意,这只是一个示例,你可以根据你的需求自定义数组。
希望这个解决方案十分清晰易懂,若有任何疑问,请随时向我提问。
【相关推荐】