问题出在函数allocatespace和print的实现中。
1. 函数allocatespace的错误
在函数allocatespace中,变量tarray是一个包含3个teacher结构体的数组,每个teacher结构体中有5个student结构体。因此,在循环中应该使用变量tarray[i]而不是tarray[j]来分别访问每个teacher结构体和student结构体。另外,在对sname成员变量赋值时,应该使用tarray[i].sarray[j].sname而不是tarray[j].sarray[j].sname。
正确的代码如下:++void allocatespace(struct teacher tarray[3], int len){ string nameseed = "ABCDE"; for (int i = 0; i < len; i++) { tarray[i].tname = "teacher_"; tarray[i].tname += nameseed[i]; for (int j = 0; j < 5; j++) { tarray[i].sarray[j].sname = "student_"; tarray[i].sarray[j].sname += nameseed[j]; tarray[i].sarray[j].score = 60; } }}
2. 函数print的错误
在函数print中,变量tarray是一个包含3个teacher结构体的数组,因此,在循环中应该使用变量tarray[i]而不是tarray来分别访问每个teacher结构体。在输出学生信息时,内层循环中的变量i应该改为j。
另外,由于tarray是一个数组,函数参数中应该加上数组的长度len。
正确的代码如下:++void print(struct teacher tarray[3], int len){ for (int i = 0; i < len; i++) { cout << "老师姓名:" << tarray[i].tname << endl; for (int j = 0; j < 5; j++) // 变量i改为j { cout << "学生姓名:" << tarray[i].sarray[j].sname << ",考试分数:" << tarray[i].sarray[j].score << endl; } }}
希望这些修改能够帮助您解决问题。
球一个最佳答案谢谢啦!这对我非常重要! |