《C++模考1(含试题与答案).doc》由会员分享,可在线阅读,更多相关《C++模考1(含试题与答案).doc(7页珍藏版)》请在金锄头文库上搜索。
1、2017C+模考固定试题1解答一、单选题(总分:30.0,共30题)1. 设a和b为整型变量,执行语句 b=(a=2+3,a*4),a+5; 后a和b的值为( D )。A.5,10 B.20,25 C.5,25 D.5,20 2. x为int型,s为float型,x=3,s=2.5。表达式s+x/2的值为( B )。A.4 B.3.5 C.2.5 D.3 3. 在以下选项中,与k=n+完全等价的表达式是( A )。A.k=n,+n; B.n=n+1,k=n; C.k=+n; D.k+=n+1; 4. 有定义: int a; double b; 则表达式a+4/b结果的数据类型为( B )。A.
2、int B.double C.float D.unsigned5. 以下程序段的结果是( B )。int m=0, n=0; if (+m & +n ) cout m , n endl;A.0,0 B.1,1 C.1,0 D.0,1 6. 有循环结构程序段:for(i=1;i10;i+)coutiendl;couti;下列说法错误的是( C )。A.循环体语句被执行了9次; B.循环体只包含一个语句;C.第2个cout语句输出i值为9; D.1,2,3,4,5,6,7,8,9,10都被输出。7. 若已有 int e; 则while(e) ;中的循环控制条件等价于:( B )。A.e= =0 B
3、. e!=0 C. e= =1 D.e!=18. 下面( D )不是必须的c+源程序格式要求。A.语句以分号结束 B.编译命令不要以分号结束C.函数体放在 内 D. 内的语句向右缩几个字符9. 设x、y、z、t 均为 int 变量,则执行以下语句后,t的值为( C )。x=y=z=1; t=+x|+y&+z; A.不定值 B.2 C.1 D.0 10. t为int类型,进入下面的循环之前,t的值为0。对下面的语句:while ( t=1 ) . 。则以下叙述中,正确的是( B )。A.循环控制表达式的值为0 B.循环控制表达式的值为1C.循环控制表达式不合法 D.其他说法都不对11. 在函数调
4、用过程中,如果函数funA调用了函数 funB,函数funB又调用了函数funA,则( B )。A.称为函数的直接递归调用 B.称为函数的间接递归调用C.称为函数的循环调用 D.C+中不允许这样的递归调用12. 一个函数的返回值是通过函数中的( A )语句获得的。A.return B.exit C.break D.value13. 以下对C+语言函数的描述中,正确的是( A )A.C+程序由一个或一个以上的函数组成B.C+函数既可以嵌套定义又可以递归调用C.函数必须有返回值,否则不能使用函数D.C+程序中调用关系的所有函数必须放在同一个程序文件中14. 在什么情况下,可以不用对自定义函数进行声
5、明就可以调用( A )。A.被调用的自定义函数出现在同一文件的主调函数之前B.主调函数在前,被调函数在后C.该被调用函数出现在main函数之前D.不存在这种情况15. 设有一自定义函数的函数头形如:int f( int x, float y)。下列关于该函数的声明语句中,错误的是( A )。A.int f(int x, float y) B.int f(int, float); C.int f(int a, float b); D.int f(int x, float z);16. 下列程序段的输出结果是( A ):int add(int x=20,int y=10);void main( )
6、 int a(30),b(50);coutadd(a,10)endl;int add(int x,int y) return x+y; A.40 B.30 C.50 D.1017. 全局变量的定义不可能在( A ).A.函数内部 B.函数外面 C.文件外面 D.最后一行18. 在int a 3=1,3,2,4,5,6,0中,a22的值是( C )。 A.3 B.2 C.6 D.4 19. 如有定义:int a20; 则下面可以正确引用数组元素的表达式是( D )。A.a20 B.a3.5 C.a(5) D.a10-10 参考答案:D20. 在下列对字符数组进行初始化的语句中( A )是正确的。
7、A. char s1=”abcd”; B. char s23=”xyz”; C. char s3=a,x,y; D.char s423=“xyz”, ”mnp”;21. 有以下程序段:char a10=abcd; coutstrlen(a),sizeof(a)endl;则执行后的输出结果是( B )。A.7,4 B.4,10 C.8,8 D.10,1022. 设有 int a10, *p=a ; 则下面哪种表示与a3等价( D )。A.*a+3 B.&a3 C.p=p+2, *p+ D.*(p+3)23. 有如下程序段:int *p, a=10, b=1; p=&a; a=*p+b; 执行该程
8、序段后,a的值是( B )。A.12 B.11 C.10 D.编译出错24. 要使指针变量p指向一维数组a的第1个元素(下标为0的元素),正确的赋值表达式是( B )。A.p=a或p=a0 B.p=a或p=&a0 C.p=&a或p=a0 D.p=&a或p=&a025. 假定变量a和pa定义为 double a10, *pa=a; 要将60赋值给a中的下标为5的元素,不正确的语句是( D )。A.pa5=60; B.*(pa+5)=60; C.a5=60; D.*(a0+5)=60;26. 函数的返回值的类型由( C )决定。A.调用该函数的主调函数类型 B.return语句中的表达式类型C.定
9、义函数时所指定的返回值类型 D.调用函数时临时决定27. 下列说法不正确的是( C )。A.for,while 和do-while循环体中的语句可以是空语句。B.使用 while 和do-while循环时,循环变量初始化的操作应在循环语句之前完成。C.for和do-while循环都是先执行循环体语句,后判断循环条件表达式。D.while循环是先判断循环条件表达式,后执行循环体语句。28. 若i为整型变量,则以下循环的执行次数是( A )。for(i=2;i=0;) couti=x&(x=5) y*=x; 语句后,变量 x、y 的值分别为( C )。A.2、4 B.5、2 C.5、10 D.执行
10、时报错30. 若有:int a,*p=&a; 则下面哪个表达式为假( A )。A.*p= =&a B.p= =&*p C.p= =&a D.*p= =a二、填空题(总分:25.0,共23题)1. C+中的数据有常量和变量之分。用一个标识符代表一个常量,称为_符号_常量。2.只有一个分号的语句叫_空语句_。3.三种基本的程序控制结构是:顺序结构,选择结构和_循环结构_。4. break语句用于结束整个循环,_continue_语句用于结束本次循环。5. Dowhile语句的循环体至少无条件执行_一_次,而while循环体可能一次也不执行。(注:请用汉字答题)6. 在函数体内定义的局部变量,在函数
11、返回时不会被撤销,该变量是_静态_变量。7. 定义函数时,出现在函数名后面括号中的变量名称为_形参或形式参数_。8. 数组名就是数组的_起始_地址。9. 使用函数strcat(str1,str2)连接两个字符串时,连接的结果保存在字符数组_str1_中。10. 完成以下语句,使得当x10时,y值为5,否则y值为-5:int x,y;if (x10)y=5;else y=-5;11. 设有定义:char s=dta101bc; 则调用函数strlen(s)的值为:_6_。12. 完成以下语句,声明函数max为内置函数:_inline_ int max(int x,int y);13. 完成以下语
12、句,定义变量x为静态整型变量:_static_ int x;14. 有以下函数声明:int fun(int a);已定义函数指针变量p,为了使p指向函数fun,则使用的赋值语句为: p=_fun_;15. 有以下函数定义:int f1(int a,int b) return a+b; 则执行以下语句:int x=2,y=4,z=3;coutf1(x,y,x+y),z)endl;的输出值是:_9_。16. 有数组定义:int a5=1,2,3,4,5;int b5=3,6,9,12,15; 表达式ba3的值为:_15_。17. 设有定义:int a33=1,2,3,4,5,6,7,8,9; 则值
13、为6的元素是:_a12_。18. 假设有以下语句: int a, x=5, y=6,*p=&x; a = *p;p=&y;则此时a的值为_5_。19. 有下面的程序段:char *s=abcde,*p;p=s+2; coutpendl;则运行结果是_cde_。20. 设有以下定义的语句:int a32=10,20,30,40,50,60;int b32=10,20,30,40,50,60;则a11*b21=_2400_。21. 若有float型二维数组a34,则与数组元素的指针表示方式*(*(a+2)+3)等价的下标表示方式表示为_a23_。22. 完善下面的程序段,找出3行4列矩阵A中第一个最大元素以及它的行号和列号。#define M 3#define N 4int main( ) int i,j,row,colum,max;int aMN;for(i=0;iM;i+)for(j=0;jaij;max=_1_ ;row=0,colum=0;for(i=0;iM;i+)for(j=0;jN;j+)if (_2_ )max=a