《C++语言考试题试卷练习题模拟题选择题含答案考卷3.pdf》由会员分享,可在线阅读,更多相关《C++语言考试题试卷练习题模拟题选择题含答案考卷3.pdf(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1.下列字符列中,可作为C H 语言程序自定义标识符是()0A.s w it c h B.f il e C.br e ak D.d o2.运算符+、0、=、中,优先级最低的运算符是()。A.+B.=C.=D.%3.设变量 m,n,a,b,c,d 均为 0,执行(m =a=b)|(n=c=d)后,m,n 的值是()。A.0,0 B.0,1 C.1,0 D.1,14.字符串 v m x 43而102q u”的长度是(A.8 B.9 C.16 D.175.设有代码“in t a=6;,则执行了语句a+=a-=后,变量a 的值是()。Commented|w11:短路Commented|w2|:A.0
2、B.-24C.-40D.-606.v o id m ain ()in t x=-l;d o x=x*x;而 il e(!x);下列说法正确的是()oA,是死循环B.循环执行两次C.循环执行一次D.有语法错误7.下面有关f o r 循环的正确描述是()oA.f o r 循环只能用于循环次数已经确定的情况B.f o r 循环是先执行循环体语句,后判断表达式C.在 f o r 循环中,不能用br e ak 语句跳出循环体D.f o r 循环的循环体语句中,可以包含多条语句,但必须用大括号括起来8.下面程序段()ox=3;(Commented|w3|:从右到左 x=2 为真 I 时d o y=x-;i
3、f (!y)c o u t w x”;c o n t in u e;c o u t w#;w h il e(l=x=2);(K=x)=1,0 bo o l 型A.将输出#B.将输出C.是死循环 D.含有不合法的控制表达式9.以下正确的说法是()oA.用户若需要调用标准函数,调用前必须重新定义B.用户可以直接调用所有标准库函数C.用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数D.用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数10.在参数传递过程中,对形参和实参的要求是O。Commented|w4:A.函数定义时,形参一直占用存储空间B.实参可以是常
4、量、变量或表达式C.形参可以是常量、变量或表达式D.形参和实参类型和个数都可以不同1 1.对数组名作函数的参数,下面描述正确的是()。Commented|丫5幺A.数组名作函数的参数,调用时将实参数组复制给形参数组B.数组名作函数的参数,主调函数和被调函数共用一段存储单元C,数组名作参数时,形参定义的数组长度不能省略D.数组名作参数,不能改变主调函数中的数据12.若有语句 in t a10=0,l,2,3,4,5,6,7,8,9,*p=a;贝!|()不是对 a 数组元素的正确引用(其中0W i10)。A.p i B.*(a+i)C.ap-a D.*(&ai)1 3.以下程序的输出结果是()。f
5、 t in c l u d e v o id m ain ()c h ar s=*12134211*,*p;in t v l=0,v 2=0,v 3=0,v 4=0;v l v 2 v 3 v 4f o r (p=s;*p;p+)s w it c h(*p)(c as e I*:v l+;c as e 3:v 3+;c as e 2*:v 2+;d e f au l t:v 4+;2 4 3 4)c o u t v l*,*v 2*,*v 3*,*v 4e n d l;14.A.4,2,1,1 B.4,7,5,8下列声明结构体变量错误的是(A.s t r u c t s t u d e n t
6、 in t n o;c h ar n am e 16;s t l,s t 2;C.s t r u c t s t u d e n t D.in t n o;c h ar n am e 16;);C.7,3,2,1 D.8,8,8,8)。B.s t r u c t s t u d e n t in t n o;c h ar n am e 16;;s t r u c t s t u d e n t s t l,s t 2s t r u c t s t u d e n t in t n o;c h ar n am e 16;;15.s t r u c t s t l,s t 2;s t u d e
7、n t s t l,s t 2;对类的构造函数和析构函数描述正确的是().A.构造函数可以重载,析构函数不能重载B.构造函数不能重载,析构函数可以重载C.构造函数可以重载,析构函数也可以重载D.构造函数不能重载,析构函数也不能重载16.下面对于友元函数描述正确的是()oA.友元函数的实现必须在类的内部定义 B.友元函数是类的成员C.友元函数破坏了类的封装性和隐藏性 D.友元函数不能访问类的私有成员17.派生类的对象对它的基类成员中()是可以访问的。A.公有继承的公有成员 B.公有继承的私有成员C.公有继承的保护成员 D.私有继承的公有成员18.C+类体系中,不能被派生类继承的有()A.构造函数
8、 B.虚函数 C.静态成员函数 D.赋值操作函数1 9.以 下()成员函数表示虚函数。A.v ir t u al in t v f(in t);B.v o id v f(in t)=0;C.v ir t u al v o id v f()=0;D.v ir t u al v o id v f(in t);2 0.下面对静态数据成员的描述中,正确的是(),A.静态数据成员可以在类体内进行初始化B.静态数据成员不可以在类体内进行初始化C.静态数据成员不能受p r iv at e控制符的作用D.静态数据成员可以直接用类名调用?(commented|L6:纯虚函数,不用定义21.继承具有(),即当基类
9、本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。A.规律性 B.传递性 C.重复性 D.多样性22.若有以下定义,则释放指针所指内存空间的操作是(),f l o at r=n e w s f l o at 10;A.d e l e t e r ;B.d e l e t e *r;C.d e l e t e r;D.d e l e t e r;23.若有以下定义,则对字符串的操作错误的是()。c h ar s 10=P r o g r am,A.s t r c p y (s,t);B.c o u t s t r l e n(s);C.s t r c at (t h is”,t)
10、;D.c in t;Commented|w7|:strcat(s1,s2):add s2 to sis tail.Commented|L8|:Copylo s24.在if 语句中的表达式是(A.只能是表达式C.只能是逻辑表达式)。B.只能是关系表达式和逻辑表达式D.可以是任意表达式25.在用关键字c l as s 定义的类中,以下叙述正确的是(),A.在类中,不作特别说明的数据成员均为私有类型B.在类中,不作特别说明的数据成员均为公有类型C.类成员的定义必须是成员变量定义在前,成员函数定义在后D.类的成员定义必须放在类定义体内部一、选择题(1)下列关于栈的叙述正确的是A)栈是非线性结构 B)栈
11、是一种树状结构C)栈具有先进先出的特征 D)栈具有后进先出的特征(2)结构化程序设计所规定的三种基本控制结构是A)输入、处理、输出 B)树形、网形、环形C)顺序、选择、循环 D)主程序、子程序、函数(3)结构化程序设计的一种基本方法是A)筛选法 B)递归法 C)归纳法 D)逐步求精法(4)如果对一个关系实施了一种关系运算后得到了一个新的关系,而且新的关系中属性个数少于原来关系中属性个数,这说明所实施的运算关系是:A)选择 B)投影C)连接 D)并(Commented|w9|;一:选择题:(1)D(2)C(3)D(4)BC+语言程序设计口 一、选择题(1)C+语言是从早期的C 语言逐渐发展演变而
12、来的.与C 语言相比,它在求解问题方法上进行的最大改进是()A)面向过程 B)面向对象 C)安全性 D)复用性(2 )C+语言的跳转语句中,对于break和 continue说法正确的是OA)break语句只应用与循环体中B)continue语句只应用与循环体中Qbreak是无条件跳转语句,continue不是D)break和 continue的跳转范围不够明确,容易产生问题(3 )for(int x=0,y=o;!x&yv=5;y+)语句执行循环的次数是()A)0 B)5 C)6 D)无次数 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
13、_(4 )考虑函数原型void test(int ajnt b=7,char=*),下面的函数调用中,属于不合法调(commented|L10:默认参数格会用的是。A)test(5);B)test(5,8);C)test(6,H#n)D)test(O,O.*);(5)下面有关重载函数的说法中正确的是()A)重教函数必须具有不同的返回值类型;B)重教函数形参个数必须不同;C)重载函数必须有不同的形参列表 D)重载函数名可以不同;(6)下列关于构造函数的描述中,错误的是()A)构造函数可以设置默认参数;B)构造函数在定义类对象时自动执行C)构造函数可以是内联函数;D)构造函数不可以重载:(7)下面
14、描述中,表达错误的是()A)公有继承时基类中的public成员在派生类中仍是public的B)公有继承是基类中的private成员在派生类中仍是private的C)公有继承时基类中的protected成员在派生类中仍是protected的D)私有继承时基类中的public成员在派生类中是private的(8)应在下列程序划线处填入的正确语句是。include class Base D public:void fun()coutnBase:funH;class Derived:public Base void fun()file:/显示调用基类的函数fun()cout*Derived:fun*f
15、un();(9)有如下程序:C#include class BASEchar c;public:BASE(char n):c(n)virtual-BASE()cout!Jc);class DERIVED:public BASE c h ar c;p u bl ic:DER I VED(c h ar n):BASE(n+l),c(n)-DER I VED()c o u t 0的值I 。A)为 true B)为 false C)与 x 的值相同 D)与 x 的值相反(3)执行语句序列int n;cinn;switch(n)case 1:case 2:cout*X*;case 3:case 4:co
16、utwY;break;defaultzcoutZ,;时,不可能出现的情况是|。A)显示:X B)显示:Y C)显示:Z D)显示:XY(4)执行语句序列int x;cinx;if(x250)coutwX;if(xival=rc.ival+l;rc.ra-cval=rc.ra-ival+1;coutrc.ival,rc.ra-ival,/rc.rb.ra.ival;后,显示在屏幕上的是oA)67,69,70 B)66,67,70 C)67,68,69 D)66,67,68AB)CD(1 9)类的默认的拷贝构造函数|JoA)在任何情况下都存在B)仅当未定义拷贝构造函数时存在C)仅当未定义有参构造函
17、数时存在D)仅当未定义任何构造函数时存在(20)语句 ofstream f(*SALARY.DAT*ios:nocreate|ios:trunc);的功能是建立流对象 f,并试图打开文件SALARY.DAT并与之连接,而且|A)若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件。B)若文件存在,将其截为空文件;若文件不存在,打开失败。C)若文件存在,将文件指针定位于文件首;若文件不存在,建立一个新文件。D)若文件存在,打开失败;若文件不存在,建立一个新文件。答案:5:DDACA 6CADBC11IS:ADADC 1620:DDBBBC+试题21.下列变量名中,()是合法的。A.5
18、6A B._abc C.d-PtrD.while2.下列各种运算符中,()优先级最高。A.+B.&C.=D.*=j Commented|wl5|:)3.设变量 m,n,a,b,c,d 均为 0,执行(m=a=b)&(n;c=d)后,m,n 的值是()A.0,0 B.0,1 C,1,0 D.1,14.字符串”tv0w hichn”的长度是(A.4 B.10 C.9 D.字符串有非法字符,输出值不确定5.设 a=2,b=3,c=2;计算 a+=b*=(+b-c+)中 a、b c 的 值()。A.8、6、2 B.2、4、2 C.10、8、3 D,5、3、36.已知:int i=5,下列do-whil
19、e循环语句的循环次数为()。do couti一 en d l;i一;while(i!=0);A.0 B.1 C.5 D.无限7.下面关于循环语句的描述中,()是错误的。A.循环体内可以包含有循环语句B.循环体内必须同时出现break语句和continue语句C.循环体内可以出现选择语句D.循环体内可以是空语句8.下面程序段()。x=3;doCommented|w16):if(!y)c o u t w x ;c o n t in u e;c o u t w#;w h il e(x=l&x=2);A.将输出#B.将输出鞘#C.是死循环 D.含有不合法的控制表达式9.在函数的定义格式中,下面各组成部
20、分中,()是可以省略的。(Co m m e n t e d l w l A.函数名 B.函数体 C.函数数据类型说明 D.函数参数10.在函数的引用调用时,实参和形参应该是使用()。A.变量值和变量 B.地址值和指针C.变量值和引用D.地址值和引用11.以下关于文件操作的叙述中,不正确的是()oA.打开文件的目的是使文件对象与磁盘文件建立联系B.文件读写过程中,程序将直接与磁盘文件进行数据交换C.关闭文件的目的之一是保证将输出的数据写入硬盘文件D.关闭文件的目的之一是释放内存中的文件对象12.若有语句 in t a10=0,1,2,3,4,5,6,7,8,9,*p=a;则()不是对 a 数组元
21、素的正 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _确引用(其中 0W i l O)。Co m m e n t e d|w 18:一 二A.p i B.*(*(a+i)C.ap-a D.*(&ai)13.以下程序的输出结果是()。#in c l u d e v o id m ain O c h ar s=*abc d e f bc d e*,*p=s;in t v l=0,v 2=0,v 3=0,v 4=0;f o r (p;*p;p+)s w it c h(*p)
22、(c as e a:v l+;br e ak;c as e b:v 3+;br e ak;c as e e:v 2+;br e ak;d e f au l t:v 4+;)c o u t v l*,*v 2*,*v 3*,*v 4e n d l;A.1,2,2,5 B.4,7,5,8C.1,5,3,10 D.8,8,8,814.下列结构体定义,正确的是|oCo m m e n t e d|w!9|:A.r e c o r d B.s t r u c t r e c o r d in t n o;in t n o;c h ar n u m 16;c h ar n u m 16;f l o at
23、s c o r e ;;f l o at s c o r e ;)C.s t r u c t r e c o r d D.s t r u c t r e c o r d in t n o;in t n oc h ar n u m 16;c h ar n u m 16f l o at s c o r e ;f l o at s c o r e)15.下列是构造函数的特点,()是错误的。A.构造函数是一种成员函数,它具有一般成员函数的特点B.构造函数的名称与其类名相同C.构造函数必须指明其类型D.一个类中可定义一个或多个构造函数Commented|w20:16.关于友元函数的描述中,()是错的。A
24、.友元函数是成员函数,它被说明在类体内B.友元函数可直接访问类中的私有成员C.友元函数破坏封装性,使用时尽量少用D.友元类中的所有成员函数都是友元函数Commented|w21|:17.下列对派生类的描述中,()是错误的。A.一个派生类可以作为另一个派生类的基类B.派生类至少应有一个基类C.基类中成员访问权限继承到派生类中都保持不变D.派生类的成员除了自己定义的成员外,还包含了它的基类成员18.C+类体系中,能被派生类继承的有()。A.构造函数 B.虚函数 C.友元函数 D.析构函数19.关于下列虚函数的描述中,()是正确的。A.虚函数是一个s t at ic 存储类的成员函数B.虚函数是一个
25、非成员函数C.基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数D.派生类的虚函数与基类的虚函数应具有不同的类型或个数2 0.以下有关静态数据成员函数的叙述不正确的是(A.静态成员函数属于整个类B.对静态成员函数的引用不允许使用对象名C.在静态成员函数中不能直接引用类的非静态成员D.使用类名可以直接调用其静态成员函数(Commented21.下列有关运算符重载的描述中,(A.运算符重载可改变其优先级C.运算符重载可改变其结合性)是正确的。B.运算符重载不改变其语法结构D.运算符重载可改变其操作数的个数Commented|w23|:)22.对 n e w 运算符的下列描述中,()是错
26、误的。A.它可以动态创建对象和对象数组B.用它创建对象数组时必须指定初始值C.用它创建对象时要调用构造函数D.用它创建的对象可以使用运算符d e l e t e 来释放23.下列是为字符数组赋字符串的语句组,其中错误是().A.c h ar s 10;s=p r o g r amw;B.c h ar s:“p r o g r amw;C.c h ar s 10=w H e l l o!;D.c h ar s 10;s t r c p y(s,n h e l l o!);Commented|L 24:数组名字是指针常量,不可改变)24.当调用函数时,实参是一个一维数组名a,则向函数传送的是()o
27、A.数组的长度 B.数组所有元素的值C.数组元素a0的值 D.数组元素a0的地址25.下列有关类的说法不正确的是()。A.对象是类的一个实例B.任何一个对象只能属于一个具体的类C.一个类只能有一个对象D.类与对象的关系和数据类型与变量的关系相似答案:1 5:BADBC 6M0:DBBDC11 15:BBACC 1620:ACBCB_21 25:BBADC1:指出下列对定义重载函数的要求中,哪些是错误的提法。A.要求参数的个数相同。B.要求参数中至少有一个类型不同。C.求函数的返回值不同。D.要求参数的个数相同时,参数类型不同。答案:C2:下列运算符中,()运算符在C+中不能重载。A.?:B.|
28、C.new D.&答案:A3:下面关于友元的描述中,错误的是()oA.友元函数可以访问该类的私有数据成员B.一个类的友元类中的成员函数都是这个类的友元函数C.友元可以提高程序的运行效率D.类与类之间的友元关系可以继承答案:D4:下述静态成员的特性中,()是错误的。A.铮态成员函数不能利用this指针B.静态数据成员要在类体外进行初始化C.引用静态数据成员时,要在静态数据成员名前加 类名 和作用域运算符D.静态数据成员不是所有对象所共有的答案:D5:关于虚函数的描述中,()是正确的。A.虚函数是一个静态成员函数B.虚函数是一个非成员函数C.虚函数既可以在函数说明时定义,也可以在函数实现时定义D.
29、派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型答案:D6:下列关于动态联编的描述中,错误的是()。A.动态联编是以虚函数为基础B.动态联编是运行时确定所调用的函数代码的C.动态联编调用函数操作是指向对象的指针或对象引用D.动态联编是在编译时确定操作函数的答案:D8:下面4 个选项中,()是用来声明虚函数的。A.v ir t u al B.p u bl ic C.u s in g D.f al s e答案:A9:编译时的多态性可以通过使用()获得。A.虚函数和指针 B.重载函数和析构函数C.虚函数和对象 D.虚函数和引用答案:A10:美于纯虚函数和抽象类的描述中,错误的是()。A.纯
30、虚函数是一种特殊的虚函数,它没有具体的实现B.抽象类是指具体纯虚函数的类C.一个基类中说明有纯虚函数,该基类派生类一定不再是抽象类D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出答案:B11:下列描述中,()是抽象类的特征。A.可以说明虚函数 B.可以进行构造函数重载C.可以定义友元函数 D.不能说明其对象答案:D12:以 下()成员函数表示虚函数。A.v ir t u al in t v f(in t);B.v o id v f(in t)=0;C.v ir t u al v o id v f()=0;D.v ir t u al v o id v f(in t);答案:D13:如果
31、一个类至少有一个纯虚函数,那么就称该类为(AA.抽象类 B.虚函数 C.派生类 D.以上都不对答案:A14:要实现动态联编,必须通过()调用虚函数。A.对象指针 B.成员名限定 C.对象名 D.派生类名答案:A15:下面描述中,正确的是()A.v ir t u al 可以用来声明虚函数B.含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类C.即使基类的构造函数没有参数,派生类也必须建立构造函数D.静态数据成员可以通过成员初始化列表来初始化答案:A16:已知in t a,*p a=&a;输出指针p a十进制的地址值的方法是()。A.c o u t p a;B.c o u t*p a;C.c
32、o u t&p a;D.c o u t l o n g(&p a);答案:D17:关于r e ad。函数的下列描述中,()是对的。A.函数只能从键盘输入中获取字符串B.函数所获取的字符多少是不受限制的C.该函数只能用于文本文件的操作中D.该函数只能按规定读取所指定的字符数Commented|L25):抽象类不能创建对象,只能使用该类作为其他类的基类(Commented|w26|:答案:D18:下列一维数组定义正确的是(A.x=6;in t n u m x;B.c o n s t f l o at x=6;in t bx;答案:B,B.c o n s t in t x=6;f l o at ax
33、;D.c o n s t in t x=6;in t c x;Commented|w27|:数组维数只能包含整形字面值常量、枚举常量或者常量表达式19:下面选项中等价的是()oA.in t a 2 3=1,0,2,2,4,5与 in t a 2=1,0,2,2,4,5;B.in t a 3=1,0,2,2,4,5与 in t a 2 3=1,0,2,2,4,5);C.in t a2 3=3,4,5与 in t a 3=3,4,5;D.in t a23=0,1与 in t a2 3=0,1);答案:B,20:下面程序的输出结果是()o#in c l u d e v o id m a i n()i
34、n t a3 3=1,2,3,4,5 ;in t s u m=0;f o r (in t I=1;I 3;I+)f o r(in t j=O;j=I;j+)s u m+=aI j;c o u t s u m e n d l;A.12 B.14 C.15 D.13答案:A21:下列数组的定义中,(A.c h ar c al口=c,m,C.c h ar c a3 4=z,y o u rz z;答案:C22:下面程序的输出结果是(),#in c l u d e#in c l u d e s t r in g.h v o id m a i n()c h ar a=,w e l c o m e/b=,w
35、 e l lz,;s t r c p y(a,b);c o u t a e n d l;)A.w e l l o m e B.w e l l o m答案:C)是错误的。n ;B.c h ar c a2=,n am e,z;D.in t ar r ay =1,2,3,4;C.w e l l D.w e l l w e2 3:下面关于数组的说法正确的是(A.它与普通变量没什么区别 B.C.它用数组名标识其元素 D.D)o它的元素的数据类型可以相同,也可以不同数组的元素的数据类型是相同的2 4:下列说法正确的是(),A.字符型数组与整型数组可通用B.字符型数组与字符串其实没什么区别C.当字符串放在字
36、符数组中,这时要求字符数组长度比字符串长1个单元,因为要放字符串终结符,0,D.字符串的输出可以用它所存储的数组来输出,也可以字符串的形式整体输出,结果没区别C25:给出下面定义:c h ar a=,/abc dz,;c h ar b=a,J b,c,d,;则下列说法正确的是()oA.数组a 与数组b 等价 B.数组a 和数组b 的长度相同C.数组a 的长度大于数组b 的长度 D.数组a 的长度小于数组b 的长度A26:下面程序的输出结果为().#in c l u d e#in c l u d e v o id m ain()c h ar s t 20=/h e l l o 0t,/;c o
37、u t s t r l e n(s t);c o u t s iz e o f (s t)e n d l;c o u t s t;A.520 B.1220H e l l o h e l l o 0t Commented|w28:C.520h e l l o tD.1120h e l l o 27:下面程序的输出结果是(#in c l u d e io s t r e am.h,fv o id m ain()in t n 2,I,j,k=2;f o r(I=0;I k;I+)f o r(j=0;j k;j+)n j=n I+l;c o u t n j-2;)A.不确定的值 B.3A)oC.2 D
38、.1(1)下面概念中,不 属 于 面 向 对 象 方 法 的 是。A)对象、消 息 B)继承、多 态 C)类、封 装 D)过程调用答案:D知识点:面向对象的程序设计方法、对象、方法、属性及继承与多态性评析:面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。面向对象方法从对象出发,发展出对象、类、消息、继承等概念。(2)下 列 描 述 中 不 正 确 的 是.Commented|w29:A)字符型数组中可以存放字符串B)可以对字符型数组进行整体输入、输出C)可以对整型数组进行整体输入、输出D)不能在赋值语句中通过赋值运算符对字符型数组进行整体赋值答案:C知
39、识点:对数组的理解评析:C 语言规定只能逐个引用数组元素而不能一次引用整个数组。字符数组的输入、输出可以将整个字符串一次输入或输出。所以,选 项 c的说法是不正确的。(3)以 下 程 序 的 输 出 结 果 是。main()int i,x33=9,8,7,6,5,434,l,*P=&x|11111;for(i=0;i4;i+=2)printf(n%d,p|ij);)A)5 2 B)5 1 C)53D)97答案C知识点:通过指针引用数组元素评析:题 中*是 指 将 数 组 X 的 数 组 元 素 的 地 址 赋 值 给 指 针 变 量 P,使 p指 向 这 个 数 组 元 素,那 么 p|0即为
40、指针变量p 当 前 所 指 向 的 数 组 元 素 的 值。具体执行时如下所示:i=0时,输 出 p|O b也就是x|l|l b 输出是5;i=2时,输 出 p 2,即 p|2+0,也就是x20,输出是3。也就是运行后报错。(5)若已定义:inta|9|,*p=a;并在以后的语句中未改变p 的值,不能表示al地址的表达式是 0:Commented|w31:A)p+1 B)a+1 C)a+D)+p答案C知识点:数组地址的表示评析:数组名是指针常量,是个固定的指针,不能对数组名赋予一个新的地址值,也不能使这个指针常量“移动”,指向数组的其他元素。(6)以 下 程 序 的 输 出 结 果 是。mai
41、n()int al,b=l,k;if(-H-aO)&!(b-=0)printf(H%d%dnH,a,b);elseprintf(n%d%dnM,b,a);A)-1 1 B)0 1C)1 OD)00答 案C知识点:i f条件的判断评析:逻辑运算符的优先次序如下:!(非)-&(与)-1|(或),但本题需特别注意的是短路的概念:对于&运算符,其两边表达式的值只要有一边为假,则整个与运算表达式的值即为假,系统在执行时,先运算&左边的表达式,若为假,则系统不会再判断&运算符右边的表达式了,直接运用短路原理得整个与运算表达式的值为0 o由于+a是先运算后使用,b-是先使用后运算。所以本题在执行H a后,a
42、值 为0,不满足条件,所 以a为0,根据短路原理,b仍 为1,接下去 执 行else语句,输 出10。(7)以下选项中,能 定 义$为 合 法 的 结 构 体 变 量 的 是。Commented|w32|:A)typedef struct abc double a;char b|10;)s;B)struct double a;char b10|;;C)struct ABC double a;char b10|;(ABC s;D)typedef ABC d ouble a;char bI0|;ABC s;答 案B知识点:结构体变量的定义评析:定义一个结构体类型的变量,可采用三种方法:先定义结构体
43、类型,再定义变量名;在定义类型的同时定义变量;直接定义结构类型变量,即不出现结构体名。选 项 B 符合第三种定义方法。(8)请读程序:#include#include n)ain()(char*sl=AbCdEr,*s2=HaB;S1-H-;S2+;printf(n%dnn,strcmp(s 1,s2);)上 面 程 序 的 输 出 结 果 是。A)正 数 B)负 数 C)零 D)不确定的值答案A知识点:字符串比较函数strcmp()的应用评析:strcmp(Xl,X2)是串比较函数,当 X1X2时返回值为正数,当 X K X 2时返回值为负数,当 X1=X2时返回值为零。本题中“si”、“s
44、2”分别表示这两个串中第一个字符的地址,和 2 是将指针指向申的第二个字符,贝为“bCdEf,*s2为“B”。而在字符串比较中,大小的确定是由各个字符串相应位置字符的ASCII码值的大小决定的,“B”的 ASCII码 值 为 66,“b”的ASCII码值为9 8,所 以 sl s2,返回值为正数。(9)请读程序:#include func(int a,int b)int c;c=a+b;return c;)main()int x=6,y=7,z=8,r;r=func(x-,y+,x+y”-);printf(%dn,r);)上面程序的输出结果是 OA)11 B)20 0 21 D)31答案C知识
45、点:自增、自减运算评析:函 数 func()的作用是返回两个形参的和,第一个形参是x、y 分别自减和自增后的和,其中(M,y+,x+y)是一个逗号表达式,它的值应该等于x+y,所以整个表达式(x-,y+,x+y)的 值 为 1 3,而第二个形参的值为8(根据语法规则,应当先使用,后自增),所 以 func()的返回值为13+8=21。Commented|w33J:strcmp(s 1,s2):si=$2,return 0;sls2,return positive;sls2,return negative.(1 0)请读程序:#include main()int a,b;for(a=1 ,b=1
46、;a=20)break;if(b%3=1)b+=3;continue;b-=5;)pnntf(H%dnn,a);)上 面 程 序 的 输 出 结 果 是。A)7B)8 0 9D)10答案B知识点:break语句和continue语句评析:break语句的作用是用于跳出循环体,继续执行循环体下面的语句;而 continue语句的作用是用于跳出本次循环,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定 “”是求余运算符,执行第一次循环时,条件(b%3=l)为真,b=4,继续下一次循环,如此反复,当 b=22时,条件(b=20)为假,跳出循环,此时共循环8 次,即 a=80(11)请读
47、程序片段(字符串内没有空格字符):printf(,%dn,strlen(,ATSnO12lV,);上面程序片段的输出结果是 OA)11 B)10 C)9D)8答案C知识点:字符串的长度评析:这个语句的目的是输出“ATSn0121”这个串的长度,在 串 中 代 表 一 个为 了 和 printf()函数中的转义字符区分开来,在语法上使用了两个反斜杠代替了一个反斜杠,所以它仅仅为一个字符,而“1”代表数字1,也占一个字符,“n”是回车换行符,也占一个字符,加 上 A、T、S、0、1、2,一共是9 个字符。(1 2)请选出可用作C 语 言 用 户 标 识 符 的 一 组 标 识 符。A)void B
48、)a3_b3 C)For D)2adefine 123 _abc DOWORD IF case sizeof答案B知识点:C 语言的标识符评析:C 语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。选 项 A 中 的 void和 define都 和 C 语言的关键字重名,不合法;选 项 C 中 的 case和 C 语言的关键字重名,不合法;选 项D中 的2 a是数字打头而且sizeof和C语言的关键字重名,不合法。(1 3)请选出以下程序的输出结果 o Commented|w34J:#include sub(int*s,int y)static int t=
49、3;y=s(tl;t-;)main()int a l=l,2,3,4,i,x=0;for(i=0;i4;i+)sub(a,x);printf(v%d,x);printf(iT);)A)1234 B)4321 C)0000 D)4444答案C知识点:函数的形参和实参的关系评析:、作为函数Sllb()的实参时,函数对X值的改变没有返回主函数,并不能使得X的值变化,所以在打印时,、的值是始终不变的,即 为0o(1 4)若有以下说明和语句,请选出哪个是对c数组元素的正确引用。:Commented|w35|:intc(41|5h(*cp)|5|;cp=c;A)cp+1 B)*(cp+3)C)*(cp+l
50、)+3 D)*(*cp+2)答案D知识点:数组元素的引用评析:cp=c这个语句是将数组第0行的地址赋给了 cp。cp+1使指针指向二维数组c的第一行;*(cp+3)是数组c的第三行的第0列的地址值;*(cp+l)+3是数组c的第一行第三列的地址值。(1 5)设有以下语句(Commented w网:char a=3,b=6,c;c=aAb2;则C的二进制值是 oA)00011011 B)00010100 C)0001 HOOD)0001100()答案A知识点:位运算评析:“v v”是C语言中规定的左移运算符,例如,a=av2,这个语句即是将a的二进制数左移两位,左移一位相当于该数乘以2,左移两位