質問: sum / 10.0; printf("平均点は%.1f点です\n", ave); printf("最高点(No:%d):%d点\n",maxi, max); printf("最低点(No:%d):%d点\n",mini, min); return 0; } ``` これは10人の点数を入力し、平均と最大値を表示するプログラムです。 最後に最高点と最低点を表示するのですが、No.1が最高、または最低の時に限り「最高点(No.14)」「最低点(No.0)」となってしまいます。どこをどう修正したらよいでしょうか?
回答: ご参考まで ``` #include int main(void){ int i; int a[10]; int max, min,maxi,mini; int sum; float ave; printf("10人の試験の点数:\n"); printf("No.1:"); scanf("%d", &a[0]); printf("No.2:"); scanf("%d", &a[1]); printf("No.3:"); scanf("%d", &a[2]); printf("No.4:"); scanf("%d", &a[3]); printf("No.5:"); scanf("%d", &a[4]); printf("No.6:"); scanf("%d", &a[5]); printf("No.7:"); scanf("%d", &a[6]); printf("No.8:"); scanf("%d", &a[7]); printf("No.9:"); scanf("%d", &a[8]); printf("No.10:"); scanf("%d", &a[9]); for(i=0;i<10;++i){ if( i == 0 ){ max = min = a[i]; maxi = mini = i; }else if( max < a[i] ){ max = a[i]; maxi = i; }else if( min > a[i] ){ min = a[i]; mini = i; } sum += a[i]; } ave = sum / i; printf("平均点は%.1f点です\n", ave); printf("最高点(No:%d):%d点\n",maxi+1, max); printf("最低点(No:%d):%d点\n",mini+1, min); return 0; } ``` ``` #include int main(void){ int i; int a[10]; int max, min,maxi,mini; int sum; float ave; printf("10人の試験の点数:\n"); printf("No.1:"); scanf("%d", &a[0]); printf("No.2:"); scanf("%d", &a[1]); printf("No.3:"); scanf("%d", &a[2]); printf("No.4:"); scanf("%d", &a[3]); printf("No.5:"); scanf("%d", &a[4]); printf("No.6:"); scanf("%d", &a[5]); printf("No.7:"); scanf("%d", &a[6]); printf("No.8:"); scanf("%d", &a[7]); printf("No.9:"); scanf("%d", &a[8]); printf("No.10:"); scanf("%d", &a[9]); max = min = a[0]; maxi = mini = 1; for(i=1;i<10;++i){ if( max < a[i] ){ max = a[i]; maxi = i+1; } if( min > a[i] ){ min = a[i]; mini = i+1; } } sum = a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]+a[9]; ave = sum / 10.0; printf("平均点は%.1f点です\n", ave); printf("最高点(No:%d):%d点\n",maxi, max); printf("最低点(No:%d):%d点\n",mini, min); return 0; } ```