标题:为什么结果只有一行 老师姓名: teacher_A
只看楼主
后卿
Rank: 4
来 自:网络
等 级:业余侠客
帖 子:297
专家分:295
注 册:2016-10-22
结帖率:82.28%
已结贴  问题点数:20 回复次数:6 
为什么结果只有一行 老师姓名: teacher_A
代码如下
#include "touwenjian.h"
struct student
{
    string sname;
    int score;
};
struct teacher
{   
    string tname;
    struct student sArray[5];
};

void allocatSpace(struct teacher tArray[],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 printdata(struct teacher tArray[],int len)
{
    for (int i=0;i<len;i++)
    {
        cout<<"老师姓名: "<<tArray[i].tname;
        system("pause");
        for (int j=0;j<5;j++)
        {
            cout<<"学生姓名: "<<tArray[i].sArray[j].sname<<endl<<"学生成绩"<<tArray[i].sArray[j].score;
        }
    }
}
int main()
{
    struct teacher tArray[3];
    int len=sizeof(tArray)/sizeof(tArray[0]);
    allocatSpace(tArray,3);
    printdata(tArray,3);
}
结果只输出了 老师姓名: teacher_A 这一行,有没有大神知道什么原因
搜索更多相关主题的帖子: 姓名 struct for 老师 int 
2022-08-04 14:08
zwh2011
Rank: 2
等 级:论坛游民
帖 子:37
专家分:22
注 册:2022-6-27
得分:10 
是干嘛用的
2022-08-04 14:12
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
把教你写 system("pause"); 这种垃圾的人干掉
2022-08-04 14:25
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
几乎要从头改到尾

程序代码:
#include <iostream>
#include <string>
#include <span>
#include <cassert>

struct student
{
    std::string sname;
    int score;
};
struct teacher
{   
    std::string tname;
    struct student students[5];
};

void teachers_init( std::span<teacher> ts )
{
    using namespace std::string_literals;

    assert( ts.size() <= 26 );
    for( size_t i=0; i!=ts.size(); ++i )
    {
        ts[i].tname = "teacher_"s + char('A'+i);

        static_assert( std::rank_v<decltype(teacher::students)> <= 26 );
        for( size_t j=0; j!=std::size(ts[i].students); ++j )
        {
            ts[i].students[j].sname = "student_"s + char('A'+j);
            ts[i].students[j].score = 60;
        }
    }
}

void teachers_print( const std::span<teacher> ts, std::ostream& os=std::cout )
{
    for( const auto& t : ts )
    {
        os << "教师姓名: " << t.tname << '\n';

        for( const auto& s : t.students )
        {
            os << "学生姓名: " << s.sname << ", "
               << "学生成绩: " << s.score << '\n';
        }
    }
}

using namespace std;

int main( void )
{
    struct teacher tArray[3];
    teachers_init( tArray );
    teachers_print( tArray );
}


输出
教师姓名: teacher_A
学生姓名: student_A, 学生成绩: 60
学生姓名: student_B, 学生成绩: 60
学生姓名: student_C, 学生成绩: 60
学生姓名: student_D, 学生成绩: 60
学生姓名: student_E, 学生成绩: 60
教师姓名: teacher_B
学生姓名: student_A, 学生成绩: 60
学生姓名: student_B, 学生成绩: 60
学生姓名: student_C, 学生成绩: 60
学生姓名: student_D, 学生成绩: 60
学生姓名: student_E, 学生成绩: 60
教师姓名: teacher_C
学生姓名: student_A, 学生成绩: 60
学生姓名: student_B, 学生成绩: 60
学生姓名: student_C, 学生成绩: 60
学生姓名: student_D, 学生成绩: 60
学生姓名: student_E, 学生成绩: 60
2022-08-04 14:47
后卿
Rank: 4
来 自:网络
等 级:业余侠客
帖 子:297
专家分:295
注 册:2016-10-22
得分:0 
回复 4楼 rjsp
牛逼啊,能做我师傅吗
2022-08-05 00:56
m3440426898
Rank: 2
等 级:论坛游民
帖 子:40
专家分:17
注 册:2022-2-3
得分:0 
回复 3楼 rjsp
为啥不能写这个呀
2022-08-22 16:17
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 6楼 m3440426898
1. 正常控制台程序,执行完毕后就应该退出,所以不应该加 system("PAUSE");
2. 如果是调试,观察最终的输出。那应该是 IDE 提供暂留输出的功能,而不是你的代码中加 system("PAUSE");
3. 如果是调试,观察中途的输出。那应该是 IDE 设置断点,而不是加 system("PAUSE");
4. system("PAUSE"); 中的参数是系统平台相关的,不具有可移植性
5. system("PAUSE") 会另外开启控制台,在现代操作系统中都是设限的,比如windows中就不可以在UNC路径启动
2022-08-23 07:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-509717-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.229584 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved