编写程序,输入一维数组的10个元素,并将最小值与第一个数交换,最大值与最后一个数交换,然后输出这些数

2024-11-10 10:24:18
推荐回答(4个)
回答(1):

给你一个C语言的思路吧;

//注:此程序只能精确处理不同的10个数组元素。如果需要自己输入数组,或想要更多的元素比较,可以对程序进行修改
#include
void Change(int *a,int *b);
int findMax(int *arr,int len);
int findMin(int *arr,int len) ;
int main(void)
{
    int arr[10]={5,2,3,4,1,6,7,19,8,12};
    int maxN,minN,lenth=10;
    //寻找最小值、下标
    minN=findMin(arr,lenth);
    //最小值与第一个数交换
    Change(&arr[minN],&arr[0]);
    //寻找最大值、下标
    maxN=findMax(arr,lenth);
    //最大值与最后一位交换
    Change(&arr[maxN],&arr[9]);
    //数组输出
    for(int j=0;j<10;j++)
        printf(" %d ",arr[j]);
    return 0;
}

//定义交换函数,指针方法实现交换数字
void Change(int *a,int *b)
{
    int t;
    t=*a;
    *a=*b;
    *b=t;
}
//寻找最大值和下标函数,返回下标
int findMax(int *arr,int len)
{
    int max=arr[0];
    for (int i=0 ;i    {
        if(arr[i]>max)
            max=arr[i];
    }
    for(int n=0;n    {
        if(arr[n]==max)
        {
            return n;
            break;
        }
    }
}
//寻找最小值和下标函数,返回下标
int findMin(int *arr,int len)
{
    int min=arr[0];
    for (int i=0 ;i    {
        if(arr[i]            min=arr[i];
    }
    for(int n=0;n    {
        if(arr[n]==min)
        {
            return n;
            break;
        }
    }
}

回答(2):

#include 
using namespace std;

int main()
{
void max_min(int [],int n) ; // 找到最大值和最小值,并交换位置
int num[10];
int i;
for(i=0;i<10;i++)// 输入10个数
cin>>num[i];

max_min (num,10);

for(i=0;i<10;i++)// 输出10个数
cout< cout < return 0 ;
}

void max_min(int numb[],int n)
{
int i, imax=0, imin=0;
int max=numb[0],min=numb[0];
for(i=1;i {
if(numb[i]>max)
{
max=numb[i];
imax=i;
}
if(numb[i] {
min=numb[i];
imin=i;
}
}
numb[imin]=numb[0]; //最小值与第一个数交换
numb[0]=min;
if ( imax==0 ) //若最大值所在位置是0,则上面被换到了imin位置。
imax=imin ;
numb[imax]=numb[n-1];//最大值与最后一个数交换
numb[n-1]=max;
}

回答(3):

#include
#include 
void sawp(int *a, int *b){
int temp;
temp = *a;
*a = *b;
*b = temp;
}


void main(){
int a[10];
int i, j,max,min,k,m,temp;
for (i = 0; i < 10; i++){
scanf("%d", &a[i]);

if (i == 0) { max = min = a[0]; m = k = 0; }
if (max < a[i]){ max = a[i], k = i; }
if (min > a[i]){ min = a[i], m = i; }
}

sawp(&a[0],& a[k]);
sawp(&a[0], &a[m]);
for (i = 0; i < 10; i++)
printf("%d ",a[i]);

getchar();

}

回答(4):

void swap(int&a, int&b)
{
a ^= b;

b ^= a;

a ^= b;

}
void func(int* p)
{
int minIndex = 0;
int maxIndex = 9;

for (int i = 1; i < 9; ++i)

{

if (p[minIndex] > p[i])

minIndex = i;

if (p[maxIndex] < p[i])

maxIndex = i;

}
swap(p[0], p[minIndex]);

swap(p[9], p[maxIndex]);

for (int i = 0; i < 9; ++i)

cout<
}
纯手打,可能有些细节需要调整。