解题思路:
通过对题目的分析我们不难发现,本题解题的思路有点像选择排序
那么首先我们要将这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分
17 人评分
C语言训练-斐波纳契数列 (C语言代码)浏览:3015 |
C语言训练-排序问题<1> (C语言代码)浏览:636 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:467 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)浏览:822 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:631 |
陈教主的三角形 (C语言代码)浏览:1196 |
输入输出格式练习 (C语言代码)浏览:773 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:420 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:592 |
数列排序 (C语言代码)浏览:674 |