解题思路:
通过对题目的分析我们不难发现,本题解题的思路有点像选择排序
那么首先我们要将这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分
2 人评分
【C语言训练】求矩阵的两对角线上的元素之和 (C语言代码)浏览:2111 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:564 |
【回文数(二)】 (C语言代码)浏览:538 |
简单的a+b (C语言代码)浏览:501 |
程序员的表白 (C语言代码)浏览:396 |
WU-[蓝桥杯][算法提高VIP]企业奖金发放 (C++代码)浏览:957 |
WU-整除问题 (C++代码)浏览:407 |
WU-拆分位数 (C++代码)浏览:676 |
简单的a+b (C语言代码)浏览:432 |
WU-C语言程序设计教程(第三版)课后习题11.12 (C++代码)(想学链表的小伙伴可以看看)浏览:666 |