-2

この方法でコーディングすると、正しい結果が得られました.1,2,3,4,6,

#include<stdio.h>
main()
{
    int i,x,temp,arr[5]={4,3,2,1,6};
    for(i=1;i<5;i++){
        temp=arr[i];
        for(x=i;x>0;x--){
            if(arr[x-1]>temp)
                arr[x]=arr[x-1];
            else 
                break;
        }arr[x]=temp;
    }
    for(i=0;i<5;i++)
    printf("%i,",arr[i]);
}

しかし、このようにして私は 4,4,4,4,6 という不正解を得ました。

#include<stdio.h>
main(){
    int i,x,temp,arr[5]={4,3,2,1,6};
    for(i=1;i<5;i++){
        temp=arr[i];
        for(x=i;x>0;x--){
            if(arr[x-1]>temp)
                arr[x]=arr[x-1];
            else 
            {
                arr[x]=temp;
                break;
            }
        }
    }
    for(i=0;i<5;i++)
    printf("%i,",arr[i]);
}

どちらも同じように見えますが、説明していただけますか?

4

4 に答える 4

0

1:

#include<stdio.h>
main(){
  int i,x,temp,arr[5]={4,3,2,1,6};
  for(i=1;i<5;i++){
    temp=arr[i];
    for(x=i;x>0;x--){
      if(arr[x-1]>temp)
        arr[x]=arr[x-1];
      else 
        break;
    }
    arr[x]=temp;
  }
  for(i=0;i<5;i++);
  printf("%i,",arr[i]);
}

2:

#include<stdio.h>
main(){
  int i,x,temp,arr[5]={4,3,2,1,6};
  for(i=1;i<5;i++){
    temp=arr[i];
    for(x=i;x>0;x--){
      if(arr[x-1]>temp)
        arr[x]=arr[x-1];
      else {
        arr[x]=temp;
        break;
      }
    }
  }
  for(i=0;i<5;i++)
  printf("%i,",arr[i]);
}

それは正しいフォーマットだと思います。上記の 2 番目のセットの違いはarr[x]=temp、else 内での実行です。

于 2013-09-17T03:23:07.553 に答える