質問: 7人分の成績を入力した後にその評定が出るようにしたいのですが下記のような表示になってしまいます。 7人分の評点を入力してください。 50 80 70 100 60 0 35 1 : 50 C 2 : 80 A 3 : 70 B 4 : 100 A 5 : 60 C 6 : 0 F 6 : 35 D ^C 一番下の出力を7:35 D としたいです。またC-cを押さないと次の作業に移れません。 色々探って見たところ自分としてはfor(i=1;N+1;i++)のところがうまく言っていないんじゃないかと思います。 ``` #include #define N 7 int main(){ int i,l,num[N]; printf("7人分の評点を入力してください。\n"); for(i=1;i < N+1;i++){ for(l=0;l < N;l++){ scanf("%d",&num[N]); if(num[N] >= 80){ printf("%d : %d A\n",i,num[N]); } else if(65 <=num[N] && num[N] < 80){ printf("%d : %d B\n",i,num[N]); } else if(50 <= num[N] && num[N] < 65){ printf("%d : %d C\n",i,num[N]); } else if(35 <= num[N] && num[N] < 50){ printf("%d : %d D\n",i,num[N]); } else{ printf("%d : %d F\n",i,num[N]); } } } return 0; } ```
回答: numは7要素の配列ですので、num[0]からnum[6]を利用できます。 逆に言えば、num[7]にアクセスすることは出来ません。 ループは`for(i = 0; i < N; i++)`を使い、出力する際に1加えた値を使って下さい。 ``` if(80 <= num[i]) { printf("%d : %d A\n", i+1, num[i]); } // 直前の条件が偽なので、num[i]が80未満であることは分かりきっている else if(65 <= num[i]) { printf("%d : %d B\n", i+1, num[i]); } 略 ``` num[N]に何度もアクセスしようとしているのも大いに謎です。 > > またC-cを押さないと次の作業に移れません。 > > > 二重ループにしてるからでは?