二级C语言12.docx

上传人:b****7 文档编号:26252837 上传时间:2023-06-17 格式:DOCX 页数:28 大小:28.02KB
下载 相关 举报
二级C语言12.docx_第1页
第1页 / 共28页
二级C语言12.docx_第2页
第2页 / 共28页
二级C语言12.docx_第3页
第3页 / 共28页
二级C语言12.docx_第4页
第4页 / 共28页
二级C语言12.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

二级C语言12.docx

《二级C语言12.docx》由会员分享,可在线阅读,更多相关《二级C语言12.docx(28页珍藏版)》请在冰豆网上搜索。

二级C语言12.docx

二级C语言12

二级C语言-1-2

(总分:

81.00,做题时间:

90分钟)

一、{{B}}选择题{{/B}}(总题数:

35,分数:

51.00)

1.以下程序的输出结果是______。

intf()

{staticinti=0;

ints=1;

s+=i;i++;

returns;

}

main()

{inti,a=0;

for(i=0;i<5;i++)

a+=f();

printf("%d/n",a);

∙A.20

∙B.24

∙C.25

∙D.15

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

[解析]函数f中变量i为静态变量,函数f调用结束后变量i所占据的存储单元不会释放,而在主函数中f被调用5次,具体过程如下:

第1次调用f:

s=s+i=1+0=1,i=i+1=1,主函数中a=a+f()=0+1=1第2次调用f:

s=s+i=1+1=2,i=i+1=2,主函数中a=a+f()=1+2=3第3次调用f:

s=s+i=1+2=3,i=i+1=3,主函数中a=a+f()=3+3=6第4次调用f:

s=s+i=1+3=4,i=i+1=4,主函数中a=a+f()=6+4=10第5次调用f:

s=s+i=1+4=5,i=i+4=5,主函数中a=a+f()=10+5=15所以printf语句的输出结果为15。

2.下列程序段的输出结果为{{U}}{{/U}}。

#include<stdio.h>

main()

{staticchara[]="language";

char*p;

p=a;

for(p=a;p<a+8;p+=2)

putchar(*p);

}

∙A.language

∙B.lnug

∙C.有语法错误

∙D.lang

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

[解析]本程序首先定义了静态字符数组a,然后将指针p指向数组a的首地址。

第1次for循环,p=a,p指向数组的第1个元素,*p是取指针p所指地址的内容,输出1;第2次for循环,p=p+2,则p指向数组的第3个元素,*p是取指针p所指地址的内容,输出n;第3次for循环,p=p+2,则p指向数组的第5个元素,*p是取指针p所指地址的内容,输出u;第4次for循环,p=p+2,则p指向数组的第7个元素,*p是取指针p所指地址的内容,输出g,结束循环。

3.下列选项中不属于结构化程序设计方法的是{{U}}{{/U}}。

∙A.自顶向下

∙B.逐步求精

∙C.模块化

∙D.可复用

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

[解析]结构化程序设计的主要原则概括为自顶向下、逐步求精和限制使用GOTO语句。

4.以下选项中能表示合法常量的是{{U}}{{/U}}。

∙A.整数:

1,200

∙B.实数:

1.5E2.0

∙C.字符斜杠:

'/'

∙D.字符串:

"/007"

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

[解析]选项A),1200中间不能有逗号,否则编译时会认为是1或出错。

选项B),2.0错误,必须为整数。

选项C),要表示字符斜杠常量'/',应该在反斜杠的前面再加上一个反斜杠。

选项D),字符串常量是用一对双引号括起来的一串字符。

5.有以下程序

main()

{intm=12,n=34;

printf("%d%d",m++,++n);

printf("%d%d/n",n++,++m);

}

程序运行后的输出结果是

∙A.12353514

∙B.12353513

∙C.12343514

∙D.12343513

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

[解析]自增运算符“++”,放在变量之前表示在使用变量之前,先使变量的值加1;放在变量之后表示在使用变量之后,再使变量的值加1。

第一条输出语句,先输出m=12,m再自加1,变成13,n先自加1再输出,输出n=35;第二条输出语句,先输出n=35,n再自加1,变成36,m先自加1再输出,输出m=14。

6.执行下面的语句后,表达式++x>b?

x:

b-->++x?

++b:

x的值为______。

intx=5,b=5;

∙A.6

∙B.7

∙C.8

∙D.9

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

7.树是结点的集合,它的根结点的数目是{{U}}{{/U}}。

∙A.有且只有1个

∙B.1或多于1

∙C.0或1

∙D.至少有2个

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

[解析]树具有明显的层次关系,即树是一种层次结构。

在树结构中,根结点在第一层上。

当树为非空时,树中有且只有一个根结点,当树为空时,树中根结点的数目为0。

8.以下叙述中正确的是______。

∙A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

∙B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖

∙C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据

∙D.C语言中的文件是流式文件,凶此只能顺序存取数据

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

[解析]B选项中打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。

C选项中在一个程序中当对文件进行了写操作后,不用先关闭该文件然后再打开,才能读到第1个数据,可以用fseek()函数进行重新定位即可。

D选项中,C语言中的文件可以进行随机读写。

故本题答案为A。

9.为了避免嵌套的if-else的二义性,C语言规定:

else与______配对。

∙A.缩排位置相同的if

∙B.其之前最近的if

∙C.其之后最近的if

∙D.同一行上的if

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]在if语句中又包含—个或多个if语句称为if语句的嵌套。

应当注意if与else的配对关系,在C语言中,从最内层开始,else总是与它上面最近的(未曾配对的)if配对。

10.有如下程序

main()

{floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x<10.0)y=1.0/x;

elsey=1.0;

printf("%f/n",y);}

该程序的输出结果是

∙A.0.000000

∙B.0.250000

∙C.0.500000

∙D.1.000000

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]该题目测验考生对if…elseif结构的理解,比较简单。

x的值满足x<10.0的关系,所以程序将执行y=1.0/x;语句,y的值应该等于0.5。

最后,用printf函数输出时,%f的输出格式为小数点后保留6位。

11.有以下程序:

main()

{intx=102,y=012;

printf("%2d,%2d/n",x,y);

}

执行后输出结果是{{U}}{{/U}}。

∙A.10,01

∙B.02,12

∙C.102,10

∙D.02,10

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]x的值为十进制数102,而y的值为八进制数012,根据题意将y用十进制表示为10%md,m为指定输出数据的宽度,若位数小于m则左端补以空格,若位数大于m则按实际输出。

所以答案是C。

12.有以下程序:

#include<stdio.h>

voidfunl(char*p)

{

char*q;

q=p;

while(*q!

='/0')

{

(*q)++;

q++;

}

}

main()

{

chara[]={"Program"},*p;

p=&a[3];

fun1(p);

printf("%s/n",a);

}

程序执行后的输出结果是______。

∙A.Prphsbn

∙B.Prohsbn

∙C.Progsbn

∙D.Program

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析](*q)++是q所指的字符加1,q++就是指针移到下一个字符,因此B选项正确。

13.以下语句或语句组中,能正确进行字符串赋值的是()。

∙A.char*sp;*sp="right!

";

∙B.chars[10];s="right!

";

∙C.chars[10];*s="right!

";

∙D.char*sp="right!

";

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

在选项A中,首先定义了一个字符指针sp,然后将个字符串赋给甲所指的地址,这是错误的。

因为sp是一个未经初始化的野指针,不知其指向哪儿,往一个不确定的地址中写数据很容易让程序出错。

选项B首先定义了一个字符数组,然后将一个字符串赋给数组名,这是错误的。

因为数组名是一个指针常量,不可以被改变。

选项C首先定义了—个字符数组,然后将—个字符串赋给数组的第一个元素,这也是错误的。

因为字符串在表达式中相当于一个常字符指针,将一个指针值赋给一个字符型变量是行不通的。

选项D是定义一个字符指针sp,同时使其指向一个字符串常量,即将个常字符型指针赋给sp。

这是可行的。

所以,4个选项中选项D符合题意。

14.以下叙述正确的是{{U}}{{/U}}。

∙A.在C语言程序中,main函数必须位于程序的最前面

∙B.C语言程序的每行中只能写一条语句

∙C.C语言本身没有输入输出语句

∙D.在对一个C语言程序进行编译的过程,可发现注释中的拼写错误

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]考查C语言的几个基本概念。

[解题要点]选项A)中,main函数可以放在程序的任何位置,不一定要放在程序的最前面,不论main函数放在什么位置,程序的执行却总是从main函数开始的;选项B)中,因为C语言的语法限制不严格,所以可以多条语句放在同一行上;选项C)是正确的,C语言中没有专门的输入输出语句,输入输出是通过使用输入输出库函数来实现的;选项D)是错误的,因为C语言中的注释是不会被编译的。

