C语言程序设计复习题_第1页
C语言程序设计复习题_第2页
C语言程序设计复习题_第3页
C语言程序设计复习题_第4页
C语言程序设计复习题_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 C+语言程序设计复习题 一、 单项选择题 1.下列表达式中不正确的是 。 A、px B、pq9 C、k/(p3) D、23i5 2.若w是一个bool型变量,则w B、int A =9, 0, 3, 0, 0; B、int A5=9, 0, 3; D、int A5=9, 0, 3, 0; 4.如果一个函数无返回值,则只能作为 被调用。 A、表达式 B、语句 C、有参函数 D、无参函数 5.有关析构函数的说法中不正确的是 。 A、析构函数有且只能有一个 B、析构函数无任何函数类型 C、析构函数和构造函数一样可以有参数 D、析构函数的作用是在对象被撤销时收回先前分配的内存空间 6. 的功能是对对

2、象进行初始化 A、析构函数 B、数据成员 C、构造函数 D、静态成员函数 7.下列for语句的循环次数为 。 for(int i0,x0;!x B. 类A中声明数据成员B* b; C. 类A中声明数据成员const B D. 类A中声明成员函数 B func( B 21.执行bool OK=2!=3; cout=0的等价条件是 。 A、n=0) C、!(n0) 42.与if(x0) if(y0 | y0) x+=y; else x-=y; B、if(x=0) x+=y;else x-=y; C、if(x0) x=(y=0 ? x-y : x+y); D、if(y=0) if(x D、时,类A的

3、构造函数只会被调用1次。 58.类TM和类TN是两个独立的类,那么类TM中哪种形式的数据成员一定是不允许的: A. TM* a; B. TN C. TM a; D. TN a; 59.类B是通过public继承方式从类A派生而来的,且类A和类B都有完整的实现代码,那么下列说法正确的是: A. 类B中具有pubic可访问性的成员函数个数一定不少于类A中public成员函数的个数。 B. 一个类B的实例对象占用的内存空间一定不少于一个类A的实例对象占用的内存空间。 C. 只要类B中的构造函数都是public的,在main函数中就可以创建类B的实例对象。 D. 类A和类B中的同名虚函数的返回值类型必

4、须完全一致。 60.下列哪种函数可以是虚的: A. 自定义的构造函数 B. 拷贝构造函数 C. 静态成员函数 D. 析构函数 二、多项选择题 1.下列对指针变量的操作中,正确的是( ) A char s7; int *p=s=580; B char s6; int *p1=s; *p1= *p2; C char a7,*p; p=a; D int a6,*p; p= E int a8, *p=a; 2.下列一维数组的初始化语句中,正确的是( ) A float b5=0,3.2,4.3; B float b5=0,3,4.5,6,7,1.2; C char a3=?a?; D int a=0;

5、 E static int b3=1,5; 3.若有说明 int i=4,j=2,a54,(*p)4; 和赋值语句p=a;则对数组元素 aij之值的正确引用是( ) A *( p+4 *i+j) B *(p +i)j C *( *(p+i)+j) D *pij E pij 4.以下叙述中正确的是( ) A. 在不同的函数中可以使用相同名字的变量 B. 函数中的形式参数是局部变量 C. 在一个函数内定义的变量只在本函数范围内有效 D. 在一个函数内的复合语句中定义的变量在本函数范围内有效 E. 用static标识的变量是全局变量 5.设有如下定义:int (*ptr)( ); 则以下叙述中不正确

6、的是( ) A. ptr是指向一维数组的指针变量 B. ptr是指向int型数据的指针变量 C. ptr是指向函数的指针,该函数返回一个int型数据 D. ptr是一个函数名,该函数的返回值是指向int型数据的指针 E. ptr是一个指向二维数组的指针变量 6.以下标识符中不合法的是( ) A、pab B、a#b C、int D、2_and 7.已知:char a20, b20;则以下正确的输入语句是( ) A、gets(a, b); B、scanf(“%s%s”,a, b); C、scanf(“%s%s”, float b; stutype; 则下面叙述中正确的是( ) A、struct 是

7、结构类型的关键字 B、struct stu是用户定义的结构类型 C、stutype是用户定义的结构类型变量名 D、a 和b都是结构成员名 11若有说明:long *p,a;则能通过scanf语句正确给输入项读入数据的程序段是( ) (A) *p= scanf(“%ld”,p); (B) p=(long *)malloc(4); (C)scanf(“%ld”,p= (D)scanf(“%ld”, (E) scanf(“%ld”,p); a=*p; 12.下列一维数组的初始化语句中,正确的是( ) (A)float b5=0,3.2,4.3; (B)float b5=0,3,4.5,6,7,1.2

8、; (C) char a3=a; (D) int a=0; (E) static int b3=1,5; 13.以下叙述中错误的是( ) A. 定义函数时,形参的类型说明只能放在函数定义的第一行参数表中 B. return语句后边不能用表达式 C. 如果函数的类型与返回值类型不一致,以函数类型为准 D. 如果函数的类型与返回值类型不一致,以返回值类型为准 E. 如果形参与实参的类型不一致,以实参类型为准 14.若有以下说明: int a12=1,2,3,4,5,6,7,8,9,10,11,12; char c=a,d,g; 则数值为4的表达式是( ) (A)ag-c (B)a4 (C)a3 (

9、D)ad-c (D)ad-c 15.设有如下定义:int (*ptr)( ); 则以下叙述中不正确的是( ) A. ptr是指向一维数组的指针变量 B. ptr是指向int型数据的指针变量 C. ptr是指向函数的指针,该函数返回一个int型数据 D. ptr是一个函数名,该函数的返回值是指向int型数据的指针 E. ptr是一个指向二维数组的指针变量 16以下标识符中不合法的是( ) A、pab B、a#b C、int D、2_and E、abc 1已知:char a20, b20;则以下正确的输入语句是( ) A、gets(a, b); B、scanf(“%s%s”,a, b); C、sc

10、anf(“%s%s”, 1已知:double *p6;它的含义是( ) a) p是指针数组 b) p是数组指针 c) p是含有6个元素的一维数组,数组中每个元素都是指向double型变量的指针 d) p是double型数组 e) p是一个指向数组的指针 1已知:int i, x34;则能将x11的值赋给变量i的语句是( ) A、i=*(*(x+1)+1) B、i=x11 C、i=*(*(x+1) D、i=*(x1+1) E、i=x1+1 2设有以下说明语句: struct stu int a; float b; stutype; 则下面叙述中正确的是( ) A、struct 是结构类型的关键字

11、 B、struct stu是用户定义的结构类型 C、stutype是用户定义的结构类型变量名 D、a 和b都是结构成员名 E、stutype是结构体类型名 21.若变量已正确定义并赋值,下面符合C语言语法的表达式是( ) A a:=b+1 B a=b=c=2 C a+=b+3 D *p+ E a=a+7=c+b 22.以下叙述中正确的是( ) A. 在不同的函数中可以使用相同名字的变量 B. 函数中的形式参数是局部变量 C. 在一个函数内定义的变量只在本函数范围内有效 D. 在一个函数内的复合语句中定义的变量在本函数范围内有效 E. 用static标识的变量是全局变量 23.设有如下定义:in

12、t (*ptr)( ); 则以下叙述中不正确的是( ) A. ptr是指向一维数组的指针变量 B. ptr是指向int型数据的指针变量 C. ptr是指向函数的指针,该函数返回一个int型数据 D. ptr是一个函数名,该函数的返回值是指向int型数据的指针 E. ptr是一个指向二维数组的指针变量 24.以下叙述正确的是( ) A. do-while语句构成的循环不能用其它语句构成的循环来代替 B. do-while语句构成的循环只能用break语句退出 C. 由do-while语句构成的循环,其循环体至少执行一次 D. 用do-while语句构成的循环,在while后的表达式为非零时结束循

13、环 E. 用do-while语句构成的循环,在while后的表达式为零时结束循环 25.若已定义:int a9,*p=a; 并在以后的语句中未改变p的值,能表示a1地址的表达式是( ) A p+1 B a+1 C a+ D +p E 则下列函数调用中正确的是( ) A scanf(“%d”, B scanf(“%d, p”); C printf(“%d”, a); D printf(“%d”, *p); 28.设有说明int (*ptr)M; 其中的标识符ptr是( ) A. M个指向整型变量的指针 B. 数组指针 C. 具有M个指针元素的一维指针数组,每个元素都只能指向整型变量 D. 一个指

14、向具有M个整型元素的一维数组的指针 29.已知:static int a23=2,4,6,8,10,12;正确表示数组元素的是( ) A *(a+1) B *(a1+2) C *(*(a+1)+1) D a00 30.若有以下说明和语句: struct student int age; int num; std, *p; p= 则以下对结构变量std中成员age 的引用方式正确的是( ) A std.age B p-age C (*p).age D *p.age 三、填空题: 1.字符串“Hello”的长度是 个字节,存储时占有 个字节的空间。 2.字符串“C:DOSDATA.DAT”所表示的

15、全路径文件名是 。 3.如果x的值为34,y的值为7,则执行 if(x0) cout?A?;if(y-8) cout0;i-) s+=i; while(+i0;i-)cout?*?;将输出 个*号。 8.指针变量保存的不是一般的数据值,而是程序中另一个对象的 。 9.一个类有 个析构函数。 10.执行int x=5,y;y=+x3;后,x的值是 ,y的值是 。 1利用操作符,语句序列g=g+1;h=g+3;的功能可以由一个语句完成,这个语句是 。 1与1225bca?对应的C表达式是 。 1执行if(selse cout923 |x=923) coutAAA; else coutZZZ; 屏幕

16、上显示的是 。 1执行cout= ; ) coutendl; for( ; ; j+) cout ? ?; 2下面语句显示输出7行7列数组a的主对角线上的所有元素,请补充完整: for( ; ;i+) cout 100?10:100)的值和完成表达式求值后变量i的值分别是 和 。 22.不用操作符“!” ,xy3 的相反条件可以表示为: 。 23.执行for(int i0;i=21;i+)cout?*?;将输出 个*号。 24.与int i100;while(i)cout=3 | | x=5 的相反条件可以表示为: 。 27.类成员的访问属性分为 、 、 。 28.类中的数据成员和成员函数的默

