二级C语言笔试-107
(总分:100.00,做题时间:90分钟)
一、选择题(总题数:50,分数:60.00)
1.以下程序段的执行结果为______。
#define PLUS(X,Y)X+Y
main()
int x=1,y=2,z=3,sum;
sum=PLUS(x+y,z)*PLUS(y,z);
printf("SUM=%d",sum);



(分数:2.00)
 A.SUM=9
 B.SUM=12 
 C.SUM=18
 D.SUM=28
解析:[分析] 表达式sum=PLUS(x+y,z)*PLUS(y,z)用带参的宏替换为 sum=x+y+z*y+z,sum的值为12。
2.下列说法中,正确的是______。


(分数:2.00)
 A.指针是一个变量
 B.指针中存放的可以是任何类型的值
 C.指针变量是变量地址
 D.指针变量占用存储空间 
解析:[分析]指针是地址,存放指针的变量是指针变量,不同类型的指针变量存放不同类型数据的地址,指针变量作为可存储指针的变量,也要占用一定的存储空间。
3.设有两个串p和q,求q在p中首次出现位置的运算称作______。


(分数:2.00)
 A.连接
 B.模式匹配 
 C.求子串
 D.求串长
解析:[分析]子串的定位操作通常称作串的模式匹配,是各种串处理系统中最重要的操作之
一,算法的基本思想是:从主串的开始字符起,与模式的第一个字符比较,若相等,则继续比较后续字符,否则从主串的下一个字符起再重新与模式的字符比较,依次类推,直至模式中的每一个字符依次和主串中的一个连续的字符序列相等,称匹配成功,否则称匹配不成功。
4.下列程序的执行结果是______。
in(f(char*s)
char*p=s;
while(*p!='/0')p++;
return(p-s);

main()
printf("%d/n",f("goodbye!"));


(分数:2.00)
 A.3
 B.6
 C.8 
 D.0
解析:[分析]字符在内存中占一个字节的存储空间,按字符的存储顺序,其地址依次递增,在函数f中循环过后,p指向字符串的结束位置,s指向字符串首地址,p-s即为字符串长度。
5.C语言规定,简单变量作实参时,它和对应形参之间的数据传递方式是______。


(分数:2.00)
 A.由实参传给形参,再由形参传回给实参
 B.地址传递
 C.单向值传递 
 D.由用户指定传递方式
解析:[分析]简单变量做实参时,相应的形参变量也是简单变量,它们之间的数据传递方式是单向值传递,即数据只能由实参传到形参,形参值的改变不影响实参值的变化。
6.设有说明:int a=1,b=0;,则执行以下语句的输出结果是______。
switch(


(分数:2.00)
 A.
case 1:
switch(
 B.
case 0:printf("**0**/n");break;
case 1:printf("**1*/n");break;< 
解析:[分析]本题是switch-case语句的嵌套使用,外层switch语句的第一个分支(嵌套switch语句)执行完后,没有break;语句,将继续执行第二个分支。
7.下列程序的输出结果是______。
main()
int x=0,a=0,b=2;
if(x=a+b) printf("****/n");
else printf("####/n");



(分数:2.00)
 A.有语法错,不能通过编译
 B.通过编译,但不能连接
 C.**** 
 D.####
解析:[分析]if语句中的条件表达式是赋值表达式,a+b值为2,赋给x,x值非0,输出****。
8.执行下面程序的结果是______。
main()
int x=2;
printf("%d/n",(x--,x<<1,x&&5));



(分数:2.00)
 A.0
 B.1 
 C.2
 D.编译时有语法错误,不能执行
解析:[分析]逗号表达式x--,x<<1,x&&5先执行x--,x的值为1,再执行x<<1,表达式的值为2,但x的值仍是1(不是移位赋值表达式),最后执行x&&5,二者均不为0,逻辑与的结果是1。
9.下列程序的运行结果是______。
main()
int a[6],i;
for(i=2;i<6;i++)
a[i]=4*(i-2*(i>3))%5;
printf("%2d",a[i]);





(分数:2.00)
 A.2 3 2 3
 B.1 2 1 2
 C.3 2 3 2 
 D.2 2 2 2
解析:[分析]本题程序的功能是对数组元素赋值,难点是对表达式4*(i-2*(i>3))%5的分析。
10.fseek函数是C语言系统提供的标准库函数,其实现的具体操作是______。



(分数:2.00)
 A.实现文件的顺序读写
 B.实现文件的随机读写
 C.改变文件的位置指针 
 D.以上答案均不正确
解析:[分析]fseek函数的原形为int fseek(FILE*fp,long offset,int base);函数的功能是将fp所指向的位置指针移到以base所指位置为基准、以offset为位移量的位置。可见,fseek是改变文件的位置指针。
11.下列用于printf函数的控制字符常量中,代表“竖向跳格”的转义字符常量是______。


(分数:1.00)
 A.'/b'
 B.'/t'
 C.'/v' 
 D.'/f'
解析:[分析]转义字符'/b/、'/t'、'/v'、'/f'的作用分别是退格、移到下一制表位、竖向跳格和换页。
12.下列程序的输出结果是______。
struct exmple
int x;
int y;
num[2]=1,2,3,2;
main()
printf("%d/n",num[1].y*num[0].x/num[1].x);



(分数:1.00)
 A.0 
 B.1
 C.3
 D.6
解析:[分析]结构体数组num初始化后,num[0]成员x、y的值分别为1、2,num[1]成员x、y的值分别为3、2,代入num[1].y*num[0].x/num[1].x,解得值是0。
13.下列4项说法中,不正确的是______。


(分数:1.00)
 A.数据库减少了数据冗余
 B.数据库中的数据可以共享
 C.数据库避免了一切数据的重复 
 D.数据库具有较高的数据独立性
解析:[分析]数据库系统具有以下4个特点:数据的集成性、数据的高共享性与低冗余性、数据的独立性、数据统一管理与控制。
14.若有下列语句:
char a[]="xyz";
char b[]='x','y','z';
则下列叙述正确的是______。


(分数:1.00)
 A.数组a和数组b不等价
 B.数组a和数组b的长度相同
 C.数组a占用空间大小等于数组b占用空间大小
 D.数组a占用空间大小大于数组b占用空间大小 
解析:[分析]数组a的存储空间占4个字节(结束符'/0'占一字节),数组a的存储空间占3个字节。
15.下列4项中,必须进行查询优化的是______。


(分数:1.00)
 A.关系数据库 
 B.网状数据库
 C.层次数据库
 D.非关系模型
解析:[分析]关系数据模型诞生之后迅速发展,深受用户喜爱,但关系数据模型也有缺点,其最主要的缺点是由于存取路径对用户透明,查询效率往往不如非关系数据模型。因此,为了提高性能,必须对用户的查询请求进行优化。
16.分析下面的程序
main()
int*p1,*p2,*p;
int x=4,y=6;
p1=&x;p2=&y;
if(x<y)
p=p1;p1=p2;p2=p;

printf("%d,%d,",*p1,*p2);
switch case判断字符串
printf("%d,%d/n",x,y);

程序的输出结果为_______。


(分数:1.00)
 A.6,4,4,6 
 B.4,6,6,4
 C.4,6,4,6
 D.6,4,6,4
解析:[分析]if语句执行前,指针变量p1指向变量x,指针变量p2指向变量y。由于x<y成立,p1、p2分别指向变量y和变量x,因此,程序输出结果是6,4,4,6。
17.已知在ASCII字符集中,数字0的序号为48,下列程序的输出结果为______。
main()
char a='0',b='9';
printf("%d,%c/n",a,b) ;


(分数:1.00)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。