用指针方式编写程序:从键盘输入10个整型数据并存入数组,要求将10个数中最大的数与第一个输入的数交换;将10个数中最小的数与最后的一个输入的数交换。
时间: 2024-09-15 22:08:14 浏览: 56
在C语言中,我们可以使用指针来实现这个需求。下面是一个简单的程序,它会从用户那里输入10个整数,并按照要求交换最大值和第一个数,以及最小值和最后一个数。
```c
#include <stdio.h>
#include <stdlib.h> // 包含malloc函数
int* inputAndStore(int* arr, int n) {
int max = arr[0], min = arr[0]; // 初始化max和min为第一个元素
for (int i = 1; i < n; i++) {
int num;
scanf("%d", &num);
arr[i] = num;
if (num > max) {
max = num;
} else if (num < min) {
min = num;
}
}
// 交换最大值和第一个数
if (arr[0] != max) {
int temp = arr[0];
arr[0] = max;
*(&arr[n]) = temp; // 使用指针间接访问数组最后一元素
}
// 交换最小值和最后一个数
if (arr[n-1] != min) {
temp = arr[n-1];
arr[n-1] = min;
arr[0] = temp; // 因为已处理了第一个元素,所以再次更新第一个元素
}
return arr;
}
int main() {
int size = 10;
int* array = (int*) malloc(size * sizeof(int)); // 动态分配内存
array = inputAndStore(array, size);
printf("Array after swapping: ");
for (int i = 0; i < size; i++) {
printf("%d ", array[i]);
}
free(array); // 释放动态分配的内存
return 0;
}
阅读全文