|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<iostream>
#include<string>
using namespace std;
struct student
{
string sname;
int score;
};
struct teacher
{
string tname;
struct student sarray[5];
};
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[j].sarray[j].sname="student_";
tarray[j].sarray[j].sname+=nameseed[j];
tarray[j].sarray[j].score=60;
}
}
}
void print(struct teacher tarray,int len)
{
for(int i=0;i<len;i++)
{
cout<<"老师姓名"<<tarray[i].tname<<endl;
for(int j=0;i<5;j++)
{
cout<<"学生姓名"<<tarray[i].sarray[j].sname
<<" "<<"考试分数"
<<tarray[i].sarray[j].score<<endl;
}
}
}
问题出在以下几个地方:
1. 在函数 allocatespace 中,循环变量 i 的范围应该是 0 到 len-1 ,而不是 0 到 len 。因为数组的索引是从 0 开始的。
2. 在函数 allocatespace 中,循环变量 j 的范围应该是 0 到 4 ,而不是 0 到 j 。因为每个老师有5个学生,所以需要循环5次。
3. 在函数 allocatespace 中,对于每个学生的姓名和分数的赋值,应该使用循环变量 i 和 j ,而不是 j 和 j 。因为 j 是循环变量,应该用于索引学生姓名和分数。
4. 在函数 print 中,循环变量 j 的范围应该是 0 到 4 ,而不是 0 到 i 。因为每个老师有5个学生,所以需要循环5次。
下面是修正后的代码:
- #include<iostream>
- #include<string>
- using namespace std;
- struct student
- {
- string sname;
- int score;
- };
- struct teacher
- {
- string tname;
- struct student sarray[5];
- };
- 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;
- }
- }
- }
- 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++)
- {
- cout << "学生姓名:" << tarray[ i].sarray[j].sname
- << " 考试分数:" << tarray[ i].sarray[j].score << endl;
- }
- }
- }
- int main()
- {
- struct teacher tarray[3];
- int len = 3;
- allocatespace(tarray, len);
- print(tarray, len);
- return 0;
- }
复制代码
修正后的代码已经解决了问题,并且在 print 函数中正确地打印了老师和学生的姓名以及分数。
|
|