0
点赞
收藏
分享

微信扫一扫

C语言一维数组的最大值和最小值依次放入一个新的数组中,依次类推

人间四月天i 2022-04-19 阅读 61
c语言

#include <stdio.h>
#define N 9
void fun(int a[],int n)
{
    int i,j,max,min,px,pn,t;
    for(i=0;i<n-1;i+=2)//隔两个开始
    {
        max=min=a[i];//求最大值和最小值
        px=pn=i;//记录数组下标的位置
        for(j=i+1;j<n;j++)//从i+1开始,与所有的下一位进行比较
        {
            if(max<a[j])//后一个数与max作比较
            {
                max=a[j];//满足条件替换
                px=j;//同时数组下标也替换
            }
            if(min>a[j])//后一个数与min作比较
            {
                min=a[j];//满足条件替换
                pn=j;
            }
        }
        if(px!=i)//判断px是不是等于第一个最大值数字的地址
        {
            t=a[i];//相当于每一个项数
            a[i]=max;//符合条件就替换大for定义的第一个数组的数
            a[px]=t;
            if(pn==i)//如果最小值和开始定义的数相同,那么它就是最小的数
                pn=px;
        }
        if(pn!=i+1)//同理,这是最小值的判断情况
        {
            t=a[i+1];
            a[i+1]=min;
            a[pn]=t;
        }
    }
}
void main()
{
    int b[N]={1,4,2,3,9,6,5,8,7},i;
    printf("\n输入:\n");
    for(i=0;i<N;i++)
        printf("%4d",b[i]);//输入数组
    printf("\n");
    fun(b,N);//调用fun函数
    printf("\n输出:\n");
    for(i=0;i<N;i++)
        printf("%4d",b[i]);
    printf("\n");
}


 

 

举报

相关推荐

0 条评论