2015级C++第8周项目 数组和指针

简介: 【项目1 - 数组作数据成员】参考解答   下面是设计好的一个工资类(Salary):class Salary { public: void set_salarys( );//输入职工工资(输入-1标志着工资输入结束),工资保存到salary数组中,实际人数保存到number中; void add_salarys(int x); //给每个

【项目1 - 数组作数据成员】参考解答
  下面是设计好的一个工资类(Salary):

class Salary  
{  
public:
    void set_salarys( );//输入职工工资(输入-1标志着工资输入结束),工资保存到salary数组中,实际人数保存到number中;
    void add_salarys(int x); //给每个人涨x元工资
    void sort_salarys(); //对工资由大到小排序
    void show_salarys( ); //显示工资信息
private:  
    double salarys[50]; //多人的工资  
    int number;  //实际人数  
};  

  (1)实现Salary类中的成员函数,在main函数定义Salary类的对象,输入工资,再给每个人涨500元工资,排序后工资数据,然后输出结果。
  (2)手工输入工资?!太让人不能忍受了。现给出包含了不足500个职工工资的文件salary.txt(下载),增加一个成员函数,用于从文件中读出数据,再增加一个成员函数,将排序后结果保存到一个文件中。编写main函数,测试你扩充的功能。
  (3)用多文件的方式组织最后的程序。

【项目2-用对象数组操作长方柱类】参考解答
  编写基于对象的程序,求5个长方柱的体积和表面积。长方柱类Bulk的数据成员包括长(length)、宽(width)、高(heigth)等。
  对照已经给出的代码,要做的工作及要求有:

  • 需要你定义长方柱类,代码中已经给出由5个长方柱对象构成的对象数组b;
  • B数组中的前3个对象b[0]、b[1]、b[2]直接参数初始了,需要定义构造函数,而初始化中,各对象提供的参数数目不同,需要有默认参数的构造函数(未给出的参数默认为1.0)
  • 第4个对象b[3]用默认构造函数初始化;
  • 设计成员函数output,在main中调用输出这5个长方柱的体积和表面积;
int main()  
{  
     Bulk b[5]={Bulk(2.3,4.5,6.7),Bulk(1.5,3.4),Bulk(10.5)};  
     b[4].get_value();  
     //下面分别输出这5个长方柱的体积和表面积  
}  

【项目3-指向学生类的指针】参考解答
  设计一个学生类Student,数据成员包括学号(num)和成绩(score),成员函数根据需要自行设计(建议配备需要的set、get函数,以及必要的输入或输出,给出的代码中也可以找到需要成员函数的线索)。在main函数中,要做到
   建立一个对象数组,通过初始化,设置5个学生的数据;
   用指针指向数组首元素,输出第1、3、5个学生的信息;
   设计一个函数int max(Student *arr);,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并返回值其学号。
  下面给出部分程序,在此基础上完成项目:

class Student  
{  
public:  
    ……  
private:  
    int num;   //学号  
    double score;   //成绩  
};  

//max函数返回arr指向的对象数组中的最高成绩者的学号(max并不是成员函数,而是普通函数)  
int max(Student *arr);  

int main()  
{  
    Student stud[5]=  
    {  
        Student(101,78.5),Student(102,85.5),Student(103,100),  
        Student(104,98.5),Student(105,95.5)  
    };  
    //输出第1、3、5个学生的信息(用循环语句)  
    ……  
    //输出成绩最高者的学号  
    cout<<"5个学生中成绩最高者的学号为: "<<max(stud);//调用函数显示最高成绩  
    return 0;  
}  

【项目4-游戏中的角色类增强版】
  (4-1)阅读博文“C++游戏系列4:杀伤距离有限制”(链接…),回答下面的问题:
   Role类的数据成员中,有哪些成员上类的对象?
   观察Role类的构造函数,说出:若某类的“数据成员为别的类的对象”,其构造函数定义时的要点有什么?
   仔细研读Role::attack成员函数,说出攻击行为的条件,以及攻击行为中要做的事情。
   直接Copy博文中的程序,建立多文件项目,运行程序,并修改main函数,观察运行结果的变化(本项目测试不充分,欢迎写评论报BUG)。


  (4-2)在上面已经建好的项目基础上,将Weapon类的数据成员改为数组,以支持一个角色可以带多件武器的需求,为此,在原类基础上,改造及增加的数据成员和成员函数至少包括:

class Role
{
public:
    ……
    void changeWeapon(int wno); //换手中的武器
private:
    ……
    Weapon weapons[N];  //武器,N为定义的常变量
    int weaponNum;      //武器数目
    int holdWeapon;     //现在手持哪一件武器(用武器数组的下标做标识)。
                         //0 ≤ holdWeapon < weaponNum
                         //初始时为空手,空手时holdWeapon值为-1,将-1定义为常变量为宜)
};

提示:
其他成员函数可能也需要修改(如构造函数,用于输出的成员函数等),请根据需要改动。

参考解答  


  (4-3)以上的项目,用于支持游戏的类大致已经完善,为让游戏能够多个角色参与进来,不能够依靠定义有限个Role类的对象,通过代码玩,现在想做一个游戏的演示,让任意多个对象,自动展开PK。建议的策略有(可以有你自己的策略):
   定义Role类的数组,表示参与游戏的角色;
   角色可能会持有的武器,由一个文件weapon.txt提供,包括武器名,杀伤力及杀伤半径(可以下载…,还可以自己手工建这个文件)
   定义对Role类数组中对象设置初始值,包括每个角色类对象的名称、血量、位置、武器等,都可以由产生的随机数确定
   由随机数确定每一轮游戏中,要行动的角色,以及要执行的行动(移动、换武器、攻击、吃等),通过循环,组织起多轮的游戏。轮数太多时,用文件保存每一轮发生的情节,你通过看文件,知道游戏的过程。

参考解答  

目录
相关文章
|
23天前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
27天前
|
存储 C语言 计算机视觉
在C语言中指针数组和数组指针在动态内存分配中的应用
在C语言中,指针数组和数组指针均可用于动态内存分配。指针数组是数组的每个元素都是指针,可用于指向多个动态分配的内存块;数组指针则指向一个数组,可动态分配和管理大型数据结构。两者结合使用,灵活高效地管理内存。
|
27天前
|
容器
在使用指针数组进行动态内存分配时,如何避免内存泄漏
在使用指针数组进行动态内存分配时,避免内存泄漏的关键在于确保每个分配的内存块都能被正确释放。具体做法包括:1. 分配后立即检查是否成功;2. 使用完成后及时释放内存;3. 避免重复释放同一内存地址;4. 尽量使用智能指针或容器类管理内存。
|
27天前
|
存储 NoSQL 编译器
C 语言中指针数组与数组指针的辨析与应用
在C语言中,指针数组和数组指针是两个容易混淆但用途不同的概念。指针数组是一个数组,其元素是指针类型;而数组指针是指向数组的指针。两者在声明、使用及内存布局上各有特点,正确理解它们有助于更高效地编程。
|
5天前
|
存储 程序员 C++
深入解析C++中的函数指针与`typedef`的妙用
本文深入解析了C++中的函数指针及其与`typedef`的结合使用。通过图示和代码示例,详细介绍了函数指针的基本概念、声明和使用方法,并展示了如何利用`typedef`简化复杂的函数指针声明,提升代码的可读性和可维护性。
23 0
|
1月前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
51 4
|
1月前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
88 4
|
1月前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
104 13
|
2月前
|
C语言
无头链表二级指针方式实现(C语言描述)
本文介绍了如何在C语言中使用二级指针实现无头链表,并提供了创建节点、插入、删除、查找、销毁链表等操作的函数实现,以及一个示例程序来演示这些操作。
36 0
|
3月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
133 4