《C++语言》作业题
1,编写一个程序,由用户输入两个整数val1和val2输出稍大于val1而又是val2整倍数的数。其计算公式为:
val1 + val2 - val1 % val2
2,编写一个程序将用户输入的华氏温度转换成摄氏温度。其计算公式为:
C = (F – 32) ( 5 / 9
3,编写一个程序,要求用户输入一个不超过5位的整数,计算并输出该数的各位之和。比如,若用户输入的整数为1995,则输出应为24。
4,编写程序打印出所有的水仙花数。所谓“水仙花数”是指一个三位数,其各位数的立方和等于该数本身。例如,153 = 13 + 33 + 53,所以153是一个水仙花数。
5,编写程序输出1000以内所有的完数。所谓“完数”是指与其因子之和相等的数。例如6 = 1 + 2 + 3,而1、2和3均是6的因子。该程序要求以如下形式输出:
6-->1,2,3
6,编写程序输出100以内的Fibonacci(裴波那契)数列。所谓“Fibonacci数列”是指形如:
a0 = 0,a1 = 1,…,an = an-1 + an-2,…
的数列。
7,编写一个递归函数输出Fibonacci数列的前n项。
8,定义一个带有三个参数的宏MIN,该宏的值为三个参数中最小者的值。考虑如何该宏使其在任何情况下都不出现二义性。
9,将习题4-2中的三个函数分别写入三个源文件中,然后编写一个调用这三个函数的主程序,在主程序中利用嵌入预处理指令将上述三个文件插入到主函数前面。
10,将习题1、2分别改写成两个函数,为它们设置相应的参数,并将这两个函数的函数原型写入一个头文件中,而在主程序中只,嵌入该头文件,然后单独将主程序编译成,OBJ文件。试试该程序是否仍能编译通过。
11,定义一个可存放30个实数的一维数组来存放一个班(不超过30个人)某门功课的成绩,成绩由用户输入。设计一个循环过程,根据用户输入的学号(1~20)输出对应学生的成绩,用户输入0时程序结束。
12,设计一个二维数组float[30][6],存放一个学生班(不超过30个人)中每人的5门功课成绩及平均成绩。成绩由用户输入,平均成绩由计算而得。设计一个循环过程,根据用户输入的号码(1~30)输出对应学生的各门成绩及平均成绩。
13,编写一个函数,实现C++库函数strlen( )的功能。
14,编写一个递归函数,将一个字符串按其逆序输出。比如,设源串为"abcdef",则输出为fedcba。
15,编写一个函数,测试一个指定字符是否存在于一个指定字符串中。若是,则返回该字符在串中第一次出现的位置(提示:函数的返回值的类型为字符型指针)。
16,编写一个函数isSub(char *str1,char *str2),该函数测试str1是否是str2的子串。若是,则返回str1在str2中第一个字符的位置。
17,利用动态内存分配重新编写习题11所要求的程序,要求能处理任何人数的学生成绩。人数由用户输入。
18,说明一个表示日期的结构,其成员包括年、月、日。考虑应为该结构定义哪些操作函数。
19,设计一个纪录书籍的结构,其成员包括书号、书名、作者、出版社和出版日期(利用上一题中说明的结构)。设一批书籍的纪录存放在一个单链表中,编写函数输出与给定关键字相匹配的所有书籍的纪录。比如,设某给定关键字为一个作者的姓名,则将该作者的所有著作都显示出来。
20,将习题19中的书籍结构改写为类。
21,为习题20添加构造函数和析构函数。
22,从Person类中派生一个学生(Student)类,新增的属性有:学号(无符号长整型)、专业(字符型指针,以便于为其内容动态分配内存)、学院(字符型指针),并为该类定义相应的方法。
23,从Person类中派生一个职工(Worker)类,新增的属性有:工种(字符型指针,以便于为其内容动态分配内存)、部门(字符型指针),并为该类定义相应的方法。
24,从学生类和职工类多重派生一个职工大学生(Worker-Student)类。
注:为了方便使用,将Person类中的各属性改为保护的,并将新类中的属性也作同样的处理,以便进一步派生。
25,修改学生类和职工类,以保证在职工大学生类中仅存在Person类的一个副本。
26,修改TestArr程序,将数组类Array的所有成员函数均测试到。
27,为“学生”类说明一个静态数据成员——学校名称,并提供相应的静态接口。
28,将11.2.2中的Object类尽可能地作进一步的完善,然后将它用作Person类的基类并在Person类及其派生类中分别实现从Object类中继承来的虚函数。
29,为Person类及其派生类重载“==”运算符。
30,为Person类及其派生类定义相应的转换函数。
31,为字符串类添加插入和提取运算符。
32,为字符串类添加插入和提取运算符重载。
33,编写一个程序,将 10 个学生的基本情况写入一个二进制文件中。
34,设计一个通用的数组模板类。
注:该题为选作题。
1,编写一个程序,由用户输入两个整数val1和val2输出稍大于val1而又是val2整倍数的数。其计算公式为:
val1 + val2 - val1 % val2
2,编写一个程序将用户输入的华氏温度转换成摄氏温度。其计算公式为:
C = (F – 32) ( 5 / 9
3,编写一个程序,要求用户输入一个不超过5位的整数,计算并输出该数的各位之和。比如,若用户输入的整数为1995,则输出应为24。
4,编写程序打印出所有的水仙花数。所谓“水仙花数”是指一个三位数,其各位数的立方和等于该数本身。例如,153 = 13 + 33 + 53,所以153是一个水仙花数。
5,编写程序输出1000以内所有的完数。所谓“完数”是指与其因子之和相等的数。例如6 = 1 + 2 + 3,而1、2和3均是6的因子。该程序要求以如下形式输出:
6-->1,2,3
6,编写程序输出100以内的Fibonacci(裴波那契)数列。所谓“Fibonacci数列”是指形如:
a0 = 0,a1 = 1,…,an = an-1 + an-2,…
的数列。
7,编写一个递归函数输出Fibonacci数列的前n项。
8,定义一个带有三个参数的宏MIN,该宏的值为三个参数中最小者的值。考虑如何该宏使其在任何情况下都不出现二义性。
9,将习题4-2中的三个函数分别写入三个源文件中,然后编写一个调用这三个函数的主程序,在主程序中利用嵌入预处理指令将上述三个文件插入到主函数前面。
10,将习题1、2分别改写成两个函数,为它们设置相应的参数,并将这两个函数的函数原型写入一个头文件中,而在主程序中只,嵌入该头文件,然后单独将主程序编译成,OBJ文件。试试该程序是否仍能编译通过。
11,定义一个可存放30个实数的一维数组来存放一个班(不超过30个人)某门功课的成绩,成绩由用户输入。设计一个循环过程,根据用户输入的学号(1~20)输出对应学生的成绩,用户输入0时程序结束。
12,设计一个二维数组float[30][6],存放一个学生班(不超过30个人)中每人的5门功课成绩及平均成绩。成绩由用户输入,平均成绩由计算而得。设计一个循环过程,根据用户输入的号码(1~30)输出对应学生的各门成绩及平均成绩。
13,编写一个函数,实现C++库函数strlen( )的功能。
14,编写一个递归函数,将一个字符串按其逆序输出。比如,设源串为"abcdef",则输出为fedcba。
15,编写一个函数,测试一个指定字符是否存在于一个指定字符串中。若是,则返回该字符在串中第一次出现的位置(提示:函数的返回值的类型为字符型指针)。
16,编写一个函数isSub(char *str1,char *str2),该函数测试str1是否是str2的子串。若是,则返回str1在str2中第一个字符的位置。
17,利用动态内存分配重新编写习题11所要求的程序,要求能处理任何人数的学生成绩。人数由用户输入。
18,说明一个表示日期的结构,其成员包括年、月、日。考虑应为该结构定义哪些操作函数。
19,设计一个纪录书籍的结构,其成员包括书号、书名、作者、出版社和出版日期(利用上一题中说明的结构)。设一批书籍的纪录存放在一个单链表中,编写函数输出与给定关键字相匹配的所有书籍的纪录。比如,设某给定关键字为一个作者的姓名,则将该作者的所有著作都显示出来。
20,将习题19中的书籍结构改写为类。
21,为习题20添加构造函数和析构函数。
22,从Person类中派生一个学生(Student)类,新增的属性有:学号(无符号长整型)、专业(字符型指针,以便于为其内容动态分配内存)、学院(字符型指针),并为该类定义相应的方法。
23,从Person类中派生一个职工(Worker)类,新增的属性有:工种(字符型指针,以便于为其内容动态分配内存)、部门(字符型指针),并为该类定义相应的方法。
24,从学生类和职工类多重派生一个职工大学生(Worker-Student)类。
注:为了方便使用,将Person类中的各属性改为保护的,并将新类中的属性也作同样的处理,以便进一步派生。
25,修改学生类和职工类,以保证在职工大学生类中仅存在Person类的一个副本。
26,修改TestArr程序,将数组类Array的所有成员函数均测试到。
27,为“学生”类说明一个静态数据成员——学校名称,并提供相应的静态接口。
28,将11.2.2中的Object类尽可能地作进一步的完善,然后将它用作Person类的基类并在Person类及其派生类中分别实现从Object类中继承来的虚函数。
29,为Person类及其派生类重载“==”运算符。
30,为Person类及其派生类定义相应的转换函数。
31,为字符串类添加插入和提取运算符。
32,为字符串类添加插入和提取运算符重载。
33,编写一个程序,将 10 个学生的基本情况写入一个二进制文件中。
34,设计一个通用的数组模板类。
注:该题为选作题。