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