天天看点

c语言选择题题及答案,C语言选择题及答案

C语言选择题及答案

选择题答案与解析:

1.C。【解析】根据二叉树的性质及定义,一棵深度为k 且有2k-1个结点的二叉树为满二叉树。满二叉树的叶子结点为最后一层的结点数,又根据满二叉树的性质,在满二叉树的第i层上至多有2i-1个结点。因此深度为5的满二叉树的叶子结点数为25-1=16个。

2.D。【解析】本题考查对软件生命周期的理解,软件生命周期整体上可分为定义阶段、开发阶段和维护阶段。其中定义阶段包括可行性研究与计划制订和需求分析;开发阶段包括概要设计、详细设计、开发和测试;维护阶段是一个单独阶段,不包含在开发阶段内,它是所花费用最多的一个阶段。

3.C。【解析】视图设计的设计次序分3种:自顶向下、自底向上和由内向外。它们为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握。

4.A。【解析】二分法查找只用于顺序存储的有序线性表,而顺序查找用在顺序存储的非有序线性表和线性链表。

5.C。【解析】数组下标从0开始,当数组元素的下标超出了定义的范围时,系统不会出“下标越界”的信息,运行会出错,因此在编程时务必检查下标是否越界。

6.B。【解析】在用静态static与外部extern定义变量时,系统立刻给其分配内存,而定义自动类auto与强制放入寄存器register类型变量时,只有当使用时才分配内存。

7.C。【解析】本题考查赋值语句,而选项A、B是表达式,不合题意,选项D中强制类型转换,应把类型名用括号括起来,选项C中i--也可写成i=i-1,故选择c选项。

8.C。【解析】本题考查三目运算符a  9.C。【解析】线性表可以是空表,在线性表中,第一个结点没有前驱结点(前件),最后一个结点没有后继结点,其他结点有且只有一个前驱点(后继点)。

10.C。【解析】sum+=i等价于sun+i,在本题中sum 没有赋初值,而题中只输出sum的值,因此整个结果为不确定值。

11.B。【解析】当j=10时,for循环成立,j%3为1,if条件也为真,当执行完j--后,j为9,再执行“--j;--J;”后,j的值为7,因此输出7,继续循环执行j--后j为6,当j

=6时for循环成立,j%3为0,if条件为假,此时执行“-- j;--j;”后,j为4,输出4,再继续循环执行j--后j为3,当j=3时,for循环不成立,退出循环,故选择8选项。

12.A。【解析】题中X<=Y<=Z的意思为X<=Y 并且Y<=Z,在c语言中,要表示“且”的关系,应用“与”逻辑运算符,即“&&”,故选择A选项。

13.D。【解析】程序中ptr指针指向数组art的首地址,*ptr=arr[0]=6,*(ptr2)=2,故选D。

14.D。【解析】本题要求输出每个元素的值,D选项中(*p)++等价于*p=*p+1,其仅仅是对*p加1,并没有达到输出其每个值的作用。

15.C。【解析】b++是先用表达式的值然后自增l,因此表达式值为’2 ’,b为’3 ’;b-a=’3 ’-’1’=2,因此最后输出的结果为2,2,前一个为字符2,后一个为数字2。

16.C。【解析】本题中int(*ptr)()的含义是指向函数

的指针变量,其为指向函数的指针变量,该函数返回一个int 型数据,故选择C选项。

17.A。【解析】当值相同时按位异或,则为0,按位或与按位与时仍不变,负数也为非0。

18.C。【解析】本题用了函数调用,fun中if语句成立则进行i,j的交换,用到主函势中则为把下标为0、3,1、2互换,因此,当执行完后X的数组为8,1,6,2,故选择C选项。

19.B。【解析】本题考多循环的使用,当j=10,i=9时, 循环成立,第一个if条件为假,第二个if条件i==j-1成立,则输出j的值为10,接者执行i++后,i为10;当i为10,for循环不成立,退出内层循环,此时执行j++后,j为11,循环不成立,退出循环。

20.D。【解析】scanf函数读取的是char型数据,所以回车时输入的换行符也是有效字符。于是cl,c2,c3,c4的内容分别是1,2,3,’\n’。

21.D。【解析】本题考查continue的用法,continue语句的作用是结束本次循环,直接进行下次循环。所以在程序中,只有当a=10时,才退出循环,故选择D选项。

