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

要用到函数调用的方法。。。。。。。速求!!!!!!!!!!... 要用到函数调用的方法。。。。。。。速求!!!!!!!!!! 展开
 我来答
绝妙又纯美灬爱人T
2014-11-22 · TA获得超过181个赞
知道小有建树答主
回答量:138
采纳率:100%
帮助的人:124万
展开全部

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

//注:此程序只能精确处理不同的10个数组元素。如果需要自己输入数组,或想要更多的元素比较,可以对程序进行修改
#include<stdio.h>
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<len;i++)
    {
        if(arr[i]>max)
            max=arr[i];
    }
    for(int n=0;n<len;n++)
    {
        if(arr[n]==max)
        {
            return n;
            break;
        }
    }
}
//寻找最小值和下标函数,返回下标
int findMin(int *arr,int len)
{
    int min=arr[0];
    for (int i=0 ;i<len;i++)
    {
        if(arr[i]<min)
            min=arr[i];
    }
    for(int n=0;n<len;n++)
    {
        if(arr[n]==min)
        {
            return n;
            break;
        }
    }
}

kaixingui2012
2014-11-22 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6498万
展开全部
#include <iostream>
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<<num[i]<< " ";
cout <<endl ;
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<n;i++)
{
if(numb[i]>max)
{
max=numb[i];
imax=i;
}
if(numb[i]<min)
{
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;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-11-22
展开全部
#include<stdio.h>
#include <stdlib.h>
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();

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-11-22
展开全部
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<<p[i];

}
纯手打,可能有些细节需要调整。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式