收藏 分销(赏)

2024年C编程题库.doc

上传人:快乐****生活 文档编号:8187066 上传时间:2025-02-07 格式:DOC 页数:123 大小:190.54KB 下载积分:20 金币
下载 相关 举报
2024年C编程题库.doc_第1页
第1页 / 共123页
2024年C编程题库.doc_第2页
第2页 / 共123页


点击查看更多>>
资源描述
31.定义盒子Box类,要求具备如下组员:长、宽、高分别为x,y,z,可设置盒子形状;可计算盒子体积;可计算盒子的表面积。 #include <iostream> #include <iostream> using namespace std; class Box{ public: int weight; int length; int hight; void box_shape(int w, int l, int h); int box_volume(int w, int l, int h); int box_area(int w, int l, int h); }; int main() { Box mybox; cout << "Please Enter weight and length and hight:"; cin >> mybox.weight >> mybox.length >> mybox.hight; int box_v, box_a; mybox.box_shape(mybox.weight, mybox.length, mybox.hight); box_v = mybox.box_volume(mybox.weight, mybox.length, mybox.hight); cout << "This box's volume =" << box_v << endl; box_a = mybox.box_area(mybox.weight, mybox.length, mybox.hight); cout << "This box's area = " << box_a << endl; } void Box::box_shape(int w, int l, int h) { if(w == l && l == h) cout << "This is a Cube!" << endl; else cout << "This is a cuboid!" << endl; } int Box::box_volume(int w, int l, int h) { return w * l * h; } int Box::box_area(int w, int l, int h) { return 2 * w * l + 2 * l * h + 2 * w * h; } 32. 有两个长方柱,其长、宽、高分别为:(1)30,20,10;(2)12,10,20。分别求他们的体积。编一个基于对象的程序,在类中用带参数的结构函数。 #include <iostream> class Box{ private: int length; int weight; int hight; public: Box(int, int, int); int volume(); }; int main() { using namespace std; Box mybox1(30, 20, 10); cout << "The first Box's volume = " << mybox1.volume() << endl; Box mybox2(12, 10, 30); cout << "The second Box's volume = " << mybox2.volume() << endl; return 0; } Box::Box(int l, int w, int h) { length = l; weight = w; hight = h; } int Box::volume() { return (hight * weight * length); } 33. 有两个长方柱,其长、宽、高分别为:(1)12,20,25;(2)10,30,20。分别求他们的体积。编一个基于对象的程序,且定义两个结构函数,其中一个有参数,一个无参数。 #include <iostream> class Box{ private: int length; int wight; int height; public: Box(); Box(int, int, int); int volume(); }; int main() { using namespace std; Box mybox1; cout << "The first box's volume = " << mybox1.volume() << endl; Box mybox2(10, 30, 20); cout << "The second box's volume = " << mybox2.volume() << endl; return 0; } Box::Box() { length = 12; wight = 20; height = 25; } Box::Box(int l, int w, int h) { length = l; wight = w; height = h; } int Box::volume() { return length * wight * height; } 34. 申明一个类模板,利用它分别实现两个整数、浮点数和字符的比较,求出大数和小数。 #include <iostream> using namespace std; template<class numtype> class Compare {public: Compare(numtype a,numtype b){x=a;y=b;} numtype max(){return (x>y)?x:y;} numtype min(){return (x<y)?x:y;} private: numtype x,y; }; int main() {Compare<int>cmp1(3,4); cout<<cmp1.max()<<" is the Maximum of two inteder numbers."<<endl; cout<<cmp1.min()<<" is the Minimum of two inteder numbers."<<endl<<endl; Compare<float> cmp2(45.78,93.6); cout<<cmp2.max()<<" is the Maximum of two float numbers."<<endl; cout<<cmp2.min()<<" is the Minimum of two float numbers."<<endl<<endl; Compare<char> cmp3('a','A'); cout<<cmp3.max()<<" is the Maximum of two characters."<<endl; cout<<cmp3.min()<<" is the Minimum of two characters."<<endl; return 0; } 35. 建立一个对象数组,内放5个学生的数据(学号、成绩),用指针指向数组首元素,输出第1,3,5个学生的数据。初值自拟。 #include<iostream> using namespace std; class Student { public: Student(int n,int s):num(n),score(s){} void display() {cout<<num<<" "<<score<<endl;} private: int num; int score; }; int main() { Student stud[5]={Student(01,70),Student(02,71),Student(03,72),Student(04,73),Student(05,74)}; Student *p=stud; for(int i=0;i<=2;p=p+1,i++) p->display(); return 0; } 36. 建立一个对象数组,内放5个学生的数据(学号、成绩),设置一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。初值自拟。 #include<iostream> using namespace std; class Student { public: Student(int n,int s):num(n),score(s){} int num; int score; }; int main() { Student stud[5]={Student(01,70),Student(02,71),Student(03,72),Student(04,73),Student(05,74)}; void max(Student *); Student *p=&stud[0]; max(p); return 0; } void max(Student *arr) { float max_score=arr[0].score; for(int i=0;i<5;i++) if(max_score<arr[i].score) {max_score=arr[i].score;} cout<<max_score<<" "<<arr[i].num<<endl; } 38. 定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。将运算符函数重载为非组员、非友元的一般函数。编写程序,求两个复数之和。初值自拟。 #include <iostream> class Complex{ private: double real; double image; public: Complex(); Complex(double, double); double get_real(); double get_image(); }; Complex operator + (Complex &, Complex &); int main() { Complex s1(3, 4); Complex s2(5, -10); Complex c3; c3 = s1 + s2; std::cout << "s1 + s2 = "; std::cout << "(" << c3.get_real() << ", " << c3.get_image() << "i)" << std::endl; // Complex s1(3, 4); // std::cout << s1.get_real() << std::endl; return 0; } Complex::Complex(double r, double i) { real = r; image = i; } Complex::Complex() { real = 0; image = 0; } double Complex::get_real() { return real; } double Complex::get_image() { return image; } Complex operator + (Complex & s1, Complex & s2) { Complex c(s1.get_real() + s2.get_real(), s1.get_image() + s2.get_image()); return c; } 39. 定义一个复数类Complex,重载运算符“+”,“—”,使之能用于复数的加,减运算,运算符重载函数作为Complex类的组员函数。编程序,分别求出两个复数之和,差。初值自拟。 #include <iostream> class Complex{ private: double real; double image; public: Complex(); Complex(double, double); Complex operator + (Complex &); Complex operator - (Complex &); void display(); }; int main() { Complex s1(3, 4), s2(5, 6), c; c = s1 + s2; c.display(); c = s1 - s2; c.display(); return 0; } Complex::Complex() { real = 0; image = 0; } Complex::Complex(double r, double i) { real = r; image = i; } Complex Complex::operator + (Complex & s1) { Complex c; c.real = s1.real + real; c.image = s1.image + image; return c; } Complex Complex::operator - (Complex & s1) { Complex c; c.real = real - s1.real; c.image = image - s1.image; return c; } void Complex::display() { using namespace std; cout << real << " " << image << endl; } 40. 定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。参加运算的两个运算量能够都是类对象,也能够其中有一个是整数,次序任意。例如:c1+c2,i+c1,c1+i均合法(设i为整数,c1,c2为复数)。编程序,分别求两个复数之和、整数和复数之和。初值自拟。 #include <iostream> class Complex { private: double real; double imag; public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} Complex operator+(Complex &c2); Complex operator+(int &i); friend Complex operator+(int&,Complex &); void display(); }; Complex Complex::operator+(Complex &c) { return Complex(real+c.real,imag+c.imag); } Complex Complex::operator+(int &i) { return Complex(real+i,imag); } void Complex::display() { using namespace std; cout<<"("<<real<<","<<imag<<"i)"<<endl; } Complex operator+(int &i,Complex &c) { return Complex(i+c.real,c.imag); } int main() { using namespace std; Complex c1(3,4),c2(5,-10),c3; int i=5; c3=c1+c2; cout<<"c1+c2="; c3.display(); c3=i+c1; cout<<"i+c1="; c3.display(); c3=c1+i; cout<<"c1+i="; c3.display(); return 0; } 41. 有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。如c=a+b。初值自拟。 #include <iostream> using namespace std; class Matrix //定义Matrix类 {public: Matrix(); //默认结构函数 friend Matrix operator+(Matrix &,Matrix &); //重载运算符“+” void input(); //输入数据函数 void display(); //输出数据函数 private: int mat[2][3]; }; Matrix::Matrix() //定义结构函数 {for(int i=0;i<2;i++) for(int j=0;j<3;j++) mat[i][j]=0; } Matrix operator+(Matrix &a,Matrix &b) //定义重载运算符“+”函数 {Matrix c; for(int i=0;i<2;i++) for(int j=0;j<3;j++) {c.mat[i][j]=a.mat[i][j]+b.mat[i][j];} return c; } void Matrix::input() //定义输入数据函数 {cout<<"input value of matrix:"<<endl; for(int i=0;i<2;i++) for(int j=0;j<3;j++) cin>>mat[i][j]; } void Matrix::display() //定义输出数据函数 {for (int i=0;i<2;i++) {for(int j=0;j<3;j++) {cout<<mat[i][j]<<" ";} cout<<endl;} } int main() {Matrix a,b,c; a.input(); b.input(); cout<<endl<<"Matrix a:"<<endl; a.display(); cout<<endl<<"Matrix b:"<<endl; b.display(); c=a+b; //用重载运算符“+”实现两个矩阵相加 cout<<endl<<"Matrix c = Matrix a + Matrix b :"<<endl; c.display(); return 0; } 42. 将运算符“+”重载为适合用于复数加法,重载函数不作为组员函数,而放在类外,作为Complex类的友元函数。初值自拟。 #include <iostream> class Compare { private: int real; int imag; public: Compare(); Compare(int, int); friend Compare operator+(Compare & c1, Compare & c2); void display(); }; int main() { Compare c1(3, 4), c2(2, 5), c3; c3 = c1 + c2; c3.display(); return 0; } Compare::Compare() { real = 0; imag = 0; } Compare::Compare(int r, int i) { real = r; imag = i; } void Compare::display() { using namespace std; cout << real << " " << imag << "i" << endl; } Compare operator+(Compare & c1, Compare & c2) { Compare c(c1.real + c2.real, c1.imag + c2.imag); return c; } 43. 定义一个字符串类String,用来存储不定长的字符串,重载运算符“==”,,用于两个字符串的等于比较运算。初值自拟。 44. 定义一个字符串类String,用来存储不定长的字符串,重载运算符"<",用于两个字符串的小于的比较运算。初值自拟。 45. 定义一个字符串类String,用来存储不定长的字符串,重载运算符">",用于两个字符串的不小于的比较运算。初值自拟。 #include <iostream> #include <string> using namespace std; class String { public: String() { p=NULL;} String(char *str); friend bool operator>(String &string1,String &string2); friend bool operator<(String &string1,String &string2); friend bool operator==(String &string1,String &string2); void display(); private: char *p; }; String::String(char *str) { p=str; } void String::display() { cout<<p;} //输出P所指向的字符串 bool operator>(String &string1,String &string2) { if(strcmp(string1.p,string2.p)>0) return true; else return false; } bool operator<(String &string1,String &string2) { if(strcmp(string1.p,string2.p)<0) return true; else return false; } bool operator==(String &string1,String &string2) { if(strcmp(string1.p,string2.p)==0) return true; else return false; } void compare(String &string1,String &string2) { if(operator>(string1,string2)==1) { string1.display();cout<<">";string2.display();} else if(operator<(string1,string2)==1) { string1.display();cout<<"<";string2.display(); } else if(operator==(string1,string2)==1) { string1.display();cout<<"=";string2.display(); } cout<<endl; } int main() { String string1("Hello"),string2("Book"), string3("Computer"),string4("Hello"); compare(string1,string2); compare(string2,string3); compare(string1,string4); return 0; } 46. 定义一个描述学生基本情况的类,数据组员包括姓名、学号、C++成绩、英语和数学成绩,组员函数包括输出数据,求出总成绩和平均成绩。数据自拟。 #include <iostream> class Student { private: char * name; int id; int cpp_source; int eng_source; int math_source; public: Student(char *, int, int, int, int); void sum_source(); void avg_source(); }; int main() { Student s("John", 1, 90, 80, 97); s.sum_source(); s.avg_source(); return 0; } Student::Student(char * n, int i, int cs, int es, int ms) { name = n; id = i; cpp_source = cs; eng_source = es; math_source = ms; } void Student::sum_source() { std::cout << name << " The sum of source: " << cpp_source+eng_source+math_source << std::endl; } void Student::avg_source() { double avg; avg = (cpp_source + eng_source + math_source) / 3; std::cout << "The avg of source: " << avg << std::endl; } 47. 先建立一个Point(点)类,包括数据组员x,y(坐标点)。以它为基类,派生出一个Circle(圆)类,增加数据组员r(半径),再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,在增加数据组员h(高)。编写程序,重载运算符“<<”和“>>”,使之能够用于输出以上类对象。 #include <iostream> class Point { protected: int x, y; public: Point(){x = 0, y = 0;} Point(int a, int b) { this->x = a; this->y = b; } void setX(int a){x = a;} void setY(int b){y = b;} int getX(){return x;} int getY(){return y;} }; class Circle:public Point { protected: int r; public: Circle(int x, int y, int r):Point(x, y){this->r = r;} void setR(int a){r = a;} int getR(){return r;} }; class Cylinder:public Circle { protected: int h; public: Cylinder():Circle(0, 0, 0),h(0){} Cylinder(int x, int y, int r, int h):Circle(x, y, r){this->h = h;} void setH(int a){h = a;} int getH(){return h;} friend std::istream & operator>>(std::istream &, Cylinder &); friend std::ostream & operator<<(std::ostream &, Cylinder &); }; std::istream & operator>>(std::istream & input, Cylinder & cc) { int _x, _y, _r, _h; std::cout << "Enter the Cylinder: " << std::endl; input >> _x >> _y >> _r >> _h; cc.setX(_x); cc.setY(_y); cc.setR(_r); cc.setH(_h); return input; } std::ostream & operator<<(std::ostream & os, Cylinder & cc) { os << cc.getX() << cc.getY() << cc.getR() << cc.getH() << std::endl; return os; } int main() { using namespace std; Cylinder cc; cin >> cc; cout << cc; return 0; } 48. 写一个程序,定义抽象类型Shape,由他派生三个类:Circle(圆形),Rectangle(矩形),Trapezoid(梯形),用一个函数printArea分别输出三者的面积,3个图形的数据在定义对象是给定。 #include <iostream> class Shape { public: virtual double area() const = 0; }; class Circle:public Shape { private: double r; public: Circle(double a):r(a){} virtual double area() const { return 3.14 * r * r; } }; class Rectangle:public Shape { private: double h, w; public: Rectangle(double a, double b):h(a),w(b){} virtual double area() const { return h * w; } }; class Trapezoid:public Shape { private: double h, w; public: Trapezoid(double a, double b):h(a), w(b){} virtual double area() const { return 0.5 * h * w; } }; void printArea(const Shape & c) { std::cout << c.area() << std::endl; } int main() { Circle c(2); printArea(c); Rectangle r(2, 4); printArea(r); Trapezoid t(3, 5); printArea(t); return 0; } 49. 定义一个人员类Cperson,包括数据组员:姓名、编号、性别和用于输入输出的组员函数。在此基础上派生出学生类CStudent(增加成绩)和老师类Cteacher(增加教龄),并实现对学生和教师信息的输入输出。 #include <iostream> class Cperson { protected: char name[10]; int id; int sex; public: virtual void getInfor() = 0; virtual void printInfor() = 0; }; class CStudent:public Cperson { protected: int course; public: virtual void getInfor() { using namespace std; cout << "Enter the student's inforamtion" << endl; cout << "Enter the name: "; cin >> name ; cout << "Enter the id: "; cin
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服