#include<stdio.h>
int main()
{
int a[6]={2,5,4,6,1,3};
int j,key,i,k;
for(j=1;j<6;++j)
{
key=a[j];
i=j-1;
while((i>=0)&&(a[i]>key))
{
a[i+i]=a[i];
i=i-1;
}
a[i+1]=key;
}
for(i=0;i<6;i++)
printf("%d\n",a[i]);
}
私が自分で計算すると1,2,3,4,5,6 が出力されますが、出力は2,4,5,6,1,3です。出力が異なって表示されています
私は非常に努力しましたが、答えがとてもシンプルであるか、コードを書くことで自分の責任であることを間違って見つけられませんでした。この後、私をブロックしてください。
'a [i + i]'は範囲外の配列にアクセスし、*未定義の動作*を実行します( 'whileループの論理全体が奇妙に見えます - それは何を達成するのでしょうか?) – UnholySheep
:あなたの質問をdownvoteしないことは、通常、反対の効果があります。あなたはデバッグ作業を表示していませんでした。 – UnholySheep
私はdownvoteをしないと言っているわけではありません。理由を教えてください。(私もそうしています。)詳細についてはアレイをアクセスして説明してください。 – Charan2628