原题链接:[编程入门]自定义函数之整数处理
解题思路:
通过对题目的分析我们不难发现,本题解题的思路有点像选择排序
那么首先我们要将这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分
14 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复