C++-练习-51

题目:

这个练习让您编写处理数组和结构的函数,下面是程序的框架,请提供其中描述的函数,以完成该程序

#include <iostream>

using namespace std;

const int SLEN = 30;

struct student {

char fullname[SLEN];

char hobby[SLEN];

int ooplevel;

};

 

int getinfo(student pa[], int n);

 

void display1(student st);

 

void display2(const student* ps);

 

void display3(const student pa[], int n);

 

 

 

int main()

{

cout << "Enter class size: ";

int class_size;

cin >> class_size;

while (cin.get() != '\n')

continue;

 

student* ptr_stu = new student[class_size];

int entered = getinfo(ptr_stu, class_size);

for (int i = 0; i < entered; i++)

{

display1(ptr_stu[i]);

display2(&ptr_stu[i]);

}

 

display3(ptr_stu, entered);

delete[] ptr_stu;

cout << "done\n";

return 0;

}

getinfo():有两个参数:一个指向学生结构数组的第一个元素的指针,一个表示数组元素数的int。该函数请求并存储关于学生的数据。在填充数组或为学生名称加上空行时,它终止输入。该函数返回实际填充的数组元素数

 

display1():将学生结构作为参数并显示其内容

 

display2():将学生结构的地址作为参数,并显示结构的内容

 

display3():将学生结构数组的第一个元素的地址和数组元素的数量作为参数,并显示结构的内容

源代码:

 

#include <iostream>
using namespace std;
const int SLEN = 30;
struct student {
    char fullname[SLEN]; //姓名
    char hobby[SLEN];   //爱好
    int oplevel;    //学习成绩
};

int getinfo(student pa[], int n);

void display1(student st);

void display2(const student* ps);

void display3(const student pa[], int n);



int main()
{
    cout << "请输入学生数量: ";
    int class_size;
    cin >> class_size;
    while (cin.get() != '\n')
        continue;

    student* ptr_stu = new student[class_size];
    int entered = getinfo(ptr_stu, class_size);
    for (int i = 0; i < entered; i++)
    {
        display1(ptr_stu[i]);
        display2(&ptr_stu[i]);
    }

    display3(ptr_stu, entered);
    delete[] ptr_stu;
    cout << "done\n";
    return 0;
}

int getinfo(student pa[], int n)
{
    for (int i = 0; i < n; i++)
    {
        cout << "请输入学生姓名: ";
        if (cin.getline(pa[i].fullname,SLEN) && pa[i].fullname[0] == '\0')
            return i;
        cout << "请输入学生兴趣爱好:";
        cin.getline(pa[i].hobby, SLEN);
        cout << "请输入学生成绩: ";
        (cin >> pa[i].oplevel).get();
    }
}

void display1(student st)
{
    cout << "学生姓名: " << st.fullname << " 学生兴趣爱好: " << st.hobby << " 学生成绩: " << st.oplevel << endl;
}

void display2(const student* ps)
{
    cout << "学生姓名: " << ps->fullname << " 学生兴趣爱好: " << ps->hobby << " 学生成绩: " << ps->oplevel << endl;
}

void display3(const student pa[], int n)
{
    for (int i = 0; i < n; i++)
    {
        cout << "学生姓名: " << pa[i].fullname << " 学生兴趣爱好: " << pa[i].hobby << " 学生成绩: " << pa[i].oplevel << endl;
    }
}

 

演示效果:

e2a3aad0cb09cec9b4c7c970ea5d24fa.png

 


如果朋友你感觉文章的内容对你有帮助,可以点赞关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是小天才哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值