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] + ", ");
}

}

}

温馨提示:内容为网友见解,仅供参考
无其他回答

...现输入一个数,要求按原来的规律将它插入数组中,试编写程序。_百度知 ...
【答案】:程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。程序源代码如下。main(){ int a[11]=(1,4,6,9,13,16,19,28,40,100};int tempI,temp2,number,end,i,j;printf("original array is:\\n");for(i=0:i<10...

...现输入一个数,要求按原来的规律将它插入数组中。
import java.util.Scanner;public class Prog30{ public static void main(String[] args){ int[] A = new int[]{0,8,7,5,9,1,2,4,3,12};int[] B = sort(A);print(B);System.out.println();System.out.print(" 请输入 10 个数的数组: ");Scanner scan = new Scanner(System...

...现输入一个数,要求按原来的规律将它插入数组中。
private static int[] insert(int[] a,int in){ int[] copy = new int[a.length+1];\/\/新建一个临时数组,长度比原数要大1 copy[0]=in;\/\/先将要插入的数据放入第一单元格 \/\/原来数组中的数复制过来,存在第二格为开始的单元格中 for(int i=0; i<a.length; i++)copy[i+1]=a[i...

已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入...
最后一个循环输出插入数后的数组各元素值。程序运行时,输入数47。从结果中可以看出47已插入到54和 28之间。

有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组...
int a[11]={1,4,6,9,13,16,19,28,40,100};int

...已有一个排序好的数组。现输入一个数,要求按原来顺序将它插入到数组...
参考代码:a = [15, 12, 10]b = sorted(a)print(b)c = 13for i in range(len(b)): if b[i] > c: breakd = b[:i] + [c] + b[i:]print (d)

已有一个已排好序的整数数组, 要求输入一个数后, 按照原来排序的规律...
从最小的数的一边开始逐个与所输入的数比较,将该数插入第一个大于该数的数前面 插入方法,首先把插入处之后的所有数后移一位,然后插入。我不知道你要什么语言的所以只给你说方法

JAVA一个已经排好序的数组(元素为10个),插入一个数按照原来的排序?
1、数组插入新数据,首先需要扩容,java中数组需要使用数组的扩容方式:arr = Arrays.copyOf(arr, arr.length+1);或者,\/\/已有 int [] num ;num = new int[num.length+1];重新定义数组,之后按顺序遍历插入,或者插入以后再排序也是可以的。

...今输入一个数,要求按原来排序的规律将它插入数组中。”
for(i=0;i<10;i++){\/\/插入一个元素,组数长度增1 printf("%d",a);} printf("\\n");} 输入12,输出结果如下:总结:一组数组,直到找到大于或等于输入数的时候,找到插入数的下标,a[i+1]=a意思是将a的值给a[i+1],往后移一个(插入一个数,后面元素依次往后移动一个)方法二、includ...

编程题: 有一个已排好序的数组,要求按原来排序的规律将它插入数组中...
是需要输出还是什么 这种排序的时间复杂度很高= =你可以用set做

相似回答