#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
const int xx = 8;
int Num[xx];
int Num9, Num10, Num11;
int StudentID;
int i;
int m = 0;
int j = 3;
int k = 6;
const int NUM_STUDENTS = 3;
const int NUM_DATA = 4;
int scores[NUM_STUDENTS][NUM_DATA] =
{{2046, 97, 79, 86},
{7634, 91, 78, 79},
{8120, 73, 77, 82}};
for(i=0;i<3;i++)
{
Num[m]=scores[i][1] * 0.3;
m++;
}
for(i=0;i<3;i++)
{
Num[j]=scores[i][2] * 0.3;
j++;
}
for(i=0;i<3;i++)
{
Num[k]=scores[i][3] * 0.4;
k++;
}
Num9=Num[0]+Num[3]+Num[6];
Num10=Num[1]+Num[4]+Num[7];
Num11=Num[2]+Num[5]+Num[8];
这是手边的代码。这个块:
for(i=0;i<3;i++)
{
Num[k]=scores[i][3] * 0.4;
k++;
}
以某种方式将得分[0] [0]的值从2046更改为32.这个等式似乎正在执行它,因为当我阻止它将分数重置为2046时。为什么会这样? 我试过在那里重新编写等式,也没有任何反应。
答案 0 :(得分:0)
问题出在const int xx = 8;
您声明int Num[xx];
这是一个包含8个整数的数组。
接下来,在你的第3个循环中,你试图访问数组中第9个位置的Num[8]
,这样你就可以有效地编写Num[7]
之后放置的内存scores[0][0]
}
为了好玩,您可以尝试Num[10] = 1234
,您也可以看到scores[0][2]
也变为1234。