首页 > 编程语言 >C++-练习-52

C++-练习-52

时间:2024-10-05 13:19:11浏览次数:3  
标签:int void 练习 C++ 52 stu student ptr size

题目:

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

#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

 


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

 

标签:int,void,练习,C++,52,stu,student,ptr,size
From: https://blog.csdn.net/little_startoo/article/details/142647300

相关文章

  • vs code如何配置C/C++环境,实现完美运行.c/.cpp文件,以及终端乱码问题
    环境配置在VisualStudioCode(VSCode)中安装了C/C++ExtensionPack后,你可以通过以下步骤来运行C++文件:安装编译器配置编译任务:在VSCode中,你可以创建一个编译任务来编译你的C++文件。这通常通过创建一个tasks.json文件来完成。你可以通过以下步骤创建这个......
  • 南沙C++信奥赛陈老师解一本通题: 1828:【02NOIP提高组】均分纸牌
    ​ 【题目描述】有n堆纸牌,编号分别为 1,2,…,n。每堆上有若干张,但纸牌总数必为nn的倍数。可以在任一堆上取若干张纸牌,然后移动。移牌规则为:在编号为1的堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 n 的堆上取的纸牌,只能移到编号为n−1的堆上;其他堆上取的纸牌,可以移到相......
  • 1.1第一个C++程序
    1.启动Dev-C++        启动界面如图所示:2.新建源代码        单击文件[F]——新建[N]——源代码[S]3.输入代码        在右侧编辑区输入以下代码#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"HelloWorld!"<<endl;......
  • 【THM】Res练习
    【THM】Res练习与本文相关的TryHackMe实验房间链接:TryHackMe|Res简介:在这个半引导式挑战中,使用内存中的数据结构入侵易受攻击的数据库服务器!你准备好接受挑战了吗?第一题:扫描机器,有多少端口是开放的?第一步端口扫描首先使用nmap对端口进行扫描nmap-sV-sC-p-10.10......
  • 【C++】 string类的模拟实现
    目录string类各函数接口总览构造函数拷贝构造函数赋值运行符重载函数析构函数迭代器相关函数beginend容量和大小相关的函数sizecapacityresizereserveempty修改字符串相关函数push_backappendoperator+=inserteraseclearswapc_str访问字符串相关函数o......
  • QT5 C++槽函数的两种connect连接方式的区别,建议使用现代的连接方式
    QT5C++槽函数的两种connect连接方式的区别,建议使用现代的连接方式(1)QT5C++槽函数定义classMainWindow:publicQMainWindow{Q_OBJECT//......privateslots:voidslotSplitterMoved(int,int);//......}(2)使用旧的字符串connect连接方式,容易报错或者警告 连......
  • 南沙C++信奥赛陈老师解一本通题 1270:【例9.14】混合背包
    ​ 【题目描述】一个旅行者有一个最多能装V公斤的背包,现在有n件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为C1,C2,...,Cn。有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包)。求解将哪些物品装入背包可使这些物品的费用总......
  • C/C++ 判断计算机存储器字节序(端序)的几种方式
    字节序分为存储器字节序和网络字节序(通常采用大端),这里主要讨论的是主存储器字节序。主存是存储器中的一种,为什么只讨论主存?因为编写运行在现代主流操作系统上的程序,是没有I/O权限的。主存字节序所谓字节序就是字节排列的顺序,拿主存来说就是如果低字节存放在低地址处,就是低端......
  • P9752 [CSP-S 2023] 密码锁&&P8814 [CSP-J 2022] 解密
    GutenTag!Schön,dichzusehen!今天也是很懒惰的一天呢!所以今天三合一!题目:[CSP-S2023]密码锁题目描述小Y有一把五个拨圈的密码锁。如图所示,每个拨圈上是从$0$到$9$的数字。每个拨圈都是从$0$到$9$的循环,即$9$拨动一个位置后可以变成$0$或$8$,因为校园里......
  • C++ 对C的扩展有哪些
    C++对C的扩展主要体现在以下几个方面:语法增强:变量声明位置更灵活:在C语言中,函数内的所有局部变量必须在函数开头的块内进行声明。而C++放松了这一限制,可以在函数内的任何位置声明变量,只要在使用该变量之前进行声明即可。例如:voidsomeFunction(){//C++中可以在循环内......