質問: 配列の最大値と二番目に大きい数を求めたいのですが、二番目の数がうまく表示できません。。 実行すると、 > > 5つの数字を入力 > > 1 > > 2 > > 3 > > 4 > > 5 > > 1番目に大きい数字は5です。 > > 2番目に大きい数字は32765です。 > > > となってしまいます。。二番目の数の定義をどのように書けばイイのかが 分かりません。。 私のコードです。 ``` #include int main(void) { int number[5]; int no_1; int no_2; int i,j; printf("5つの数字を入力\n"); for(i=0; i<5; i++){ scanf("%d",&number[i]); if(no_1 < number[i]) no_1=no_2; no_1=number[i]; } printf("1番目に大きい数字は%dです。\n",no_1); printf("2番目に大きい数字は%dです。\n",no_2); return 0; } ``` ご教示していただければ幸いです。。
回答: 作成してみました。マイナス入力は無いとしています。 ``` #include int main(void) { int number[5]; int no_1=0; int no_2=0; int i; printf("5つの数字を入力\n"); for(i=0; i<5; i++){ scanf("%d",&number[i]); if(no_1 < number[i]){ no_2=no_1; no_1=number[i]; }else if(no_2 < number[i]){ no_2=number[i]; } } printf("1番目に大きい数字は%dです。\n",no_1); if (no_1 != no_2) printf("2番目に大きい数字は%dです。\n",no_2); return 0; } ``` マイナス入力対応版 ``` #include int main(void) { int n; int number[5] = {0}; int i,j,k; printf("5つの数字を入力\n"); for(i=0; i<5; i++){ scanf("%d",&n); if ( i == 0 ){ number[i]=n; }else{ for (j=0; jj; k--) number[k]=number[k-1]; number[j]=n; break; } } if ( j == i ) number[j]=n; } } printf("1番目に大きい数字は%dです。\n",number[0]); if (number[0] != number[1]) printf("2番目に大きい数字は%dです。\n",number[1]); return 0; } ```