徐天育


私信TA

用户名:dotcpp0595196

访问量:741

签 名:

等  级
排  名 16760
经  验 794
参赛次数 0
文章发表 6
年  龄 0
在职情况 学生
学  校 长江大学
专  业 电子信息类

  自我简介:

TA的其他文章

解题思路:1.提前自定义最大值函数,最小值函数

2.利用for循环依次比较10个数,选出最小值并用 j 记录位置,将 arr[0] 与 arr[j] 互换其值

3.同样利用上述思想实现 arr[9] 与最大值互换


注意事项:在查找的过程中仅做查找,不做值的交换(与冒泡排序有区别)

参考代码:

# include <stdio.h>

int max(int x,int y)

{

    return x>y?x:y;

}


int min(int a,int b)

{

    return a<b?a:b;

}


int main()

{

    int arr[10];

    int m,n,i,j=0;

    for(i=0;i<10;i++){

        scanf("%d",&arr[i]);

    }


    m=arr[0];

    n=arr[9];


    for(i=1;i<10;i++){

        m=min(m,arr[i]);

        if(m==arr[i]){             //判断此时的arr[i]是否为最小值,若是则用 j 记录其位置

            j=i;

        }

    }

    arr[j]=arr[0];                   //将最小值与第一个数的位置互换

    arr[0]=m;

    

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

        n=max(n,arr[i]);

        if(n==arr[i]){               //判断此时的arr[i]是否为最大值,若是则用 j 记录其位置

            j=i;

        }

    }

    arr[j]=arr[9];                    //将最小值与第一个数的位置互换

    arr[9]=n;


    for(i=0;i<10;i++){

        printf("%d ",arr[i]);

    }

    return 0;

}


 

0.0分

0 人评分

  评论区

  • «
  • »