java。 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。

程序源代码:
main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int temp1,temp2,number,end,i,j;
printf("original array is:\n");
for(i=0;i<10;i++)
 printf("%5d",a[i]);
printf("\n");
printf("insert a new number:");
scanf("%d",&number);
end=a[9];
if(number>end)
 a[10]=number;
else
 {for(i=0;i<10;i++)
  { if(a[i]>number)
   {temp1=a[i];
    a[i]=number;
   for(j=i+1;j<11;j++)
   {temp2=a[j];
    a[j]=temp1;
    temp1=temp2;
   }
   break;//这个到底是干嘛 的。干嘛的呀!想了半天不知道呀!
   }
  }
}
for(i=0;i<11;i++)
 printf("%6d",a[i]);
}

我就是想问下,这个IF(里面的break)是干什么的,难道是跳出IF语句 的???

就是你如果已经找到刚好比他大的数字了,就跳出了
譬如1, 3, 5, 7, 11,你要入插入4,
当你找到第一个大于4的数字5的时候,就插入数据,不再检查后面的数字了追问

你是说跳出第一个for循环还是,跳出IF()。。。。if你不用break,他也跳出啊

追答

跳出的是第一个for循环。if如果你不写break,程序会继续走下一条循环的,

追问

是跳出第一个for循环,应该写在第一个FOR循环里面,干嘛写在
If( ...

break;
)的IF语句语句里面让人费解。。
上面是不是,可以写成
for(...
if(...for(...) )
break;
)

追答

你钻牛角拉。。。
如果按照你后面那样写,整个循环知会走一次。break跳出的是当前最近的循环,离if最近的循环就是第一个for..

追问

回答 跳出的是第一个for循环。if如果你不写break,程序会继续走下一条循环的,
你上面回答说跳出的是第一个FOR。
如果按照你后面那样写,整个循环知会走一次。break跳出的是当前最近的循环,离if最近的循环就是第一个for
第二次说,又是跳第一个FOR。
到底这个break是跳那个呀!你说的第一个FOR是不是else旁边的那个for呀!第3次问了,麻烦一次搞定我吧!在问要分数了。。55555

追答

我按照你的思路写一个完整的java的给你。
import java.util.Scanner;

public class B {

public static void main(String[] args) {

int nums[] = {1,4,6,9,13,16,19,28,40,100};
int[] newNums = new int[11];

System.out.print("Original array is: ");

for(int i = 0; i nums[9]){
newNums[10] = end;
}else{
for(int i = 0; i number){
newNums[i] = number;
for(int j = i + 1; j < newNums.length; j++){
newNums[j] = nums[i++];
}

break;
}
}
}

nums = newNums;

System.out.println("After inserting, the array is: ");
for(int i = 0; i < nums.length; i++){
System.out.print(nums[i] + ", ");
}

}

}

温馨提示:答案为网友推荐,仅供参考
相似回答