二级C语言选择题专项强化真题试卷5
选择题
1.将E-R图转换为关系模式时,实体和联系都可以表示为( )。(C)
A. 属性
B. 键
C. 关系
D. 域
解析:E-R图转换为关系模式时,实体和联系都可以表示为关系。
2.若有如下定义语句:
double x,y,*px,*py;
执行了px=&x;py=&y;之后,正确的输入语句是( )。(C)
A. scanf(\\
B. scanf(\\
C. scanf(\\
D. scanf(\\
解析:输入函数scanf的标准格式是:scanf(格式控制,地址列表),AD两项中地址列表格式不正确,应为&x,&y。格式控制和地址列表间应该用逗号隔开,B项也错误。
3.有以下程序:
#include<stdio.h>
main()
{
int a=1,b=2,c=3,d=0;
if(a=—1&&b++==2)
if(b!=2||c!=3)
printf(\\(C)
A. 1 2 3
B. 1 3 2
C. 1 3 3
D. 3 2 1
解析:首先a=1,b=2,c=3,d=0;因为a为1,b++本身为b加之前的值,即b++为2,所以第一个if语句的判断条件为真,进入if语句。b经过b++运算后值为3,所以第二个if语句为真(或运算时,一个为真,整体都为真,并且第一个为真时第二个不会被执行运算),这时后面的运算都忽略。
4.有以下程序:
#include<stdio.h>
main()
{
int x,y,z;
x=y=1;
z=x++;y++;++y;
printf(\\(C)
A. 2 3 2
B. 2 3 3
C. 2 3 1
D. 2 2 1
解析:考查逗号表达式。逗号表达式的计算过程是分别计算所有表达式的值,并把最后一个表达式的值作为整个逗号表达式的值。x=y=1;将x、y初始化为1,逗号表达式z=x++,y++,++y;中先计算z=x++,得到x=2,z=1,计算y++,得y=2,再计算++y,得y=3。所以最终结果为x=2,y=3,z=1,答案选C。
5.有以下程序:
#include<stdio.h>
main()
{
int y=9;
for(;y>0;y——)
if(y%3==0)
printf(\\(D)
A. 875421
B. 963
C. 741
D. 852
解析:该程序的运行过程是y从9开始自减,每次判定y是否能被3整除,若是,则输出——y后的值,能被3整除的y值分别为9、6、3,所以答案选D。
6.以下叙述中正确的是( )。(B)
A. 一条语句只能定义一个数组
B. 每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元
C. 数组说明符的一对方括号中只能使用整型常量,而不能使用表达式
D. 在引用数组元素时,下标表达式可以使用浮点数
解析:A选项中,一条语句只能定义一个数组是不准确的,可以通过一条语句定义多个数组;C选项中,数组说明符的一对方括号中可以是整型常量,也可以是整型常量表达式;D选项中,在引用数组元素时,下标表达式必须是整型的。故B选项正确。
7.有以下程序:
#inelude<stdio.h>
void fun(char**p)
{
++p;
prinff(\\(A)
A. Afternoon
B. ftemoon
C. Noming
D. oming
解析:本题主函数中定义了一个指针数组a,可以将它看成一个以字符指针为元素的一维数组。和一般的一维数组名能赋给同类型指针变量一样,该字符指针数组也可以赋给指向字符指针的指针,所以数组名a可以用做函数fun( )的实参。在fun( )函数中,++p操作使形参p往后移动一个字符指针的位置,即指针a[1]的位置。故最后通过printf( )函数输出的字符串为“Afternoon”。因此A选项正确。
8.若某二叉树中的所有节点值均大于其左子树上的所有节点值,且小于右子树上的所有节点值,则该二叉树遍历序列中有序的是( )。(B)
A. 前序序列
B. 中序序列
C. 后序序列
D. 以上说法均可以
解析:二叉树遍历可以分为3种:前序遍历(访问根节点在访问左子树和访问右子树之前)、中序遍历(访问根节点在访问左子树和访问右子树两者之间)、后序遍历(访问根节点在访问左子树和访问右子树之后)。由于节点值均大于其左子树上的所有节点值,且小于右子树上的所有节点值,那么只要遍历时访问根节点在访问左子树和右子树之间,遍历序列有序,即中序序列有序。故选B选项。
9.有以下程序:
#include
main()
{ int x=1,y=0,a=0,b=0;
switch(x)
{case 1:
switch(y)
{Case 0:a++;break;
Case 1:b++;break;
}
case 2:a++;b++;break;
case 3:a++;b++;
}
printf(\\(B)
A. a=2,b=2
B. a=2,b=1
C. a=1,b=1
D. a=1,b=0
解析:C语言还提供了一种用于多分支选择的switch语句,计算判断条件的表达式的值,并逐个与case后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行相应case后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
x=1;进入第一层switch,y=0;进入第二层switch,执行a++;break;后a=1;再进入case 2,(这里case 1:没有break,)执行了a++,b++,由于存在break,则跳出switch,得到a=2,b=1,因此答案为B选项。
10.设文件指针fp已定义,执行语句fp=fopen(\\(A)
A. 只能写不能读
B. 写操作结束后可以从头开始读
C. 可以在原有内容后追加写
D. 可以随意读和写
解析:考查文件操作函数fopen的基础知识,以”w”方式打开文件,只能写不能读。选项A正确。
11.有C语言表达式2*3+4+15%3,关于其执行顺序,以下叙述正确的是( )。(A)
A. 先执行2*3得6,再执行6+4得10,再执行15%3得0,最后执行10+0得10
本文档预览:3600字符,共7650字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载