【C++试题】C++学校课程试题存档/不分先后
对于学校所给试题的总结归档和个人感悟。
hellenionia
github同名
展开
-
习题:设计一个程序,用于人事管理,要求可以对人员的基本情况进行修改。
完整题干:设计一个程序,用于人事管理,要求可以对人员的基本情况进行修改。设计一个“人员”类,包括有编号、性别、参加工作日期、出生日期,现在的日期等数据类型,其中“参加工作日期、出生日期、现在的日期”为另一个“日期”类内嵌子对象,用成员函数实现对人员信息的录入和显示,用函数Age()计算并输出人员的工龄和年龄,另设计一个函数实现对人员的排序(按年龄由大到小进行排序)。输入的数据应保存至磁盘文件中。个人答案:#include<string>#include<iostream&g原创 2021-12-29 13:44:06 · 530 阅读 · 0 评论 -
习题:下列shape类是一个表示形状的抽象类,area ()为求图形面积的函数。
完整题干:下列shape类是一个表示形状的抽象类,area()为求图形面积的函数。请从shape类派生三角形类(triangle)、圆类(circles),利用用虚函数给出具体的求面积函数,并求它们的和。要求用基类指针数组,使它的每一个元素指向一个派生类。个人答案:#include <iostream>using namespace std;class shape{public: virtual double Area() = 0; virtual v.原创 2021-12-17 16:48:25 · 5185 阅读 · 0 评论 -
习题:输入输出的数据应保存在磁盘文件中。
完整题干:设计成一个person类,包括有姓名、性别、参加工作日期、出生日期,现在的日期等数据类型,其中“参加工作日期、出生日期、现在的日期”为另一个“日期”类内嵌子对象,用成员函数实现对人员信息的录入和显示,用函数Age()计算并输出人员的工龄和年龄,另设计一个函数实现对人员的排序(按年龄由大到小进行排序)。将person类作为学生类student的基类,派生一个学生类,其中数据成员有学号、姓名、年龄、5门课程的成绩,以及若干成员函数。并利用这个类建立一个对象数组。(1)求第一门课的平均成绩;(2原创 2021-12-17 16:47:08 · 465 阅读 · 0 评论 -
习题:构造一个类,可以计算各种尺寸液晶的点距。按点距从大到小输出常见显示器的规格参数。
完整题干:液晶显示器的像素间距(pixel pitch)的意义类似于CRT的点距(dot pitch)。一般是指显示屏相邻两个象素点之间的距离。点距的计算方式是以面板尺寸除以解析度所得的数值。构造一个类,可以计算各种尺寸液晶的点距。按点距从大到小输出常见显示器的规格参数。注意:(1)显示器的尺寸一般是对角线长。1英寸等于25.4mm。(2)不同尺寸的显示器分辨率不同,长宽比也不同。常见的长宽比有4:3,5:4,16:10,16:9。个人答案:#include<iostream原创 2021-12-17 16:43:48 · 317 阅读 · 0 评论 -
习题:将person类作为学生类student的基类,派生一个学生类,其中数据成员有学号、姓名、年龄、3门课程的成绩,以及若干成员函数。
完整题干:将person类作为学生类student的基类,派生一个学生类,其中数据成员有学号、姓名、年龄、3门课程的成绩,以及若干成员函数。并利用这个类建立一个对象数组。(1)求第一门课的平均成绩;(2)找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩和平均成绩;(3)找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编3个函数实现以上三个要求。要求:(1)使用构造函数实现对数据的输入。(2)以上三个要求必须用成员函数实现。(3)在头文件中完成类的声明,在.cp.原创 2021-12-10 17:31:30 · 2347 阅读 · 0 评论 -
习题:编写一个程序计算出球、圆柱和圆锥的表面积和体积。
完整题干:编写一个程序计算出球、圆柱和圆锥的表面积和体积。要求:(1)定义一个基类,至少含有一个数据成员半径,并设为保护成员;(2)定义基类的派生类球、圆柱、圆锥,都含有求表面积和体积的成员函数和输出函数;(3)编写主函数,求球、圆柱、圆锥的表面积和体积。注:圆周率取3.14个人答案:#include <iostream>using namespace std;double const pi = 3.14;class Circle {protected:原创 2021-12-10 17:27:03 · 6514 阅读 · 1 评论 -
习题:编写一个学生和教师数据输入和显示程序,学生数据有编号、姓名、班级和成绩,教师数据有编号、姓名、职称和部门。
完整题干:编写一个学生和教师数据输入和显示程序,学生数据有编号、姓名、班级和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名输入和显示设计成一个类person,并作为学生数据操作类student和教师类数据操作类teacher的基类。个人答案:#include<iostream>#include<string>using namespace std;class Person //声明基类{public: Person(string name1,原创 2021-12-10 17:25:27 · 11697 阅读 · 2 评论 -
习题:分别用成员函数和友元函数重载运算符,使对整型的运算符=、+、-、*、/适用于分数运算。要求:(1)输出结果是最简分数(可以是带分数);(2)分母为1,只输出分子。
个人答案:#include <iostream>using namespace std;class fenshu {public: fenshu(int n = 0, int d = 0): num(n), den(d) {}//分子n,分母d fenshu operator+(fenshu& c2); fenshu operator-(fenshu& c2); fenshu operator*(fenshu& c2);原创 2021-12-02 23:40:03 · 1247 阅读 · 1 评论 -
习题10.4:有两个矩阵A和B,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。重载运算符“<<”和“>>”,使之能用于矩阵输入输出。
个人答案:#include <iostream>#include <iomanip>using namespace std;class Array{public: Array(); friend Array operator+(Array a1, Array a2); //重载运算符输入输出 friend istream& operator>>(istream&, Array&); frien原创 2021-12-02 23:37:05 · 862 阅读 · 0 评论 -
习题:设计一个学生类,其中数据成员有学号、姓名、年龄、3门课程的成绩,以及若干成员函数。并利用这个类建立一个对象数组。
完整题干:设计一个学生类,其中数据成员有学号、姓名、年龄、3门课程的成绩,以及若干成员函数。并利用这个类建立一个对象数组。(1)求第一门课的平均成绩;(2)找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩和平均成绩;(3)找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编3个函数实现以上三个要求。要求:(1)使用构造函数实现对数据的输入。(2)以上三个要求必须用成员函数实现。(3)在头文件中完成类的声明,在.cpp中完成类的实现,在主文件(.cpp)中完成主函数原创 2021-12-02 23:32:34 · 3836 阅读 · 0 评论 -
习题:计算圆柱表面积和体积
个人答案:#include <iostream>#include <Cmath>#define PI 3.1415926using namespace std;class Circle{public: Circle(double,double);//声明构造函数 double Volume(); double Area(); friend void display( Circle&);//声明display函数private: doub原创 2021-12-02 23:30:05 · 635 阅读 · 0 评论 -
习题6.17:写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为int strcmp( char * p1, char * p2);设p1指向字符串s1 ,p2指向字符串s2。
完整题干:写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为int strcmp( char * p1, char * p2);设p1指向字符串s1 ,p2指向字符串s2。要求当s1=s2时,返回值为0,若s1≠s2,返回它们二者第1个不同字符的ASCII码差值(如"BOY"与"BAD" ,第2个字母不同, " O"与"A"之差为79-65 =14)。如果s1 >s2,则输出正值,如s1 <s2,则输出负值。个人答案:#include <io原创 2021-12-02 23:24:48 · 1948 阅读 · 0 评论 -
习题6.12:用指针数组处理第11题,字符串不等长。(11题题目:在主函数中输人10个等长的字符串。用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串。)
个人答案:#include <iostream>using namespace std;int main();void sort(char* s[], int n);int main(){ const char* str[5] = { "zoo","shock","fear","link","snake" }; int i; sort(str, 5); for (i = 0, cout << "Sort by: "; i < 5;原创 2021-12-02 23:23:44 · 573 阅读 · 0 评论 -
习题6.7:有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
个人答案:#include <iostream>using namespace std;void copy(char* s, int m);int main(){ char str[20];//给予内存20 int num; cout << "Please enter string: "; cin >> str; cout << "Please enter copy number: "; cin &原创 2021-12-02 23:22:52 · 356 阅读 · 0 评论 -
习题6.6:写一函数,求一个字符串的长度。在main 函数中输人字符串,并输出其长度。
个人答案:#include <iostream>using namespace std;int stringlen(char* s);int main(){ char str[20];//给予字符串长度20 cout << "Please enter string: "; cin >> str; cout << "String length: " << stringlen(str) << e原创 2021-12-02 23:22:04 · 270 阅读 · 0 评论 -
习题6.4:有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,见图6.25。写一函数实现以上功能,在主函数中输入n个整数,并输出调整后的n个数。
完整题干:有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,见图6.25。写一函数实现以上功能,在主函数中输入n个整数,并输出调整后的n个数。个人答案:#include <iostream>using namespace std;void move(int* s, int m, int n);//定义一个移动函数int main(){ int a[10], i, num; for (i = 0, cout << "Plea原创 2021-12-02 23:21:08 · 749 阅读 · 0 评论 -
习题6.3:输入10个整数,将其中最小的数与第1个数对换,把最大的数与最后一个数对换。写3个函数:①输入10个数;②进行处理;③输出10个数。
个人答案:#include <iostream>using namespace std;void input(int* n, int m);void change(int* n, int m);void print(int* n, int m);int main(){ int a[10]; input(a, 10); change(a, 10); print(a, 10);//三个函数,10个数 system("pa原创 2021-12-02 23:19:45 · 1052 阅读 · 0 评论 -
习题:设计一个含有指针类型的程序:定义一个整型变量a,一个整型指针p,一个引用r,通过p 把a的值改为10,通过r 把a的值改为5。
个人答案:#include<iostream>using namespace std;int main(){ int a = 5;//原a=5 int* p = &a;//p的地址=a的地址 int& r = a; *p = 10;//给p一个值,从而改a cout << "通过p把a的值改为:"<<a << endl; r = 5;//给一个r,改a cout <<"通过r把a的值改为:"<<原创 2021-12-02 23:18:05 · 991 阅读 · 0 评论 -
习题:一个班10名学生,包含姓名、学号和3门课程的成绩。
完整题干:一个班10名学生,包含姓名、学号和3门课程的成绩。(1)求第一门课的平均成绩;(2)找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩和平均成绩;(3)找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编3个函数实现以上三个要求。个人答案:#include <iostream>#include <string>using namespace std;int main(){ //函数声明,每次都需要重新录入 voi原创 2021-12-02 23:17:11 · 1500 阅读 · 0 评论 -
习题:用指针变量设计一通用函数,该函数查找实型数组中最大和最小元素并输出相应元素和下标。
个人答案:#include <iostream>#include<algorithm>using namespace std;int main(){ int arr[5]={2, 10, 5, 1, 4}; //最值 cout<< "最大值:" << *max_element(arr,arr+5) << endl; cout<< "最小值:"<< *min_element(arr,ar原创 2021-12-02 23:15:51 · 642 阅读 · 0 评论 -
习题:设计一个学生类,其中数据成员有学号、姓名、年龄、3门课程的成绩,以及若干成员函数。并利用这个类建立一个对象数组。同时编写主函数使用这个类,实现对学生数据的赋值和输出。
完整题干:设计一个学生类,其中数据成员有学号、姓名、年龄、3门课程的成绩,以及若干成员函数。并利用这个类建立一个对象数组。同时编写主函数使用这个类,实现对学生数据的赋值和输出。要求:(1)使用成员函数实现对数据的输入、输出。(2)在头文件中完成类的声明,在.cpp中完成类的实现,在主文件(.cpp)中完成主函数编写。个人答案:#include<iostream>#include<string>using namespace std;class S.原创 2021-12-02 23:13:09 · 4034 阅读 · 0 评论 -
习题:一圆型游泳池如图所示,现在需在其周围建一圆型过道,并在其四周围上栅栏。栅栏价格为35元/米,过道造价为20元/平方米。过道宽度为3米,游泳池半径由键盘输入。要求编程计算并输出过道和栅栏的造价。
完整题干:一圆型游泳池如图所示,现在需在其周围建一圆型过道,并在其四周围上栅栏。栅栏价格为35元/米,过道造价为20元/平方米。过道宽度为3米,游泳池半径由键盘输入。要求编程计算并输出过道和栅栏的造价。个人答案:#include <iostream>#define PI 3.1415926using namespace std;class Circle {public: Circle(double);//传进来的参数类型 double Area();//计算⚪面原创 2021-12-02 23:11:27 · 4383 阅读 · 0 评论 -
习题8.4:定义日期类型Date。要求有以下面成员: (1)可以设置日期; (2)日期加一天操作; (3)输入函数,输入格式为“XXXX年XX月XX日”。
完整题干:定义日期类型Date。要求有以下面成员:(1)可以设置日期;(2)日期加一天操作;(3)输入函数,输入格式为“XXXX年XX月XX日”。要求:使用成员函数实现对数据的输入、输出,在头文件中完成类的声明,在.cpp中完成类的实现,在主文件(.cpp)中完成主函数编写。个人答案:class Data{private: int year; int month; int day;public: Data(int n_year, int n_month, in原创 2021-12-02 23:10:05 · 2506 阅读 · 1 评论 -
习题5.16:输入10个学生的姓名、学号和成绩,将其中不及格者的姓名、学号和成绩输出。
个人答案:①#include <iostream>#include<string>using namespace std;const int n = 10;//常变量string name[n];//姓名int num[n], score[n];//学号、成绩int main(){ int i; void input_data(); input_data(); cout << endl << "不及格者:" << e原创 2021-11-01 00:09:32 · 2818 阅读 · 0 评论 -
习题5.13:编写一程序,将两个字符串连接起来,结果取代第一个字符串。(1)用字符数组,不用strcat函数(即自己写一个具有strcat函数功能的函数);
个人答案:(一)①#include <iostream>#include <string>using namespace std;void connect(char str1[], char str2[]);int main(){ char s1[20], s2[10]; cout << "Please enter string 1: "; cin >> s1; cout << "Please原创 2021-11-01 00:06:29 · 897 阅读 · 0 评论 -
习题5.8:有15个数按由小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。
个人答案:①#include<iostream>using namespace std;int main(){ const int n = 15;//使变量具有常属性 int a[n] = { 19,29,33,35,37,39,43,46,49,52,55,64,76,87,99 };//15个从小到大的数所组成的数组 int x, low = 0, high = 0, mid = 0;//开始下标,结尾下标,中间 cout << "输入要查找的数:";原创 2021-11-01 00:02:51 · 1625 阅读 · 0 评论 -
习题5.6:打印出以下的杨辉三角(要求打印出10行)
完整题干:个人答案:①#include <iostream>#include <iomanip>using namespace std;int main(){ int n[10][10], i, j; for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) { if (j == 0 || i == j) n[i][j] = 1;/原创 2021-10-31 23:57:58 · 659 阅读 · 0 评论 -
习题5.5:将一个数组中的值按逆序重新存放,例如原来顺序为8、6、5、4、1,要求改为1、4、5、6、8。
个人答案:①#include <iostream>using namespace std;int main(){ int n[5] = { 8, 6, 5, 4, 1 }; int i, j, temp; for (i = 0, cout << "原始排序为: "; i < 5; cout << n[i++] << ' '); //进行累加依次排序输出 for (i = 0, j = 4; i &l原创 2021-10-31 23:53:18 · 1457 阅读 · 0 评论 -
习题5.4:有一个已经排好序的数组,今输入一个数,要求按照原来的排序规律使它插入到数组中。
个人答案:①#include <iostream>using namespace std;int main(){ int n[10] = { 12, 34, 56, 67, 78, 89, 90, 92, 95 };//设定一个排好序的数组 int num, i, j; cout << "Please enter insert number: "; cin >> num;//输入一个需要插入的数 for (i = 0原创 2021-10-31 23:50:58 · 800 阅读 · 0 评论 -
习题:有100个学生种100棵树,其中高中生每人种3棵树,初中生每人种1棵树,小学生每3人种1棵树,问高中生、初中生、小学生各有多少人?
个人答案:#include <iostream>using namespace std;int main(){ int x, y, z; for(x = 0; x <= 100; x++) { for(y = 0; y <= 100; y++) { for(z = 0; z <= 100; z++) { if((x + y + z == 100) && (3 * x + 2 * y +原创 2021-10-24 11:54:14 · 927 阅读 · 0 评论 -
习题3.23:用迭代法求x=a^1/2,求平方根的迭代公式为要求前后两次求出的x的差的绝对值小于10^-5,在运行时输入不同的数值赋给变量a,分析所得结果是否正确。
个人答案:#include <iostream>#include <cmath>using namespace std;int main(){ int a; double x1, x2; cout<<"Please enter a: "; cin>>a; for (x1=1, x2=(x1+a/x1)/2; fabs(x2-x1)>1e-5; x1=x2, x2=(x1+a/x1)原创 2021-10-24 11:50:31 · 986 阅读 · 0 评论 -
习题:编程求所有的三位数素数,且该数是对称的。所谓“对称”是指一个数,倒过来数还是该数。例如,375不是对称数,因为倒过来变成了573。用for 或while 或do-while循环语句实现。
参考答案:#include <iostream> using namespace std;bool isPrime(int i);void isSame(int j);int main(){ for (int i=100;i<=999;++i) { if (isPrime(i)) { isSame(i); } }}bool isPrime(int原创 2021-10-24 11:47:25 · 584 阅读 · 0 评论 -
习题:一球从100米高度落下,每次落地后反跳回原高度的一半,再落下。编成求它在第10次落地时,共经过距离为多少米?第10次落地后的反弹有多高?
个人答案:#include <iostream>using namespace std;int main() { float height = 100, sum = 0; int i; for (i = 1; i <= 10; i++) { height = height / 2; //每次下落反弹回原高度的一半 sum = sum + 2 * height; /原创 2021-10-24 11:46:08 · 446 阅读 · 0 评论 -
习题:用do…..while, while, for 三种循环语句求出1+3+5+….+101的和,输出结果。
个人答案:①do-while:#include<iostream>using namespace std;int main(){ int i=1, sum = 0; do { sum = sum + i; i = i + 2; } while ( i <= 101); cout << "1+3+5+...+101"<<"="<<sum << endl; system("pau.原创 2021-10-24 11:39:12 · 3057 阅读 · 0 评论 -
习题4.12:三角形的面积为area=s(s-a)(s-b)(s-c)其中,s=1/2(a+b+c),a,b,c为三角形的三边。定义两个带参数的函数,一个用来求s
个人答案:#include <iostream>#include <iomanip>#include <cmath>#define s(a, b, c) (a+b+c)/2#define area(a, b, c, s) s*(s-a)*(s-b)*(s-c)using namespace std;int main(){ double a, b, c; double ss, aa; cout <<原创 2021-10-24 11:23:28 · 2596 阅读 · 0 评论 -
习题4.11:用递归法求f(x)=1*1+2*2+3*3+…+n*n,n的值由键盘输入。
个人答案:#include <iostream>using namespace std;int sum(int n);int main(){ int num; cout << "请输入n的值: "; cin >> num; cout << "结果: " << sum(num) << endl; system("pause"); return 0;}原创 2021-10-24 11:19:16 · 816 阅读 · 0 评论 -
习题:求1-n的阶乘之和,用一个非递归函数fac(n)求n!,n的值由主函数输入,最终得到的结果在主函数中输出。
个人答案:#include <iostream>using namespace std;int fac(int n);//定义函数fac(n):返回一个数的阶乘,即1*2*3*...*该数int main()//主函数{//声明部分和执行语句 int a; cout << "请输入 a: "; cin >> a; cout << "结果为: " << fac(a) << endl; syste原创 2021-10-24 11:16:01 · 670 阅读 · 0 评论 -
习题4.3:写一个判别素数的函数,从主函数输入一个整数,输出是否为素数的信息。
个人答案:#include <iostream>using namespace std;void prime(int n);int main(){ int num; cout << "请输入数字: "; cin >> num; prime(num); system("pause"); return 0;}void prime(int n){ int i; for (i = 2; i &l原创 2021-10-24 11:10:51 · 965 阅读 · 0 评论