|
当サイトの9-1-2の例題で、矢印の所で間違えて予想に反した表示結果をえてしまいました。勿論バグですが、番号で1001から1004までの平均点は正の実数に対して、1005の平均点は負の実数で表示されます。なぜ、1005の平均点だけこのようなことになったのかご教授願います。
#include <stdio.h>
#include <conio.h>
#define NINZU 5
#define KAMOKU 4
int main( void )
{
int bango[NINZU] = {1001,1002,1003,1004,1005};
int tokuten[NINZU][KAMOKU]={
{ 85, 74, 63, 90},
{ 78, 65, 70, 62},
{ 89, 92, 88, 76},
{ 32, 48, 66, 25},
{ 92, 76, 81, 98}
};
double ave[NINZU]={ 0.0, 0.0, 0.0, 0.0, 0.0};
char hyouka[NINZU];
int i,j;
printf("番号 国語 数学 理科 社会 平均点 評価\n");
for(i=0;i < NINZU;i++) {
for(j=0;j < KAMOKU;j++) {//←KAMOKUをNINZUとミスタッチ
ave[i] += tokuten[i][j];
}
ave[i] /= KAMOKU;
//評価
if ( ave[i] > 80.0){
hyouka[i] = 'A';
}
else if (ave[i] > 70.0){
hyouka[i]='B';
}
else if ( ave[i] > 60.0){
hyouka[i]='C';
}
else
hyouka[i]='D';
}
//表示
for ( i=0;i < NINZU;i++) {
printf("%4d %4d %4d %4d %4d %6.2f %c\n",bango[ i ],
tokuten[i][0],tokuten[i][1],tokuten[i][2],tokuten[i][3],ave[i],hyouka[i]);
}
printf("\n");
puts("リターンキーを押してください。");
getch();
return 0;
}
|