22.A。【解析】用E—R图可以描述实体及其相互之间的联系,还可以描述多个实体集之间的联系和一个实体集内部实体之间的联系。用E—R图表示的概念数据模型不仅能转换为关系数据模型,还可以转换为其他数据模型,如网状模型和层次模型等。所以A的说法正确。

23.D。【解析】主要考查运算符的优先级。sizeof的优先级最高,其次是%<<>.优先级最低的是“=”。

24.B。【解析】在C语名中规定进行强制类型转换的格式是:(类型名)变量名;并且给表达式赋值。

25.C。【解析】本题考查逗号表达式。程序输出时输出一个%d,所以输出第一个a的值与后续无关。

26.D。【解析】本题考查if语句。第1个if语句,如果

a  27.C。【解析】本题考查while,while循环表达式k=1是个赋值表达式而不是逻辑表达式,k的初值为12不符合循环条件,所以循环体一次也不执行。

28.B。【解析】本题考查3个知识点:将一个字符赋给一个字符变量时,是将该字符对应的ASCIl码存储到内存单元中;常见ASCII码的值如A和a;只要逻辑与运算符&&的两个运算对象都为真时,返回值就是1。

29.A。【解析】本题考查函数值的类型,在函数定义时, 由于函数没有说明其类型,系统默认一律自动按整型(int)

处理。

30.D。【解析】本题主要考查do—while循环,因为变量t的初始值等于1,经过第一次do-while循环后,执行t= t-1这条语句一次,所以变量t的值为-1,判断关系表达式t!=n是否成立,如果关系表达式成立,则执行第二次循环,如果关系表达式不成立,退出循环。由此可见,只要输入变量n的值为负奇数,则一定会使t==n成立,故退出do-while循环。

31.D。【解析】double*p,a定义了一个指向双精度型的指针变量P和双精度型变量a,p=&a表示将变量a的地址赋给指针变量p;scanf("%If",p)表示用键盘输入的数赋给指针变量P所指向的地址单元中,scanf()函数要求在输入double型数据,格式控制符必须用%1f。否则,数据不能正确输入。所以选项D正确。

32.B。【解析】本题考查for循环及if…else语句嵌套,第1次执行for循环,p[1][0]=p[1][0]=p[1][0]-1=3;第2 次执行for循环,p[1][1]=p[1][1]-1=4;第3次执行for 循环,p[1][2]=l,最后输出的是a[0][1]+a[1][1]+a[1] [2]=2+4+1=7。

33.D。【解析】本题主要考查带参数的宏定义,过程如下:由于定义为define(x) x*x没有括号优先级,所以:a= a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m) =9/(3+2*3+2/3+2*3+2)=0。

34.C。【解析】本题考查按位异或运算,异或就是相同为0,不同为1(化为二进制00001101),017的二进制为000001111,两者异或结果为00000010。

35.D。【解析】本题考查leon(tp)函数,其功能是:测试所指的文件的位置指针是否已达到文件尾,如果已达到文件尾,则函数返回非0值;否则返回0,表示文件未结束。

36.C。【解析】语句“if(c==d)y=0;else y=1;”是if(a   37.B。【解析】运行程序,当k=7时switch(7)执行case:7,s++后s=1,break跳出。k--,k=7继续循环switch(6),执行case 6;直接跳出循环,k--变成5,继续循环switch(5),执行case 5后面的语句s+=2,也相当于s= s+2,此时s为3,break跳出,k变为4,继续循环,执行case 4为空,继续执行case 7;s++为4跳出循环,k--变为3,继续循环,执行case 3,空语句往下执行case 6,跳出,k -- 为2,继续循环,执行case 2;空语句往下执行case 3,空语句再执行case 7,跳出循环,k--为1不符合循环,退出,此时S=4。

38.B。【解析】本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的循环都要使j~0到3,j=4时不符合,所以退出j循环;然后i减1,J仍然要从0~3,j=4 时退出J循环直到i变成0,退出i循环。第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4 =24次。

39.A。【解析】本题考查循环跳出的知识点:①break语句可以出现在switch循环体内及语句体内,它的作用是跳出循环体,不能用于其他的语句;②continue语句的作用是结束本次循环,即跳过循环体中下面尚未执行的语句,而接着判定循环条件是否成立,确定下一次循环是否继续执行,执行contiune语句不会使整介循环终止;③循环体内使用break语句会使循环提前终止;④从多层循环嵌套中退出时,可以使用90t0语句或者break语句。

40.B。【解析】用"w"方式打开文件,意思是如果文件名相同则覆盖原来的文件,所以当再次输入时覆盖了第一次的内容,B选项正确。