问题 问答题

请完成下列Java程序:将整型数组中的所有奇数移到所有偶数之前,并打印结果。要求初始化一个大小为10的数组,里面按照数组下标顺序存放0~9,输出交换位置后的数组。 注意:请勿改动main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。 程序运行结果如下: 9173546280 public class ex20_2 { private int[] a=new int[10]; public static void main(String[] args)ex20_2 obj20_2=new ex20_2 );obj20_2. method ( ); } public void init () {for(int i=0;i<a.length;i++) { a[i] =i;} } public void method() {int c,i,j;i=0;j=a.length-1;init();while(i<j){ while((a[i]%2==1)&&i<j) i++; while((a[j]%2==0)&&i<j) j-- if(i<j){ c=a [i]; ______________; a[j]=c; _______________; } } for(i=0;i<a.length;i++){ System.out.print(Integer.toString(a[i])); } }}

答案

参考答案:

解析:a[i]=a[j] i++ 本题主要考查数组操作while语句的嵌套。解题关键是会使用双向查找方法查找数组中的数,使用2个下标变量i,j分别从数组的第一个和最后一个元素开始向中间进行搜索,提高搜索效率,若a[i]为偶数,a[j]为奇数,则交换,同时i++,j--,即 i向右、j向左扫描;若a[i]为奇数,a[j]为偶数,则i++,j--;若a[i]为奇数,a[j]为奇数,则j不变,i++;若a[i]为偶数,a[j]为偶数,则i不变,j--;当i=j 时结束扫描。本题中,第1个空,交换a[i]和a[j],是上述算法中的第一种情况;第2个空, i++下标变量i向右移动。

单项选择题
多项选择题