解题思路:
                通过对题目的分析我们不难发现,本题解题的思路有点像选择排序

        那么首先我们要将这10个数存储到数组中。找到10个数中的最大值和最小值以及这两个数的索引

        再通过交换下标值,最后输出数组
注意事项:

                这里有个陷阱(有特殊情况)

                1、当最大值在第一个,最小值在第二个时,就会发生错误

                   我们可以选择先将最大值和最后一个数交换,然后在交换最小值

                2、当最大值在第一个,最小值在最后一个这时只需交换一个就行


参考代码:

public class num_1045 {
    public static void main(String[] args) {
    
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[10];
        
        for (int i = 0; i < 10; i++) {
            arr[i] = sc.nextInt();
        }
        
        int min = arr[0], max = arr[9];
        int index1 = 0, index2 = 0, temp;//index1最大值下标,index2最小值下标
        
        for (int i = 0; i < 10; i++) {
            if (min >= arr[i]) {
                min = arr[i];
                index1 = i;
            }
            if (max <= arr[i]) {
                max = arr[i];
                index2 = i;
            }
        }
        
        temp = arr[9];//先交换最大值
        arr[9] = arr[index2];
        arr[index2] = temp;
        
        if (index1 != 9 || index2 != 0) {//当最大值在第一个,最小值在最后一个,这时只需交换一个就行
            temp = arr[0];
            arr[0] = arr[index1];
            arr[index1] = temp;
        }
        
        for (int a : arr) {
            System.out.print(a + " ");
        }
    }
}
点赞(0)
 

0.0分

14 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

sor 3年前 回复TA
最上面没有import ,最后一行是39行,你管这个叫:“30行”?
而且代码还是错的!这是你提交的代码吗?
你用这个代码提交能通过吗?