質問: int main(void) { int i,j; int v[i]; int sum; printf("j:"); scanf("%d",&j); for(i=0;i
回答: すでに指摘されていますが、 > > int v[i]; > > > これが問題ですね。初期化されていないiには何が入っているのか判らないので、配列vのサイズがいくつになるか予想が付きません。プログラムが正しく動かない原因となります。 おそらく、main関数実行時にiに6が入っていて、配列vのサイズが6で確保されたのだと思います。その後、jに11を入力してforループを回して配列vに1を入力していますが、`v[6]`に入力しようとしてすでに配列のサイズを超えており、たまたま'j'に1が入ってしまったのだと思われます。そのため、その時点でループを抜け、aveが6になってしまったのでしょう。 配列はサイズを入力してから確保するか、上限を決めて確保し、`j:`では上限の範囲内で入力するようにした方が良いです。 ちょっと違ったかも。最初のiは5が入っていて、v[5]を入力した時点でjに1が入った、というのが正確かもしれません。