C语言题目:输入10个整数,将其中最小的数与第1个数对换,把最大的数与最后一个数对换。第3个函数:①输入10个数;②进行处理;③输出10个数。 其中第1个数代表要输入10个整数,第2个数代表要对这10个数进行处理,第3个数代表要输出10个数字。
时间: 2023-06-14 08:03:44 浏览: 64
以下是符合要求的C语言代码:
```c
#include <stdio.h>
// 交换两个数的值
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 找到最大值和最小值的下标
void find_min_and_max_idx(int arr[], int len, int *min_idx, int *max_idx) {
*min_idx = *max_idx = 0; // 初始值为第一个数的下标
for (int i = 1; i < len; i++) {
if (arr[i] < arr[*min_idx]) {
*min_idx = i;
}
if (arr[i] > arr[*max_idx]) {
*max_idx = i;
}
}
}
// 输入10个数
void input(int arr[], int len) {
printf("请输入10个整数:\n");
for (int i = 0; i < len; i++) {
scanf("%d", &arr[i]);
}
}
// 进行处理
void process(int arr[], int len) {
int min_idx, max_idx;
find_min_and_max_idx(arr, len, &min_idx, &max_idx);
swap(&arr[0], &arr[min_idx]); // 将最小值与第一个数对换
swap(&arr[len-1], &arr[max_idx]); // 将最大值与最后一个数对换
}
// 输出10个数
void output(int arr[], int len) {
printf("处理后的结果为:\n");
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int arr[10];
input(arr, 10);
process(arr, 10);
output(arr, 10);
return 0;
}
```
注:本代码中使用了指针来传递参数,以避免在函数内部进行大量的数组复制操作。