[考点链接]掌握算法的相关特性。

15.在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是()。

∙A.可行性分析

∙B.需求分析

∙C.详细设计

∙D.程序编码

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。

其中需求分析阶段常用的工具是数据流图和数据字典。

本题答案为B)。

16.以下程序的输出结果是{{U}}{{/U}}。

main()

{inta,i;a=0;

for(i=1;i<5:

i++)

{switch(i)

{case0:

case3:

a+=2;

case1:

case2:

a+=3;

default:

a+=5;}

}prinf("%d/n",a};}

∙A.31

∙B.13

∙C.10

∙D.20

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

[解析]本题考查用于多分支选择的switch语句,其一般形式为:

switch(表达式)case常量表达式1:

语句1;case常量表达式2:

语句2;case常量表达式n:

语句n;default:

语句n+1;}其语义是:

计算表达式的值,并逐个与其后的常量表达式值进行比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句;如表达式的值与所有case后的常量表达式均不相等时,则执行default后的语句。

17.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为{{U}}{{/U}}

∙A.a<>0

∙B.!

a

∙C.a=0

∙D.a

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

18.算法中的每一个步骤都必须是有明确意义的,不允许有模棱两可的解释,也不允许有多义性,这个性质称为

∙A.可行性

∙B.有穷性

∙C.正确性

∙D.确定性

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

[解析]算法中的每一个步骤都必须是有明确意义的,不允许有多义性。

算法的这个性质即为算法的确定性。

19.有以下程序

#include<stdio.h>

structS

{inta,b;}data[2]={10,100,20,200};

main()

{structSp=data[1];

printf("%d/n",++(p.a));

}

程序运行后的输出结果是______。

∙A.21

∙B.11

∙C.20

∙D.10

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

[解析]声明data是结构体型S的数组。

初始化时data[0].a=10;data[0].b=100;data[1].a=20;data[1].b=200。

主函数中p=data[1];即p.a=data[1].a;p.b=data[1].b;执行语句printf("%dn",++(p.a));打印输出时p.a先增1再打印。

即p.a=data[1].a=20,先增1等于21,因此程序运行结果是21。

20.C语言提供的合法的数据类型关键字是_______。

∙A.Double

∙B.float

∙C.integer

∙D.Char

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]选项A和D中第—个字母大写,不正确;选项C是PASCAL中的整型关键字,不是C语言中的关键字。

21.有以下程序:

#include<stdio.h>

main()

{intx=102,y=012;

printf("%2d,%2d/n",x,y);

}

执行后的输出结果是{{U}}{{/U}}。

∙A.10,01

∙B.02,12

∙C.102,10

∙D.02,10

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]y=012是将八进制数12赋给变量y。

格式符%d,用于输出十进制整数;%md,m为指定的输出值的宽度,如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。

本题是将八进制数12也按十进制数输出,八进制数12转换为十进制数为10,输出结果为102,10。

22.设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是

∙A.n=0;while((ch=getchar())!

='/n')n++;

∙B.n=0;while(getchar()!

='/n')n++;

∙C.for(n=0;getehar()!

='/n';n++);

∙D.n=0;for(ch=getchar();ch!

='/n';n++);

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

[解析]选项D中ch=getchar()的操作,在for语句中所处的位置决定了此操作仅做一次,即只能从键盘上接收一个字符。

如果该字符是回车符,则只循环一次就退出;如果输入一个非回车字符,则程序进入无限循环。

23.在printf的格式字符中,e格式字符的作用是{{U}}{{/U}}。

∙A.以十六进制无符号形式输出整数

∙B.以带符号的十进制形式输出整数

∙C.以指数形式输出实数

∙D.以字符形式输出,且只输出一个字符

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

[解析]本题考查printf。

函数的格式。

格式字符“e”或者“E”都表示以指数形式输出单精度或双精度数。

24.在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。

与程序的效率相比,人们更重视程序的

∙A.安全性

∙B.一致性

∙C.可理解性

∙D.合理性

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]结构化程序设计方法设计出的程序具有明显的优点。

其一,程序易于理解、使用和维护;其二,提交了编程工作的效率,降低了软件开发成本。

其中,人们更重视前者。

25.有以下程序

main()