17、认类型为 ,而结构中的数据成员和成员函数的默认类型为 。 29.已知数组array定义为int array=1,3,6,9,12 ; ,则array的各元素值是 ,最小下标是 ,最大下标是 。 30.已知数组array定义为 ;,则array是一个 行 列的二维数组,总共 个元素,最大行下标是 ,最大列下标是 ,第一行元素的值是 。 四、简答题 1. 说明类中的public、 protected和 private成员函数分别在public、protected和private继承方式下在派生类中的可访问性。 2. 若类A和类B没有继承关系,对于函数void func(A,请问为什么参数一定要使用

18、引用形式?使用const修饰符除了可以防止修改传递给构造函数的实参外,还有什么作用? 6. 程序员规范中要求不要写出类似(+i)+(i+) 或 f(+i,i+)这样的代码,请说明原因。 7.下面程序的打印结果是 #incude int f(int); int main() int i; for(i=0;i5;i+) coutF(i)0;i-) k+=i; return k; 8. 下面程序的打印结果是 #include int add(int x,int y=8); void main() int a=5; coutsum1=add(a)endl; coutsum2=add(a,add(a)e

19、ndl; coutsum3=add(a,add(a,add(a)endl; int add(int x,int y) return x+y; 9、main() int *p1,*p2,i1=10,i2=20; p1= p2= printf(%d,%d,,*p1,*p2); p2=p1; printf(%d,%dn,*p1,*p2); 10、main() int a,b,c; a=-1;b=-2; c=+a-b+; printf(%d,c); 11、void add() static int x=0; x+; printf(%d ,x); void main() int i; for(i=0;i

20、3;i+) add(); 12main() char ch25=“6934”,”8254”,*p2; int i,j,s=0; for(i=0;i2;i+) pi=chi; for(i=0;i?0?j+=2) s=10*s+pij-?0?; printf(“%d”,s); 13.main() int x,y,z; x=1;y=3; z=+x+(+y); printf(%d,z); 14.main() int a10=1,2,3,-4,5,6,7,-8,9,10,s=0; for(int i=0;i10;i+) if (ai0) break; s+=ai; printf(%d,s); 15.ma

21、in() int a=24,b=16,r; while (b) r=a%b; a=b; b=r; printf(%d,a); 16.main() char s10=abcdef; char *p=s; printf(%c ,*p+); p+; p+; printf(%c ,*p-); printf(%c ,*-p); 17、 main() int x,y,z; x=y=z=3; y=x+-1; printf(%d,%d,x,y); y=z-+1; printf(%d,%dn, y,z); 18、main() int a10=1,2,3,-4,5,6,7,-8,9,10,s=0; for(int

22、 i=0;i10;i+) if (ai0) break; s+=ai; printf(%d,s); 19、int x=1; void fun(int x) x=3; main() fun(x); printf(“%dn”,x); 20、main() int *p1,*p2,i1=10,i2=20; p1= p2= printf(%d,%d,,*p1,*p2); p2=p1; printf(%d,%dn,*p1,*p2); 21、main() int a4=10,25,36,48; int *p=a; printf(%d ,*p); p+; printf(%d ,*p+); printf(%d

23、,*+p); 22、int f(int b ,int n) int i, s=0; for(i=0; i=n; i+=2) s+=bi; return s; main() int x,a =2, 3, 4, 5, 6, 7, 8, 9; x=f (a, 5); printf(“%d”,x ); 23、main() static chat a =”program”, *ptr; for( ptr=a; ptr0) return (n* fun (n-2); else return (1); main() int x; x=fun(5); printf(“%dn”, x ); 五、 编程题: 1、

24、设计一个程序,输入正五边形的边长a,按公式R 1102525a? 计算该五边形外接圆的半径。 2、重新安排整数序列21,26,15,78,3,47,11,7,53,39的顺序,使其中最大的5个整数 位于序列的前部。显示处理后的这个整数序列 3.设计一个程序,输入四个整数,找出其中最大的一个并显示出来。 4.设计一个程序,输入三角形的三个边的长度a,b,c,按公式 area ()()()ssasbsc?,其中s1()2abc? 计算三角形的面积。 5.设计一个程序,计算并显示输出151!nn?的值。 6.输入12个正整数,然后重新排列这个数列的顺序,使得所有的奇数位于数列的前部。显示处理后的这两

25、个数列的结果 C+语言程序设计复习题参考答案 一、 单项选择题: 1-5、DBABC 6-10、CBBCC 11-15、DADCC 16-20、BCDBD 2125 C A B B B 2630 A A A D A 3135 C B A A B 3640 C A B A C 41-45、ACBDD 46-50、CADAB 51-55、DCAAD 56-60、CDCBD 二、多项选择题: 1、CE 2、ACDE 3、CE 4、ABC 5、ABDE 6、BCD 7、BD 8、AC 9、ABD 10、ABCD 11BCD 12.ACDE 13.ABDE 14CE 15. ABDE 16. BCD 1

26、7. BD 18. AC 19.ABD 20. ABCD 21、BCD 22、ABC 23、ABDE 24、CE 25、ABDE 26、ABD 27、ABCD 28、BD 29、BCD 30、ABC 三、填空题: 1.5、6 2.C:DOSDATA.DAT 3.A 4.y=READ?(OK?-1:0):-1; 5.46 6.9 7.23 8.地址值 9.1 10.6 、3 11.h=+g+3; 12.a*sqrt(b+2*sqrt(c)/5)/2 13.ZZZ 14.AAA 15.What?s the date today? 16.1 17.函数直接或间接调用自身 18.语句 19.4、0、i

27、 、int j = 0 、j8 、mij 20.int i=0 、i=3 22.22 23.for(int i=100;i0;i-) 24.cout?P? 25.h=g-5; 26.x5 27.public 、protected 、private 28.private 、public 29.1 3 6 9 12 、0、4 30.3、5、15、2、4、1 2 3 0 0 四、简答题 1. 重点是基类中的任何Private在派生类中都是不可访问的。 2. 可在A类中定义一个构造函数:A(const B 或在B类中定义一个自动转换函数: operator A( ) const; 3. 只有纯虚函数、

28、非静态的成员函数可以是常量成员函数。 (这题有点问题,析构函数可以是纯虚函数,但不能是常量函数) 4. 如类A中有函数 int f(void);和int f(int);为重载(overload) (同名,参数不同) 如类A中有函数 int f(void);,A的派生类B中给int f(void)一个新的实现体,为redefine 如类A中有虚函数 virtual int f(void);,A的派生类B中给virtual int f(void)一个新的实现体, 为override. 5. A(const A cout输入正五边形的边长a; R=a*(sqrt(10+2*sqrt(5)/5)/2; cout该五边形外接圆的半径RRendl; 2.重新安排整数序列21,26,15,78,3,47,11,7,53,39的顺序,使其中最大的5个整数 位于序列的前部。显示处理后的这个整数序列 #include void main() int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论