C++期末复习题
更新时间:2024-05-09 09:09:01 阅读量: 综合文库 文档下载
《面向对象程序设计》期末复习题
一、 选择题
1.系统约定C++源程序文件名的缺省的扩展名为 。 A
A.cpp B.c++ C.bcc D. vcc 2.关于C++程序的执行过程,正确的说法是 。 C
A.从程序的第一行开始,直到程序的最后一行结束 B.从主函数开始,直到程序的最后一行结束 C. 一定从主函数开始,直到主函数结束
D. 从程序的第一个函数开始,直到程序的最后一个函数结束 3.以下选项中,不能作为用户自定义标识符的是 。 B
A.a_bc B.a+bc C._time_ D.Name 4.下列符号中,能用作C++标识符的是 。D
A.5A B.int C.a+b D. F4 5.以下常量表示中,不正确的是 。 C
A.\ B.'a' C.0831 D.0X831
6.设有四个常数: ① 4e0.5 ② '\\87' ③ 0X5A ④\其中符合C++语法规则的常量是 。 C
A. ②③ B. ②④ C. ③④ D. ①②
x2?y27.数学式在C++程序中正确的表达式为 。C
xyA.sqrt(x*x+y*y)/x*y B.SQRT(x*x+y*y)/x*y C.sqrt((x*x+y*y)/(x*y)) D.SQRT((x*x+y*y)/(x*y)) 8. 在数学式
3xy中,变量x和y的取值为整数, 而变量a和b的取值为实数,在C++程序中对应的正确5ab表达式是 。 D
A.3/5*x*y/a/b B.3*x*y/5/a/b C.3*x*y/5*a*b D. 3/a/b/5*x*y
9. 设有说明: int x=10,y=4,f; float m; 执行表达式f=m=x/y后,则f、m的值分别为 。D A. 2, 2.5 B. 3, 2.5 C. 2.5, 2.5 D. 2, 2.0
10.设有说明语句:float y=5.16347;int x;则以下表达式中,可以实现将y 中的数值保留小数点后2位,第三位四舍五入的表达式是 。 B
A.y=(y*100+0.5)/100.0 B.x=y*100+0.5,y=x/100.0 C. y=y*100+0.5/100.0 D.y=(y/100+0.5)*100.0
11.在C++中,以下双目运算符中要求两个操作数均为整型的运算符是 。 D
A.|| B.&& C./ D.% 12.设int n=10,j=4;则赋值运算n%=j+1执行后,n的值是 。A
A.0 B.3 C.2 D.1 13.实型变量x 的取值范围为闭区间 [-2,10]或开区间(15,34),则正确表示x取值范围的逻辑表达式是 。B
A. -2<=x <=10||15 A.1 B.2 C.3 D.4 1 15.对于程序段: int a=1,b=2,c=3; if(a=0) cout< 执行上述语句序列后,下列说法正确的是 。C A.a的值为0,输出2 B.a的值为1,输出2 C.a的值为0,输出3 D.a的值为1,输出3 16.设有int x=1,y=2,z=3;下列关于语句的描述中, 是错误的。B A.if(x>3) if(y>5) else z=6 ;z=7; B.if(x>=3) z=6;else z=7; else z=8; C.if(x<3) for(z=6;z<9;z++) ;else z=7; D. if(x<3) switch(z){ case 1: z=6;} else z=7; 17.下述关于switch语句的描述中,正确的是 。D A. switch语句中的default子句可以没有,也可以有多个 B. switch语句中的每个语句序列中必须有break语句 C. switch语句中的default子句只能放在最后 D. switch语句中的case子句后面的表达式只能是整型表达式 18.下列关于switch语句,说法不正确的是 。C A.switch语句后的一对大括号不能省略 B.每一个case的出现顺序不影响程序执行的结果 C.switch语句中的default子句只能放在最后 D.每个case后的常量表达式的值必须互不相同 19.执行下列程序,若输入2,则输出的结果是 。A #include case 1:k++; case 2:k++;break; case 3:k++; default:k++; } cout< #include 2 switch(i) { case 1:k++; case 2:k++; case 3:k++; break; default:k++; } cout< 21.下列关于while和do … while循环语句的叙述中正确的是 。 A A. do …while 的循环体至少执行一次 B. while的循环体至少执行一次 C.do… while的循环体不能是复合语句 D.do … while 允许从循环体外跳转到循环体内 22.以下关于do while语句的叙述中,正确的是 。C A.不能使用do while语句构成的循环体 B.do while语句构成的循环必须用break语句才能退出 C.do while语句构成的循环,当while语句中的表达式值为零时结束循环 E. do while语句构成的循环,当while语句中的表达式值为非零时结束循环 23.以下对break语句的描述中,不正确的是 。 C A.break语句可用在循环语句中,其作用是结束本层循环的执行 B.break语句可用switch语句中,其作用是结束该switch语句的执行 C.break语句可用if语句中,其作用是结束该if语句的执行 D.break语句在同一循环体中可以多次使用 24.break语句只能用在 。D A. 开关语句中 B. 函数体中允许语句出现的任一位置 C. 循环语句中 D. 开关语句或循环语句中 25.下述关于”for(e1;e2;e3)s1;”的描述中,不正确的是 。B A. 表达式e1、e2和e3均可为空(没有) B. 表达式e1和e3可为空,但e2不能为空 C. 表达式e2的值可增可减 D. 循环体s1可以为空,但分号(;)必须有 26.循环语句: for (int x=0,y=0 ; y!=100 || x<10; ) x++; 执行的循环次数为 。B A. 无限次 B. 10 C. 11 D. 100 27.下面while循环语句的循环体执行次数是 。D while(int j=1)j--; A.1 B.0 C.5 D.无限 28.下面while循环语句的循环体执行次数是 。B while(int j=0)j--; A.1 B.0 C.5 D.无限 29.下面程序执行的结果是 。C #include { for(int i=4;i<=10;i++){ if(i%3==0)continue; 3 cout< } cout< A.45 B.69 C.457810 D.678910 30.下面程序执行的结果是 。B #include { for(int i=4;i<=10;i++){ if(i%3)continue; cout< } cout< A.45 B.69 C.457810 D.678910 31.以下叙述中,不正确的是 。 A A. 在函数内的复合语句中定义的变量在本函数范围内有效 B. 形式参数是局部变量 C. 在函数内定义的变量只在本函数范围内有效 D. 在不同函数中可以使用相同名字的变量 32.在以下的函数原型说明中,存在语法错误的是 。D A. void f(int a, int); B. void f2 (int , int); C. void f3(int , int=5); D. int f4(int x ; int y); 33.以下叙述中,不正确的是 。C A.一个函数中可以有多条return语句 B.一个函数中可以没有return语句 C.一条return语句可返回多个值 D.一条return语句可不返回值 34.下列说法,正确的是: 。C A.C++中的函数必须有return语句 B.一个函数只能有一个return语句 C.通过函数返回值只能带回一个函数执行结果 D.声明为void返回值类型的函数不能有return语句 35.以下四组函数原型说明中,满足C++函数重载规则的是 。C A.float f(float x); void f(float y); B.float f(float x); void f2(float x,float y); C.float f(float x,int y); void f(float y); D.float f(float y); float f(float y) ; 36. 下面有关重载函数的描述中正确的是______。B A. 重载函数必须具有不同的返回值类型 B. 重载函数必须具有不同的形参列表C. 重载函数形参个数必须不同 D. 重载函数名可以不同 37.设有宏定义:# define f(x) (-x*2) 执行语句: cout< A. -14 B. 2 C. -5 D. 5 4 38.设有宏定义:# define f(x) (-(x)*2) 执行语句: cout< A. -14 B. 2 C. -5 D. 5 39. 设有以下语句序列: int x; cin>>x; float z,y[x]={1,2,3,4,5,6,7,8}; //A z=y[3]; //B 则以下说法中正确的是 。 A A. z的值为3 B. z的值为4 C. A行语句有错 D.B行语句有错 40. 若有定义 #define N 3 #define M 3.3 int b=2; 则下列语句正确的是 。 A A. int A[N*N]; B. int A[b*b]; C. int A[M/M][3]; D. int A[M+b]; 41. 在float b[8]={2.3,4.3,6.1,7.8};中数组元素b[2]的值是 。 B A. 4.3 B. 6.1 C. 7.8 D. 0 42. 在float b[8]={2.3,4.3,6.1,7.8};中数组元素b[4]的值是 。 D A. 4.3 B. 6.1 C. 7.8 D. 0 43. 若有定义int a[][3]={{4,2},{1,3,5},{0,3};则数组中最小元素所在的行号和列号分别是 。D A. 3、1 B. 3、0 C. 2、1 D.2、0 44.若有定义int a[][3]={{4,2},{1,3,5}};则数组中最大元素所在的行号和列号分别是 。B A. 1、1 B. 1、2 C. 2、2 D. 2、1 45.若有char p[]=\则 strlen(p+4)的值是 。A A. 0 B. 1 C. 2 D. 4 46. 设有说明语句:char s[ ]= \的值是 。B A. 2 B. 9 C. 11 D. 15 47.执行以下程序时,输入一行字符串为:Thank you very much!程序的输出结果为 。B include { char line[100]; cin>>line; cout< A. T B. Thank C. Thank you very much! D. Thank you 48.执行以下程序时,输入一行字符串为:Thank you very much!程序的输出结果为 。C include { char line[100]; cin.getline(line,100); cout< A. T B. Thank C. Thank you very much! D. Thank you 49.若有 char *p=\则以下选项中错误的是 。B A. char &a= *p; B. char *s= *p; C. char *q=p+2; D. p=p+2; 50.以下四组语句中,不符合C++语法规则的是 。B A. char str[ ]= \ B. char str[20] ; str = \ 5 C. char *p= \ D. char *p ; p= \51.以下关于两个同类型指针变量的叙述中,不正确的是 。D A.在一定条件下,两个指针变量可以互相赋值 B.在一定条件下,两个指针变量可以进行比较运算 C.在一定条件下,两个指针变量可以进行减法运算 D.在一定条件下,两个指针变量可以进行加法运算 52.下列说法中错误的是 。D A. 将数组名作为实参,实际上是让形参和实参指向同一段内存空间 B. 数组名作为实参时,传递的是数组的地址 C. 数组名作为实参,并没有将实参元素复制一份给形参 D. 数组名作为实参,函数中对形参所表示数组元素的改变不会影响到实参数组元素的值 53. 将两个字符串连接起来组成一个字符串时,选用 函数。C A. strlen() B. strcap() C. strcat() D. strcmp() 54. 比较两个字符串大小时,选用 函数。D A. strlen() B. strcap() C. strcat() D. strcmp() 55.设有函数原型说明 void test(int a, int b=7, char *c=\下面的函数调用中存在语法错误的是 。C A.test(3) B. test(3,8.2) C. test(6, \ D. test(0,0, \56.设有说明语句:float fun( int &, char *); int x; char s[200]; 以下对函数fun的调用中, 正确的调用格式是 。B A. fun(&x, s) B. fun(x, s) C. fun(x, *s) D. fun(&x, *s) 57.有关类和对象的说法不正确的是______。C A:对象是类的一个实例 B:任何一个对象只能属于一个具体的类 C:一个类只能有一个对象 D:类与对象的关系和数据类型和变量的关系相似 58.下列关于this指针的叙述中,正确的是______。D A: this指针是一个隐含指针,它隐含于类的成员函数中 B: 只有在使用this时,系统才会将对象的地址赋值给this C: 类的友元函数也有this指针 D: this指针表示了成员函数当前操作的数据所属的对象 59.若有如下类定义,x的值是____.D #include S(int a=0){x=++a;} ~S(){ }; }; void main() { S a(10); } A: 0 B: 10 C: 11 D: 有语法错,得不到值 60.若有如下类定义,x的值是____.C #include int x; public: S(int a=0){x=++a;} 6 ~S(){ }; }; void main() { S a(10); } A: 0 B: 10 C: 11 D: 有语法错,得不到值 61.若有一个MyClass类,则执行语句MyClass a,b(2),*p;后,自动调用该类的构造函数_____次。A A: 2 B: 3 C: 4 D: 5 62.若有一个MyClass类,则执行语句MyClass a,b[2],*p;后,自动调用该类的构造函数__ __次。B A: 2 B: 3 C: 4 D: 5 63.若有如下程序,则运行结果正确的是____.C #include public: S(){x=0;} S(int a){x=++a;} void show(){cout<<\ }; void main() { S s1=100; s1.show(); } A: 有语法错 B: x=100 C: x=101 64.若有如下程序,则运行结果正确的是____.B #include public: S(){x=0;} S(int a){x= a ++;} void show(){cout<<\ }; void main() { S s1=100; s1.show(); } A: 有语法错 B: x=100 C: x=101 65.若有下列程序: #include Q(int a=0,int b=0) {x=a;y=b;} ... }; void main() { Q q(); //L ... } 则以下说法正确的是____.B D: x=0 D: x=0 7 A: L行说明了一个对象q B: L行说明了一个函数原型 C: L行说明了一个对象数组 D: 以上说法都不正确 66.若有下列程序: #include Q(int a=0,int b=0) {x=a;y=b;} ... }; void main() { Q q; //L ... } 则以下说法正确的是____.A A: L行说明了一个对象q B: L行说明了一个函数原型 C: L行说明了一个对象数组 D: 以上说法都不正确 67.以下属于析构函数的特征是____.D A: 析构函数名与类名不能相同 B: 析构函数的定义必须在类体内 C: 析构函数可以带或不带参数 D: 在一个类中析构函数有且只有一个 68.下面有关类的构造函数与析构函数的叙述中,正确的是____ .A A: 同一个类的构造函数可以定义多个 B: 同一个类的构造函数只能有一个 C: 同一类的析构函数可定义多个 D: 类的析构函数名可任意定义 69.通过公有派生类的对象,只能访问基类成员中的______。A A: 公有成员 B: 私有成员 C: 保护成员 D: 公有成员和保护成员 70.下列关于赋值兼容规则的叙述中,不正确的是____.B A: 派生类的对象可以赋值给基类的对象 B: 基类的对象可以赋值给派生类的对象 C: 派生类的对象可以初始化其基类的引用 D: 可以将派生类对象的地址赋值给其基类的指针变量 71.C++中不能被派生类继承的是____.B A: 虚函数 B: 析构函数 C: 静态成员函数 D: 运算符重载函数72.C++中不能被派生类继承的是____.B A: 虚函数 B: 构造函数 C: 成员函数 D: 运算符重载函数 73.下列关于虚函数的描述中,正确的是 .C A: 虚函数是一个 static类型的成员函数 B: 虚函数是一个非成员函数 C: 基类中采用virtual说明一个虚函数后,派生类中相同原型的函数也是虚函数 D: 派生类中的虚函数必须与基类中相同的虚函数名的虚函数具有不同的参数个数或类型 74.以下关于虚函数和函数重载的叙述中,不正确的是( )A A: 虚函数不是类的成员函数 B: 虚函数实现了 C++的多态性 C: 函数重载允许非成员函数,而虚函数则不行 D: 函数重载的调用根据参数的个数、序列来确定,而虚函数依据对象来确定 8 75.下列关于运算符重载的描述中,______是正确的。D A: 运算符重载可以改变操作数的个数 B: 运算符重载可以改变化先级 C: 运算符重载可以改变结合性 D: 运算符重载不可以改变语法结构 76.下列运算符中不能在C++中重载的是______。A A: ?: B: + C: - D: <= 77.为了区分一元运算符的前缀和后缀运算,在后缀运算符进行重载时,额外添加一个参数,其类型是____。C A: void B: char C: int D: float 78.若通过类的成员函数和友元函数所实现的运算符重载的功能是一样的,下列说法正确的是___。D A: 这两种函数的参数相同,函数体实现过程不同 B: 编译器对这两种函数编译时所作的解释相同 C: 这两种函数都带有this指针 D: 友元函数比成员函数多一个参数 79.下面程序的输出结果为______。A #include<iostream.h> class CStatic { public: CStatic(){val++;} static int val; }; int CStatic::val=0; void main() { CSatic cs1; cout< CStatic cs2; CStatic cs3,cs4; cout< A: 14 B: 24 C: 34 D:80.若有以下程序 #include { public: A(int i,int j) { a=i; b=j; } void move(int x,int y) { a+=x; b+=y; } void show() { cout< int a,b; }; class B:private A { public: B(int i,int j):A(i,j){} void fun() { move(3,5); } void fl() { A::show(); } }; void main() { B d(3,4); d. fun(); d.fl(); } 54 9 程序执行后的输出结果是______。C A: 3,4 B: 6,8 C: 6,9 D: 4,3 二、填空题 ●基本概念题 1. 在c++中,标识符是以字母或 (1) 下划线 开头的,由字母、数字和 (1) 组成的 字符序列。 2. 在VC++程序中,要使用库函数,必须用编译预处理指令将相应的头文件包含进来;如要进行标准 输入/输出,则该编译预处理指令为 #include 3. 设有说明语句int j;float x;则执行语句x=j=4.8;后,x的值为 4或4.0 。 4. 设有语句int a=5,b=7,c=15,d;d=b>a||(c=a+b);则c的值为 15 。 5. 设有循环语句: for (int i=0, x=0,s=0; i<=9&&x!=55 ; i++){ cin>>x; s+=x; } 在这循环语句中,循环体最多执行 10 次。 6. 设有循环语句: for (int i=0, x=0,s=0; i<=9&&x!=55 ; i++){ cin>>x; s+=x; } 在这循环语句中,循环体最少执行 1 次。 7. 静态整型变量有确定的初值,其缺省的初值为 0 。 8. 设有语句:int a[10]; 则a的值为 数组的起始地址 。 9. 设有语句:int x[4][3]={3,4,5,6,7,8,9,10,11,12};则x[3][0]的初值为 12 。 10. m×n的数组中包含 m×n 个元素。 11. 在C++中,函数的参数传递方式有三种: 值传递 、地址传递和引用传递。 12. 在C++中,函数的参数传递方式有三种:值传递、 地址传递 和引用传递。 13. 若有语句:int a[5]={25,14,27,18},*p=a; 执行语句: (*p)++;则*p的值为 26 ; 14. 若有语句:int a[5]={25,14,27,18},*p=a; 执行语句:*p++;则*p的值为 14 。 15. 面向对象程序设计的三大特征:封装性,继承性和 多态性。 16. 面向对象程序设计的三大特征: 封装性,继承性和多态性。 17. 对于每一个类,均有构造函数和析构函数。在这两种函数中能定义为虚函数的是 析构函数。 18. 对于每一个类,均有构造函数和析构函数。在这两种函数中不能定义为虚函数的是 构造函数。 19. 对基类数据成员的初始化必须在派生类构造函数中的 成员初始化列表 处执行。 20. 在公有派生类的成员函数中可以使用基类的公有和保护成员。 ●阅读程序题 21. 假定输入为60和20,则下列程序运行的结果为 20,60 。 #include 10 22. 运行下列程序,输入6和4,则输出结果分别是____6 5______。 #include if(x++>5) cout< cout< 23. 下列程序的输出结果是 2 。 #include { int a=4,b=7,c=2; if(a>b) if(a>c) cout< 24. 运行下列程序,输出的是____。 #include using namespace std; int main() { int x=1,y=0,a=0,b=0; switch(x){ case 1: switch(y){ case 0:a++;break; case 1:b++;break; } case 2:b++;break;a++; } cout< 25. 下列程序运行的结果为 02468 。 #include { for(int x=0;x<10;x++){ 11 if(x%2)continue; cout< 26. 运行下列程序,输出的是____。 #include int main() { for(int i=0;++i;i<5) { if(i==3){ cout<<++i< break; } cout<<++i<<','; } return 0; } 27. 运行下列程序,输出的是____。 #include { int x=0,y=5,z=3; while(z>0 && ++x<3) y=y-1; cout< } 28. 执行程序后输出的第一行是_______ , 第三行是_______。#include { int c3,c5,c7,m=20; c3=c5=c7=0; for(int i=1;i<=m;i++){ if(i==15 || i==14)continue; if(i%3==0) c3++; if(i%5==0) c5++; if(i%7==0) c7++; } cout< return 0; } 29. 下列程序输出结果为 s=6,k=5 。 #include 12 using namespace std; int main() { int j,k,s,m; for(k=2;k<4;k++){ s=1;m=k+2; for(j=k;j cout<<\return 0; } 30. 运行下列程序,输出的是____。 #include for(int i=0;i<3;i++) for(int j=0;j<3;j++) if(j>=i)n++; m++; cout< 31. # include cout< int main(void) { int x=5, y=8, z=fun(x,y); cout< 程序输出的第二行是 58 ,第三行是 34 。32. [程序] # include { static int a=1; int c=2; m+=++a; n+=++c; return m+n; 13 } int main(void) { int a=1, b=2; cout< 33. [程序] # include int fun(int *a, int &b,int c) { static int e; *a+=e++; b++; c+=::a++; e=*a+b+c; return e; } int main(void) { int a=10, b=1, c=1; cout< 程序输出的第一行是 228 ,第二行是 113 ,第三行是 229 。34. [程序] #include float f(float &sum,float x[],int n) { for(int i=0;i int main(void ) { float x[]={2,4,6,8},sum=0,y; y=f(sum,x,4); cout<<\ cout<<\ return 0; } 程序的输出第一行是 sum=20 ,第二行是 y=5 。 35. 下列程序的输出结果是B C。 #include char c1,c2; 14 public: void set(char b){c1=1+(c2=b);} void print(){cout< a.set('A'); b.set('B'); a.print(); b.print(); } 36. 下列程序的输出结果是 25 。 #include void Mul() { cout< Local(){X=0;} Local (int x){X=x;Mul();} }; int main() { Local a(5); return 0; } 37. 下列程序的运行结果是 A.func1 B.func1 。#include public: void func1(){ cout<<\ } }; class B{ public: void func1(){ cout<<\ } }; class C:public A,public B{ public: void func1(){ cout<<\ } }; void main() { C c; A &a=c; a.func1(); B &b=c; b.func1(); 38. 以下程序运行后的结果是 2。 #include Base(int x){ a=x; } void show(){ cout< } 15 class Derived:public Base { int b; public: Derived (int i):Base(i+1),b(i){ } void show(){ cout< void main() { Base b(5),*pb; Derived d(1); pb=&d; pb->show(); } 39. 下列程序的输出结果第一行是Base::display1(),第二行是 Derived::display2()。 #include void display1(){ cout<<\ } virtual void display2(){ cout<<\ } }; class Derived:public Base{ public: void display1(){ cout<<\ } void display2(){ cout<<\ } }; void main() { Base *pbase; Derived d; pbase=&d; pbase->display1(); p base->display2(); } 40. 下列程序的输出结果第一行是 Derived::display1() ,第二行是 Base::display2()。 #include virtual void display1(){ cout<<\ } void display2(){ cout<<\ } }; class Derived:public Base{ public: void display1(){ cout<<\ } void display2(){ cout<<\ } }; void main() { Base *pbase; Derived d; pbase=&d; pbase->display1(); pbase->display2(); } ●完善程序题 41. 以下程序的功能:斐波那契数列的第1和第2个数分别为0和1 ,从第三个数开始,每个数等于 其前两个数之和。求斐波那契数列中的前20个数,要求每行输出5个数。请完善程序。 16 请完善程序。 #include { int f,f1,f2,i; cout<<\斐波那契数列:\\n\ f1=0; f2=1; cout< f=___ f1+f2____; cout< if (___i%5==0____) cout< f2=___ f ____; } cout< } 42. 以下程序实现对输入的一个整数,求出各位数字之和。请完善程序。 #include cout<<\输入一个整数:\ cin>>n; while( n ){ s+=n; n/=10或 n=n/10 ; } cout< 43. 以下程序的功能是:采用插入排序的方法将数组s1中的数据升序排序,并删除相同的数据。函数insert()将整数x插入到已排序的数组p中(并仍保持升序),参数c为数组p中元素的个数。函数sort()将数组s中的数据按升序排序。先将s[0]放到临时数组tem[0]中,然后,依次从s中取一个元素,若该元素不在数组tem中,则调用函数insert()将该元素插入到数组tem中。最后将数组tem拷贝到数组s中。请完善程序。 #include 17 else{ for(int j=c;j>i;j--)p[j]=p[j-1]; p[i]=x ; } } int sort(int s[],int n) { int tem[200], len,j,k; tem[0]=s[0]; len=1; // len记录数组tem中的元素个数 for( j=1;j int main(void) { int s1[200]={34,22,11,55,66,30,22,100,66},n; n=sort(s1,9); for(int i =0;i 44. 下面的程序功能是:输入一行字符串,分别统计出该行字符串中大写字母、空格、数字及其他字符的个数。在函数count中,要求用引用数据类型做参数,带回该函数统计的结果。例如:当输入字符串 I’m 18 years old. 时,程序的运行结果为: Caps : 1 // 大写字母1个 Space : 3 // 空格3个 Num : 2 // 数字字符2个 Other : 11 // 其他字符11个 请完善程序。 #include void count( char[], int &, int &, int &, int & ) ; int main(void) { int caps=0, space=0, num=0, other=0; char str[80]; cout<<\:\ cin.getline(str,80); // 输入一行带空格的英文字符串 cout< count(str, caps, space, num, other ); cout<<\ 18 cout<<\ Caps : \ // 输出大写字母的个数 cout<<\ // 输出空格符的个数 cout<<\ Num : \ // 输出数字字符的个数 cout<<\ // 输出其他字符的个数 return 0; } void count( char p[ ], int &caps1, int &space1, int &num1, int &other1 ) { for(int i=0; p[i] ; i++) { if (('A'<=p[i])&&( p[i]<='Z')) caps1++ ; else if ((p[i]<='9') && (p[i]>='0')) num1++ ; else if ( p[i]==' ' ) space1++ ; else other1++ ; } } 45. 下列程序通过重载运算符\,实现直接比较两个一维数组是否相等。请完善程序。#include Arr() { for(int i=0;i<10;i++) x[i]=0; } Arr(int *p) { for(int i=0;i<10;i++) x[i]= *p++ ; } int operator==( Arr a ) { for(int i=0; i<10&&x[i]==a.x[i] ;i++); return (i<10 ?0:1); } }; void main() { int a[10]={1,2,3,4,5,6,7,8,9,10},b[10]={1,2,3,4,5,6,7,8,9,10}; Arr arr(a),brr(b); cout<<(arr==brr)< 46. 下列程序通过重载运算符\,实现两个一维数组的对应元素相加。请完善程序。 #include Arr() { for(int i=0;i<10;i++) x[i]=0; } Arr(int *p) { for(int i=0;i<10;i++) x[i]= *p++ ; } Arr operator+( Arr a ) { Arr temp; for(int i=0; i<10;i++) temp.x[i]=x[i]+a.x[i] ; 19 return temp ; } void show(){ for(int i=0; i<10;i++) cout< void main() { int a[10]={1,2,3,4,5,6,7,8,9,10},b[10]={1,2,3,4,5,6,7,8,9,10}; Arr arr(a),brr(b),crr; crr=arr+brr; crr.show(); } 三、编写程序 1. 求2~300之间的素数,并以每行5个素数输出。 #include using namespace std; int main(void ) { int i, k, n ; k=0 cout< 2.求从键盘输入的10个整数中正数之积和负数之和以及平均值,并分别输出这三个值。#include { int i,a,mul=1,sum1=0,sum=0; cout<<\请输入十个数:\ for(i=0;i<10;i++) { cin>>a; sum1+=a; 20 if(a>0) mul*=a; if(a<0) sum+=a; } cout<<\十个数中正数的积是:\ cout<<\十个数中负数的和是:\ cout<<\十个数中平均值是:\ return 0; } 3.设计一个程序,完成删除一个整数数组中所有的负数。要求: 1)整数数组中的元素个数n由运行程序时指定(提示:使用动态存储分配)。 2)用函数find_elem(int a[],int n)返回n个元素的数组a中的第一个负数的下标; 用函数delete_elem(int a[],int &n,int x)完成对有n个元素的数组a中下标为x的元素进行删除工作。 3)在主函数中输入数据,并输出处理结果,测试所写的函数。 #include { for(int i=0;i void delete_elem(int a[],int &n,int x) { for(int i=x;i int main( ) { int *p,n,k; cout<<\请输入个数\\n\ cin>>n; p=new int [n]; cout<<\请输入数据\\n\ for(int i=0;i 例如:若字符串为\,则最长平台为\,其长度为4。 具体要求如下: (1) 私有数据成员 21 char str[200] :存放字符串。 int maxlen :str字符串中最长平台的长度。 (2) 公有成员函数 Str(char s[]) :构造函数,用s中的字符串初始化成员str;置maxlen初始值为0。 void process ( ) :求str中的字符串中最长平台的长度。 void show( ) :输出字符串及最长平台的长度。 (3) 在主函数中完成对该类的测试。 输入一个字符串到字符数组text中,定义一个Str类的对象s,用text初始化对象s,调用成员函数求str字符串中最长平台的长度,输出字符串及其最长平台的长度。 #include { char str[]; int maxlen; public: Str(char s[]); void process( ); void show( ); }; Str::Str(char s[]) { strcpy(str, s); maxlen=0; } void Str::process( ) { char *ptr=str; int len; while(*ptr) { len=1; while(*ptr==*(ptr+1)) { len++; ptr++; } ptr++; if(len>maxlen) maxlen=len; } } void Str::show( ) { cout<<\ cout<<\ } void main( ) { char text[100]; cin.getline(text, 100); Str s(text); s.process( ); s.show( ); } 5. 任意输入一个字符串,将该字符串反序处理。试建立一个类Str,完成对串的反序处理。 22 例如:若字符串为\,则反序后的字符串为\。 具体要求如下: (1) 私有数据成员 char str[200] :存放字符串。 (2) 公有成员函数 Str(char s[]) :构造函数,用s中的字符串初始化成员str。 void process ( ) :将str中的字符串反序处理。 void show( ) :输出字符串。 (3) 在主函数中完成对该类的测试。 输入一个字符串到字符数组text中,定义一个Str类的对象s,用text初始化对象s,调用成员函数对str中字符串进行反序处理,输出处理后字符串。 #include { char str[]; public: Str(char s[]); void process( ); void show( ); }; Str::Str(char s[]) { strcpy(str, s); } void Str::process( ) { char *p1=str,*p2=str; while(*p2) p2++; p2--; while(p1 void Str::show( ) { cout<<\ } void main( ) { char text[100]; cin.getline(text, 100); Str s(text); s.process( ); s.show( ); 6. 在二维坐标中,任一线段均可以通过该线段两端点的坐标(x1,y1)和(x2,y2)来描述。设计一程序,输入两端点的坐标,计算两端点之间线段的长度。要求: 1)声明一个点类point,通过成员函数,实现坐标点数据的设置、输出、计算从该端点到另一端点之间的长度并输出。 2)在主函数中,定义两个点对象p1和p2,输入点对象p1和p2的坐标数据并输出两端点坐标及它们之间的长度,完成对点类point的测试工作。 #include 23 #include int main( ) { point p1,p2;double x1,y1,x2,y2; cout<<\请输入第一个点的坐标:\ cin>>x1>>y1; cout<<\请输入第二个点的坐标:\ cin>>x2>>y2; p1.setxy(x1,y1);p2.setxy(x2,y2); p1.print();p2.print(); cout<<\两点之间的距离是:\ return 0; } 24
正在阅读:
C++期末复习题05-09
C语言程序设计试题及答案03-04
防静电规范-C - 图文12-16
复旦大学本科教学培养方案、选课、 分流方案介绍(定稿)10-08
小学三年级数学下册竞赛试题及答案03-01
计算流体力学CFD及其应用09-06
浅谈护理美学中的礼仪美09-19
辐射剂量与防护(B5标准)09-09
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- C++
- 复习题
- 期末
- 信息技术多选题(附答案)之六
- 信用卡催收实习周记
- 山东省2009届各地期末考试数学(新课标)章节分类试题《数列》(
- windows编程 12文档与视图
- 质量管理制度文件表格
- 加固工程合同范本
- 头发中含汞量的测定
- 管理心理学答案
- 如何巧妙激发中班混班运动中幼儿运动兴趣论文
- 语境记忆法
- 2005-2012年江苏专转本计算机基础历年真题 - - 附答案 - - 200
- 0906石景山初三物理二模试题及答案 - 图文
- dollar-免费版专职安全员岗位考试(卷)题库--新--无答案
- 中国本土十大CRO公司简介
- 《湖北省招标投标管理办法》(省人民政府第306号令)
- 浅谈罪犯的心理特征
- 国际法案例
- 缔约过失责任研究(毕业论文)
- java酒店管理系统毕业论文
- 六年级奥数-和倍、差倍、和差问题