C++期末复习题一
- 格式:doc
- 大小:105.50 KB
- 文档页数:19
试卷编号:1120所属语言:C语言试卷方案:C语言期末考试试卷总分:100分共有题型:4种一、单项选择共30题(共计60分)第1题(分)设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是(A ).A:k++B:k+=1C:++kD:k+1第2题(分)已知int i=5,执行语句i+=++i后,i的值是(C).A:10B:llC:12D:A、B、C都不对第3题(分)以下程序的功能是:给r输入数据后,计算半径为r的圆面积s.程序在编译时出错. ttinclude <>void main()/* Beginning */{ int r;float s;scanf (〃%d〃,&r);s=p*r*r; printf (〃s=%f\n〃,s);出错的原因是(D).A:注释语句书写位置错误B:存放圆半径的变量r不应该定义为整型C:输出语句中格式描述符非法D:计算圆面积的赋值语句中使用了非法变量第4题(分)〃\\\〃 ABC\〃 \\〃的长度是(B ).A:llB:7C:5D:3第5题(分)已知int j, i=l执行语句j=-i++;后,j的值是(C ).A:1B:2串中的内容为“abcdefg”时,c 所指数组中的内容应该为 “lg2f3e4dcba” 。
*/ttinclude <>#include <>#include <>void fun ( char char *b, char *c )int i , j;char ch;i = 0;j 二 strlen(b)-l;/**********FOUND**********/ch = b [ i];b[j] = ch; i++; j —;/**********FOUND**********/while ( *a &&*b )//此处&&改为| | (逻辑或)if ()*c =*a;c++;/**********FOUND**********/a+;)if ( *b )*c 二*b; c++;b++;*c = 0;main()char sl[100],s2[100],t[200];clrscr ();printf (,z \nEnter si string : 〃);scanf (〃如〃,si);printf (,z \nEnter s2 string : 〃);scanf (〃%s 〃, s2);fun( si, s2, t );printf (/z \nThe result is : %s\n 〃,t );i j四、程序设计共1题(共计20分)第1题(分)/*【程序设计】功能:判断一个整数w 的各位数字平方之和能否被5整除, 可以被5整除则返回1,否则返回0。
1、用C语言编写的代码程序()。
(A)可立即执行(B)是一个源程序(C)经过编译即可执行(D)经过编译解释即可执行2、以下程序的输出结果是()。
main(){int a=12,b=12;printf("%d,%d\n",--a,++b);//(编译时--中间无空格)}(A)1010(B)1212(C)1110(D)11133、设有int x=11;则表达式(x++*1/3)的值是()。
(A)3(B)4(C)11(D)124、C语言中运算对象必须是整型的运算符是()。
(A)%=(B)/(C)=(D)〈=5、C语言中运算优先级最低的运算符是()。
A、%B、*=C、||D、==6、以下程序的输出结果是()。
main(){int a,b;for(a=1,b=1;a<=100;a++){if(b>=10)break;if(b%3==1){b+=3;continue;}}printf("%d\n",a);}A、100B、101C、4D、17、下面程序的输出是()。
main(){int x=10,y=3;printf("%d\n",y=x/y);}A、0B、1C、3D、不确定的值8、以下程序的输出结果是()。
main(){int i=010,j=10,k=0x10;printf("%d,%d,%d\n",i,j,k);}(A)8,10,16(B)8,10,10(C)10,10,10(D)10,10,169、为表示79<x<90,应用的C语言表达式是()。
A、(x>79)&&(x<90)B、(x>79)&(x<90)C、79<x<90D、(x>79)||(x<90)10、以下选项中,与k=n++完全等价的表达式是()。
A、k=n,n=n+1B、n=n+1,k=nC、k=++nD、k+=n+111、有如下程序,该程序的输出结果是()。
复习题(一)1。
用高级语言编写的源程序必须通过___________程序翻译成二进制程序才能执行,这个二进制程序称为____________程序。
【答案】编译目标2。
下列符号串中,属于C语言合法标识符的是()①else ②a-2 ③_00 ④00【答案】③3.下列说法中,正确的是()①主函数名是由程序设计人员按照“标识符”的规则选取的②分号和回车符号都可以作为一个语句的结束符号③在程序清单的任何地方都可以插入一个或多个空格符号④程序的执行,总是从源程序清单的第1行开始【答案】③4.-12345E-3代表的十进制实数是________________________.【答案】—12.3455.设字符型变量ch中存放字符“A”,则执行“ch+++2”后,ch中的字符是________。
【答案】B6.设字符型变量ch1中存放的字符是“A",字符型变量ch2中存放的字符是“B”,则执行“!(ch1=’B')&&(ch2='C')”的运算后,变量ch2中的字符是_____________.【答案】B6-1.设整型变量m,n,a,b,c,d均为1,执行“(m=a〉b)&&(n=a>b)”后m,n 的值是()①0,0 ②0,l ③1,0 ④1 ,l【答案】②。
7.设整型变量x1和x2的值均为10,则表达式“x1/=x2-4”的值是_______________. 【答案】l8.在C语言中,如果某个关系表达式成立(真),则该关系表达式的值是____;如果某个逻辑表达式为假,则该逻辑表达式的值是_________.【答案】1 09.设有整型变量x,如果表达式“!x”值为0,则x的值为_________;如果表达式“!x"值为1,则x的值为___________。
【答案】非010.下列表达式中,不属于逗号表达式的是()①a=b,c ②a,b=c ③a=(b,c) ④a,(b=c)【答案】③11.在三种选择结构中,能用2个条件,控制从3个操作中选择一个操作执行的选择结构是______选择结构【答案】多分支12.在三种循环结构中,先执行循环操作内容(即循环体),后判断控制循环条件的循环结构是______循环结构。
一、单选题:1、已知ch是字符型变量,下面不正确的赋值语句是( B )。
A、ch=‘\0’B、ch=‘a+b’C、ch=‘7’+‘9’D、ch=7+92、以下4组用户定义标识符中,全部合法的一组是(A )。
A、s_5B、IfC、txtD、intabout -max REALk_2E2 turbo 3COM_0013、C语言中的简单数据类型包括( B )A、整型、实型、逻辑型B、整型、实型、字符型、枚举型C、整型、字符型、逻辑型D、整型、实型、逻辑型、字符型4、已知:int i=1,j;执行语句j=-i++;后,j的值是(C )A、1B、2C、-1D、-25、已知:int i=5;执行语句i+=++i;后,i的值是( C )A、10B、11C、12D、A、B、C答案都不对7、若x为int型变量, x=6;则执行以下语句后,x的值为( C )。
x+=x-=x*x;A、 36B、 60C、- 60D、-248、设d为字符变量,下列表达式不正确的是( D )。
A、d=’g’B、d=’a’C、d=97D、d=”g”9、若a=1,b=2,c=3,d=4;则条件表达式 a>b?a:c<d?c:d结果为( B )A、4B、3C、2D、110、printf函数中用到格式符"%8s",其中数字8表示输出的字符串占用8列。
如果字符串长度大于8,则按原字符长从左向右全部输出;如果字符串长度小于8,则输出方式为( B )。
A、从左起输出该字符串,右补空格B、右对齐输出该字符,左补空格C、按原字符长从左向右全部输出D、输出错误信息11、在嵌套的if-else语句中,else总是与( D )配对。
A、其之前最近的ifB、第一个ifC、缩进位置相同的ifD、其之前最近的且不带else的if12、一个C语言程序总是从( B )开始执行。
A、程序的第一个函数B、主函数C、子函数D、主程序13、设x=2.9,a=8,y=3.7,算术表达式x+a%3*(int)(x+y)%5/2的值是 ( A )A、3.9B、4C、4.2D、3.7514、程序片段执行后输出结果是 ( A )int x=5, y=8;printf ("% d", x<y ? x : (x, y));A、5B、8C、5,8D、编译出错15、下面能正确表示变量a在区间[0,8]或(4,10)内的表达式为:( D )。
2、下面程序的功能是输出数组s中最大元素的下标。
填补空出的语句,以使程序完整。
main(){int k,p;int s[]={1,-9,7,2,-10,3};for(p=0,k=p;p<6;p++)if(s[p]>s[k])_____________;printf(“%d\n”,k);}一、单项选择题(每题2分,共20分)1.设x,y,z,k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为______A.4B.16C.32D.522.从循环体内某一层跳出,继续执行循环外的语句是:______A. break语句B.return语句C.continue语句D.空语句。
3.一个C程序的执行是从______A.main()函数开始,直到main()函数结束。
B.第一个函数开始,最后一个函数结束。
C.第一个语句开始,最后一个语句结束。
D.main()函数开始,直到最后一个函数。
4.若x=5,y=3 则y*=x+5;y的值为______A. 10B. 20C. 15D. 305. 若有以下定义,则能使值为3的表达式是:int k= 7,x =12;A. x%=(k%= 5)B. x%=(k-k%5)C. x%=k- k%5D. (x%=k)-(k%=5)6.C语言中用于结构化程序设计的三种基本结构是______A.if、switch、breakB.if while forC.while do- while forD.顺序结构、选择结构、循环结构7.main(){ int n;(n=6*4,n+6),n*2;printf(“n=%d\n”,n);}此程序的输出结果是______A.30B. 24C. 60D. 488. 在16位机上使用C语言,若有如下定义:union data { int i;char ch;double f;}b;则共用体变量b占用内存的字节数是________。
1、 给定n 个数据,求最小值岀现的位置(如果最小值 岀现多次,求岀第一次岀现的位置即可)。
iati=0;for (i=Ui<n;i++^ ifGs[i]<s[k]) k=i : r-i- >最大值 第三行i<=n 五行k+12、 编写程序求无理数 e 的值并输岀。
计算公式为:e=1+1/1!+1/2!+1/3!+……+1/n! 当 1/n!<0.000001 时 e=2.718282。
l«ig int j :ini i*k : float m je ; i=l : eP, 0: jc=l-0: whil€(jc>=C.OOOOOn {e= e+j c; jh ; £ortk=l;K=i;k^+)jc=1.0/j ; i++; }return e;3、求一批数中最大值和最小值的积。
int i, min :for (i=l;i<n;i++) if (a[i ] ) msx=a[i ]:else if(a[imin=aLi]; r eturn (m :如对您有帮助,欢迎下载支持,谢谢!求出的最大数为18,行坐标为2,列坐标为1。
int 曲电 j ;ay [0][时; Col=0;for (iP ;*◎;】*+) {£«rG=O :j<H :j++) if (jnax^wray [订[j]〉 {ma}t=arr ay [iHj]; R 艸二 i; Col=j 汀 r;7、 求一个n 位自然数的各位数字的积。
(n 是小于10的 自然数) Ion® 山 *=1 ;while (n 比) {d=n%ia ; s#=d.; n/=10; } return E ;8、 计算n 门课程的平均值,计算结果作为函数值返回。
例如:若有5门课程的成绩是:92,76,69, 58, 88,则函数的值为76.599998。
一、简答题1、请问指针有哪些类型?指针的类型,跟他所指向的数据结构有关,基本类型的指针指向基本类型的数据结构。
2、函数式宏定义和函数调有什么不同?(1)函数式宏定义的参数没有类型,预处理器只负责做形式上的替换,而不做参数类型检查,所以传参时要格外小心。
(2)调用真正函数的代码和调用函数式宏定义的代码编译生成的指令不同。
(3)函数式宏定义要注意格式,尤其是括号。
(4)若函数参数为表达式,则普通函数的调用与函数式宏定义的替换过程是不一样的。
(5)函数式宏定义往往会导致较低的代码执行效率。
3、请问指针编程有哪些优点?(1)提高传输速度,又节省大量内存。
(2)可以用来做数据类型转换,比较常用于通讯缓冲区的填充。
(3)可以用在大量分支处理的实例当中。
(4)在数据结构中,链表、树、图等大量的应用都离不开指针。
4、C语言中,变量为什么要先定义后使用?(1)对于编译器处理更方便。
(2)不容易出错。
(3)程序更清晰。
5、二维数组的初始化定义的正确形式有哪些?请举例说明(1)分行赋初值例如:int a[2][3]={ {1,3,4},{2,3,1},{7,9,0} };(2)按顺序初始化例如:int a[2][3]={1,3,4,2,3,1,7,9,0};(3)省略一维长度的赋值例如:int a[][3]={1,3,4,2,3,1,7,9,0};(4)对数组的前几行元素初始化,其他元素自动初始化为0例如:int a[2][3]={ {1},{2,3} };6、while与do while相同点与不同点是什么?(1)while语句是先测试条件再执行语句,条件不符后终止;do while语句是先执行语句再测试条件,条件不符后终止,所以do while循环至少执行一次7、请写出一个C程序的构成(1)C程序是由若干个函数构成的(2)每个函数(包括主函数)的定义分为两个部分:函数说明部分和函数体。
(3)C程序中的语句最后总要有一个“分号(;)”,作为每个语句的结束。
一、选择题A(1)下列的()是引用调用。
A.形参是引用,实参是变量;B.形参和实参都是变量;C.形参是指针,实参是地址值;D.形参是数组名,实参是数组名。
C(2)作用域运算符的功能是()A.给定作用域的大小;B.表示作用域的级别的;C.某个成员是属于哪个类的;D.指出作用域的范围的。
D(3)下列的各函数中,()不是类的成员函数。
A.构造函数;B.析构函数;C.拷贝初始化构造函数;D.友元函数。
D(4)下面()不是构造函数的特征。
A.构造函数可以重载;B.构造函数可以设置缺省参数;C.构造函数的函数名和类名相同;D.构造函数必须指定返回值类型。
C(5)下述静态数据成员的特性中,()是错误的。
A.静态数据成员要在类体外进行初始化;B.说明静态数据成员时前边要加修饰符static;C.静态数据成员不是所有对象所共有的;D.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符。
C(6)已知类A有三个公有成员:void f1(int), void f2(int) 和int a,则()是指向类A成员函数的指针。
A.A *p; B. int A::*pc=&A::a;C.void(A ::*pa)(int);D. A **p;C(7)下列关于对象数组的描述中,()是错的。
A.对象数组的数组名是一个地址常量;B.对象数组的下标是从0开始的;C.对象数组只能赋初值,不能被赋值;D.对象数组的数组元素是同一个类的对象.B(8)下列定义中,()是定义指向类A的对象数组的指针。
A.A *p[5];B.A (*p)[ 5];C.(A *) p[5]; D.A *p[ ];A(9)说明语句const char *ptr;中,ptr是()。
A.指向字符常量的指针;B.指向字符的常量指针;C.指向字符串常量的指针;D.指向字符串的常量指针。
B(10)关于new运算符的下列描述中,( )是错的.A.使用它创建对象时要调用构造函数;B.使用它创建对象数组时必须指定初始值;C.它可以用来动态创建对象和对象数组;D.使用它创建的对象或对象数组可以使用运算符delete删除。
C语言期末复习题第一单元程序设计和C语言一、选择题1.C语言的基本构成单位是: A 。
A. 函数B. 函数和过程C. 超文本过程 D. 子程序2.一个C语言程序总是从 B 开始执行。
A. 主过程B. 主函数C. 子程序D.主程序3.C语言的程序一行写不下时,可以。
A. 用逗号换行B. 用分号换行C. 在任意一空格处换行D. 用回车符换行4.以下叙述不正确的是: C 。
A. 在C程序中,语句之间必须要用分号";"分隔B. 若a是实型变量,C程序中a=10是正确的,因为实型变量中允许存放整型数C. 在C程序中,无论是整数还是实数都能正确无误地表示D. 在C程序中,%是只能用于整数运算的运算符5.以下不正确的C语言标识符是 D 。
A. ABC B. abc C.a_bc D. ab.c6.下列字符串是标识符的是: A 。
A. _HJB. 9_studentC. longD. LINE 17.以下说法中正确的是: C 。
A. C语言程序总是从第一个定义的函数开始执行B. 在C语言程序中,要调用的函数必须放在main()函数中定义C. C语言程序总是从main()函数开始执行D. C语言程序中的main()函数必须放在程序的开始部分8.不合法的常量是: D 。
A. ‘\2’B. ""C. ‘3’D. ‘\483’9.已知各变量的类型说明如下,则以下不符合C语言语法的表达式是: A 。
int k,a,b;unsigned long w=5;double x=1.422;A. x%(-3)B. w+=-2C. k=(a=2,b=3,a+b)字符串"\\\"ABC\"\\"的长度是 B 。
A. 11B. 7C. 5D. 3二、填空题1.一个函数由两部分组成,它们是和。
2.一个C源程序至少包含一个,即。
3.设int a=12; 则表达式a/=a+a的值是。
C++语言程序设计期末复习题一、单项选择题1.下列符号中,不可以作为变量名的是d。
A.list_p_9 B.PA 123C.ready D.for 2.由C++目标文件连接而成的可执行文件的缺省扩展名为b。
A.cpp B.exeC.obj D.lik 3.在每个C++程序中都必须包含有这样一个函数,该函数的函数名为a。
A. mainB. MAINC. nameD. functkion4.设x和y均为bool量,则x&&y 为真的条件是a。
A. 它们均为真B. 其中一个为真 C. 它们均为假 D. 其中一个为假5.下列表达式中正确的是b。
A.(k++)++ B.k---jC.k--/=5 D.(k+ 3)=56.执行下面程序段的输出结果是b。
int x=4,y=-55; if (x>0) if (x>10) cout <<”AA”else cout <<”BB”else if (y<-8) if (y>-20) cout <<”CC”else cout <<”DD”;A. AAB. BBC.CC D. DD7.下面四个程序段中,输出23个*号的程序段是c。
A. for (int i=1; i<23; i++) cout <<’*’;B. for (int i=23; i>=0; i--) cout <<’*’;C. int i=23; while (i>0) { cout <<’*’;i--; }D. int i=0; while (0<=23) { cout <<’*’; i++; }8.在下面的一维数组定义中,哪一个有语法错误。
cA.int a[ ]={1,2,3}B. int a[10]={0}C. int a[ ]D. int a[5]9.假定a为一个整型数组名,则元素a[4]的字节地址为 c 。
A. a+4B. a+8C.a+16 D. a+3210.要定义一个int型二维数组a,并使其各元素具有初值:2 3 0 04 05 00 0 0 0则正确的定义语句是 b。
A.int a[][]={2,3,0,0,4,0,5,0,0,0,0,0};B.int a[][4]={2,3,0,0,4,0,5,0,0,0,0,0};C.int a[3][4]= {{2,3},{4,,5}};D.inta[][]={{2,3,0,0},{4,0,5,0},{0,0,0,0}};11.在下面的函数声明中,存在着语法错误的是d。
A.void BC(int a ,int) B.void BD(int , int)C.void BE(int ,int=5) D.int BF(int x ;int y)12、下面的哪个保留字不能作为函数的返回类型?c。
A. voidB. intC.new D. long13.已知int f(int); 和int g(int); 分别是函数f和g\的原型。
下列语句中,将函数f作为语句调用的有。
A. f(3)+g(3);B. p/=f(3);C. g(f(3));D. f(g(3));14.已知一函数的形参说明为intarr[5][6],在下列说明中,与此等效的形参说明为 d 。
A. int arr[][]B. int [5][]C. int *a[6]D. int (* a)[6]15.已知函数f的原型是:int f(char a,char * b=NULL,double c=0.0);则下列调用中,不能正确地调用f函数的是。
A. f(99)B. f(‘A’,4.5)C. f(‘A’,”123”)D. f((char)65,”123”)16.已知一函数的原型是:int f(int ,int =0,double =0.0);则下列函数中可以加以重载的是。
A. int f(int);B. intf(int,int); C. f(int,int,double); D. f(int double);17.已知一函数中有下列变量定义,其中属于静态变量的是。
A.int a=5; B. static doubleb; C. register char c; D. auto short d;18.已知一个运行正常的的程序中有下面两个语句:int *p1, *p2=&a;p1=b;由此可知,变量a和b的类型分别是。
A. int 和intB. int * 和int C. int * 和int D. int * 和int *19.假设p是一指针变量,下列表达式中正确的是。
A. ++p++B. (++p)++C. ++(p++)D. p++-=320.设有程序段如下:int k;int A[10];则下列表达式中,与元素A[k]等效的是。
A. A+kB. *A+kC.*(A+k) D. A+ *k21.设有数组定义inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,1 2}};则表达式*(*(a+2)+1) 的值是。
A. 5B. 6C.9 D. 1022.要使语句: p=new int[10]; 能够正常执行,p应定义为:A. int p;B. int p[10];C. int *p;D. int (*p)[10];23.已知函数f的原型为:void f(int &a,char *b);变量s,t的定义是:int s; char t[]=”ABCD”;把s和t分别作为第一参数和第二参数来调用函数f,正确的调用语句是:。
A. f(&s,&t);B. f(&s,t);C. f(s,t);D. f(s,&t);24.设有如下定义struct Person {char * name;char * sex;int age;float pay;}p={“李小莉”,”女”,23,370};则下列语句中正确的是。
A. cout<<(*p).name<<endl B. cout <<p->name<<endl<<(*p).sex<<endl <<p->sex<<endl<<(*p).age<<endl <<p->age<<endl<<(*p).pay<<endl; <<p->pay<<endl;C. cout<<p[name]<<endl D. cout<<<<endl<<p[sex]<<endl <<p.sex<<endl<<p[age]<<endl <<p.age<<endl<<p[pay]<<endl; <<p.pay<<endl;25.设有定义如下:union ABC {char ch;int ia;int * ipa;double db;};则表达式sizeof(ABC) 的值是。
A. 17B. 8C. 4D. 126. 假定AB为一个类,则该类的拷贝构造函数的声明语句为。
A.AB&(AB x) B.AB(AB x) C.AB(AB &) D. AB(AB * x)27.对于结构中定义的成员,其隐含访问权限为。
A.public B.pr otectedC.private D.sta tic28.当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为。
A.ios::in B.ios:: outC.ios::int |ios::out D.没有29.假定AB为一个类,则执行“AB a(4) , b[3] , * p[2] ;”语句时,自动调用该类构造函数的次数为。
A. 3B. 4C.6 D. 930.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:。
A. AB operator+(AB & a , AB & b)B. AB operator+(AB & a)C. operator+(AB a)D. AB & operator+( )二、填空题1.执行“cout <<43<<’-‘<<18<<’=’<<43-18<<endl;”语句后得到的输出结果为43-18=25。
2.已知’A’~’Z’的ASCII码为65~90,当执行“char ch=14*5+2;cout <<ch<<endl;”语句序列后,得到的输出结果为H。
3.使用const 语句定义一个标识符常量时,则必须对它同时进行初始化。
4.表达式x=x+1表示成增量表达式为x++。
5.若x=5,y=10,则x>y和x<=y的逻辑值分别为0和1。
6.C++语言中的每条基本语句以 ; 作为结束符,每条复合语句以 }作为结束符。
7.执行“cout <<char(‘A’+2)<<endl;”语句后得到的输出结果为 C 。
8.float 和double 类型的大小分别为4和8。
10.关系表达式x+y>5的相反表达式为x+y<=5或者!(x+y>y) 。
11.表达式:x=625,i=(x>100?10:100) 的值是10。
12.执行int x=4,y; y=x--+3; 语句后,变量x的值是3,y的值是7。
13.执行程序段int x=5,y=10;x+=y; y=x-y; x-=y;后变量x的值是10,y的值是 5 。
14.与赋值语句:y=OK?(READY?-1:0):1;等效的嵌套的if语句为:if(y=OK){if(READY)-1;else0;}else 1; 。
15.执行语句i=10; do { cout <<’*’; i--; } while (i+3); 后,将显示出13个*号。
16.设有下面的定义int s[10]={1,2,3,4,5,6,7,8,9,10};int sum=0;请完善下面的语句实现求数组s的所有元素之和,并保存在变量sum中: for( int j=0 ; j<10 ;j++ ) sum+=s[j] ;17.执行语句序列char str1[10]=”ABCD”, str2[10]=”XYZxyz”;for (int i=0; str1[i]=str2[i]; i++) ;后,数组str1中的字符串是XYZxyz ,数组str2中的字符串是 XYZxyz 。