c语言完成: 有一个长度为n的整数序列。请写一个程序,先把序列中的最小值与第一个数交换,再把最大值与最后一个数交换。输出转换好的序列。分别编写两个函数MinIndex()和 MaxIndex()来计算最小值下标和最大值下标。 int MinIndex(int all[],intn);//函数返回数组a中最小元素的下标 int MaxIndex(int all[], int n);//函数返回数组a中最大元素的下标 数组元素的输出调用函数PrintArr() 输入包括两行。 第一行为正整数n(1≤n≤10)。 第二行为n个正整数组成的序列,保证没有重复元素。 输出转换好的序列。数据之间用空格隔开。 输入示例: 5 5 4 1 2 3 输出示例: 1 4 3 2 5
时间: 2023-02-12 12:53:42 浏览: 176
以下是完成上述任务的 C 语言代码:
#include <stdio.h>
// 函数返回数组 all 中最小元素的下标
int MinIndex(int all[], int n) {
int min = all[0];
int min_index = 0;
for (int i = 1; i < n; i++) {
if (all[i] < min) {
min = all[i];
min_index = i;
}
}
return min_index;
}
// 函数返回数组 all 中最大元素的下标
int MaxIndex(int all[], int n) {
int max = all[0];
int max_index = 0;
for (int i = 1; i < n; i++) {
if (all[i] > max) {
max = all[i];
max_index = i;
}
}
return max_index;
}
// 输出数组元素,数据之间用空格隔开
void PrintArr(int all[], int n) {
for (int i = 0; i < n; i++) {
printf("%d ", all[i]);
}
printf("\n");
}
int main() {
int n;
scanf("%d", &n);
int all[10];
for (int i = 0; i < n; i++) {
scanf("%d", &all[i]);
}
// 把序列中的最小值与第一个数交换
int min_index = MinIndex(all, n);
int temp = all[0];
all[0] = all[min_index];
all[min_index] = temp;
// 把最大值与最后一个数交换
int max_index = MaxIndex(all, n);
temp = all[n - 1];
all[n - 1] = all[max_index];
all[max_index] = temp;
// 输出转换好的序列
PrintArr(all, n);
return 0;
}
阅读全文