{inti=1,j=l,k=2;

if((j++||k++)&&i++)printf("%d,%d,%d/n",i,j,k);

执行后输出的结果是

∙A.1,1,2

∙B.2,2,1

∙C.2,2,2

∙D.2,2,3

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]本题考核的知识点是if语句的应用。

首先计算if语句后面的表达式值,先计算运算符&&前面括号里的“‖”运算.在“‖”运算中先计算j++,值为1(j的值为2),为真,后面的k++将不再计算,k的值依旧为2。

计算&&后面的表达式i++,值为1(i的值变为2)。

整个表达式的值为真,所以执行后面的输出语句,最后输出的i,j和k的值为2,2和2.所以,C选项为所选。

26.有以下程序

structS{intn;inta[20];};

voidf(int*a,intn)

{inti;

for(i=0;i<N-1;i++) A[I]+=I;}

main()

{inti;structSs{10,{2,3,1,6,8,7,5,4,10,9}};

f(s.a,s.n);

for(i=0;i<S.N;i++) PRINTF("%D",S.A[I]);}

程序运行后的输出结果是______。

∙A.2,4,3,9,12,12,11,11,18,9,

∙B.3,4,2,7,9,8,6,5,11,10,

∙C.2,3,1,6,8,7,5,4,10,9,

∙D.1,2,3,6,8,7,5,4,10,9,

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

27.下面的关键字中,不能够从循环体中跳到循环体外的是______。

∙A.goto

∙B.break

∙C.return

∙D.continue

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]在C语言中,可以用break语句和continue语句跳出本层循环和结束本次循环。

goto语句可跳出多层循环,如果在函数的循环体内使用return语句,就会直接结束循环返回函数值。

28.数据库设计中反映用户对数据要求的模式是______。

∙A.内模式

∙B.概念模式

∙C.外模式

∙D.设计模式

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

[解析]数据库系统的三级模式是概念模式、外模式和内模式。

概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户的公共数据视图。

外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,因此选择C。

内模式又称物理模式,它给出了数据库物理存储结构与物理存取的方法。

29.若有定义:

inta[4][10];,则以下选项中对数组元素a[i][i]引用错误的是______。

(0<=i<4,0=i<10)

∙A.*(&a[0][0]十10*i+j)

∙B.*(a+i)+j

∙C.*(a+i)+j)

∙D.*(a[i]+j)

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

[解析]本题中选项B是错误的引用,*(a+i)+j只代表了a[i][j]的地址。

30.下列程序的输出结果是______。

#include<stdio.h>

main()

{

inti=1,j=3;

printf("%d,",i++);

{

inti=0;

i+=j*2;

printf("%d,%d,",i,j);

}

printf("%d,%d/n",i,j);

}

∙A.1,6,3,1,3

∙B.1,6,3,2,3

∙C.1,6,3,6,3

∙D.1,7,3,2,3

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

31.有以下程序

#include<stdio.h>

main()

{FILE*fp;inti=20,j=30,k,n;

fp=fopen("d1.dat","w");

fprintf(fp,"%d/n",i;fprintf(fp,"%d/n",j);

fclose(fp);

fp=fopen("d1.dat","r");

fscanf(fp,"%d%d",&k,&n);printf("%d%d/n",k,n);

fclose(fp);}

程序运行后的输出结果是

∙A.2030

∙B.2050

∙C.3050

∙D.3020

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

[解析]本题中,最主要的是掌握几个有关文件函数的应用。

函数名:

fopen功能:

打开一个文件调用方式FILE*fP;fP=fopen(文件名,使用文件方式);函数名:

fprintf功能:

传送格式化输出到一个文件中调用方式:

fprintf(文件指针,格式字符串,输出表列);函数名:

fclose功能:

关闭一个文件调用方式:

fclose(文件指针);函数名:

fscanf功能:

从磁盘文件执行格式化输入调用方式:

fscanf(文件指针,格式字符串,输入列表)。

32.判断字符串s1是否大于字符串s2,应该使用{{U}}{{/U}}。

∙A.if(strcmp(s1,s2)<0)

∙B.if(s1>s2)

∙C.if(strcmp(s2,s1)<0)

∙D.if(strcmp(s1,s2))

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

[解析]本题考查字符串比较函数strcmp()。

调用形式:

strcmp(s1,s2),其中s1、s2分别是字符串存储区的首地址。

函数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1