2018年计算机二级C语言考前冲刺题(1)
11[单选题] 有以下程序: 程序运行时输入:-11-220,则输出结果是( )。 A.1,1 B.1,0 C.3,-3 D.3,0 参考答案:C 参考解析:分析程序结构,在do …while循环中,嵌套一个switch语句,switch语句中两个case语句分别执行break和continue,其中break语句是跳出switch语句,接着执行do…while循环体剩下的部分;而continue语句是直接进入do…while的下一个循环,由此可知每次循环,当t=0时,执行break语句,接着将z值累加x;当t=1时,执行continue语句,将y值累加x,所以当x输入-1、-2、0时,t=0,z值累加为-3;当x输入1、2时.t=1,y值累加为3,输出y、z的值分别为3、-3,故答案选C。 12[单选题] 以下选项中叙述错误的是( )。 A.C程序函数中定义的自动变量,系统不自动赋确定的初值 B.在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内 C.C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值 D.C程序函数的形参不可以说明为static型变量 参考答案:C 参考解析:A选项描述正确,自动变量未赋初值,为随机值;B选项描述正确,变量定义除在函数开始位置外,在复合语句开始也可以;C选项描述是错误的,函数内的静态变量,只在第一次调用时候赋值,以后调用保留上次值;D选项描述也正确,形参属于局部变量,占用动态存储区,而static型变量占用静态存储区。因此C选项正确。 13[单选题] 程序中若有以下的说明定义和语句: 则不能给变量t的s成员赋整数99,给num成员赋空串的语句组是( )。 参考答案:A 参考解析:结构体变量使用 “.”运算符引用结构体成员变量,结构体指针使用“->”运算符引用结构体成员变量,main函数中声明结构体STR变量t,和结构体STR指针*p,并将t的地址赋给p,所以使用P访问成员变量时,使用“->”运算符;使用* P访问成员变量时,使用“.”运算符。另外,由于成员变量num是字符数组,所以不能直接进行赋值,若要对num赋空字符串值,可以把num中第一个元素赋值为0或‘\0’,或者使用strcpy复制函数将空字符串“”复制到num中,故选项B、C、D正确,选项A错误,因此答案为A。 14[单选题] 以下关于循环语句的叙述中正确的是( )。 A.do…while语句的循环体至少执行一次 B.while语句的循环体至少执行一次 C.for语句的循环体至少执行一次 D.上述A、B、c说法均正确 参考答案:A 参考解析:while(表达式)当表达式为false时,循环体一次都不执行,故选项B、D错误;for(表达式1;表达式2;表达式3)语句,当表达式2为false时,循环体一次都不执行,故选项C错误;do-while语句循环体至少执行一次,故答案选A。 15[单选题] 以下叙述中错误的是( )。 A.用户定义的函数中可以没有return语句 B.用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值 C.用户定义的函数中若没有return语句,则应当定义函数为void类型 D.函数的return语句中可以没有表达式 参考答案:B 参考解析:本题重点考察函数返回值的相关知识,函数的值只能通过return语句返回主调函数,在函数中允许有多个return语句,但每次调用只能有一个return语句被执行,因此只能返回一个函数值。不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。因此B选项正确。 16[单选题] 以下叙述中正确的是( )。 A.C语句必须在一行内写完 B.C程序中的每一行只能写一条语句 C.C语言程序中的注释必须与语句写在同一行 D.简单C语句必须以分号结束 参考答案:D 参考解析:C语句可以跨行来写,但是必须以分号结束,所以A选项错误。C程序中的一行可以有多条语句,所以B选项错误。C语言中的注释语句可以与原语句放在一行也可以不放在一行,所以C选项错误。 17[单选题] 以下不合法的数值常量是( )。 A.8.0E0.5 B.1e1 C.011 D.0xabed 参考答案:A 参考解析:A选项中E后面的指数必须为整型数据,所以A错误。C选项中011表示的是八进制常量.Oxabcd表示的是十六进制常量。 18[单选题] 有以下程序: 程序计算的是( )。 . A.s=1!+2!+3!+4!+5! B.s=1+2+3+4+5 C.s=1$2*3*4*5 D.s=1!*2!*3!*4!*5! 参考答案:A 参考解析:函数fun()中的变量f是静态变量,所以只初始化一次,之后每次调用fun(),f的初值就是上一次fun()结束时的值,对于fun()函数,当传人n=1时,f=1,返回值为1;当传入n=2时,f=1×2=2,返回值为2;当传人13=3时,f=2×3=6,返回值为6;当传人n=4时,f=6×4=24,返回值为24,所以每次调用fun函数时,f变量在上一次fun函数运行结束时保留值的基础上,再与n乘积,并重新赋值给f,所以可以将f理解为记录当前的累乘值,即当main函数中i:1时,f=11=1;当main()函数i=2时,f=2!=2,当main函数中i=3时,f=3!=6……另外main函数中的S记录调用fun函数的返回值之和,所以s=1!+2!+…+i!,由于i最大值为5,所以s=1!+2!+3!+4!+5!,答案为A。 19[单选题] 下列诜项中.能正确定义数组的语句是( )。 参考答案:D 参考解析:C语言不允许定义动态数组,定义数组的大小必须为常量表达式。A选项错误,C语言中数组没有此类型的定义方法;B选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定初值的个数;C选项错误,N为变量,不能用来定义数组大小。因此D选项正确。 20[单选题] 有以下程序: 程序的运行结果是( )。 A.123 B.12300 C.1 D.321 参考答案:A 参考解析:首先使用fopen函数以可写方式打开文件d1.dat,返回文件指针fp,然后在for循环通过fprintf函数调用fp指针,将数组a的3个元素写入文件d1.dat中,最后再写入换行符\n,关闭文件,此时文件中的内容:“123\n”,然后调用fopen函数以只读方式打开d1.dat,返回文件指针fp指向文件的开头,再调用fscanf函数从文件中读入一个整数:123,(遇到第一个非数值字符结束),关闭文件后输出读人的整数n,结果为:123,答案为A。
2015年计算机二级《C语言》考试上机测试选择题
一、选择题(每小题1分,共40小题,共40分)
1.算法的空间复杂度是指( )。
A.算法程序的长度
B.算法程序中=的指令条数
C.算法程序所占的存储空间
D.算法执行过程中所需要的存储空间
2.下列叙述中正确的是( )。
A.一个逻辑数据结构只能有一种存储结构
B.逻辑结构属于线性结构,存储结构属于非线性结构
C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率
3.简单的交换排序方法是( )。
A.快速排序
B.选择排序
C.堆排序
D.冒泡排序
4.关于结构化程序设计原则和方法的描述错误的是( )。
A.选用的结构只准许有一个入口和一个出口
B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现
C.不允许使用GOT0语句
D.语言中若没有控制结构,应该采用前后一致的方法来模拟
5.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和( )。
A.可重用性差
B.安全性差
C.非持久性
D.冗余性
6.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是( )。
A.模拟现实世界中不同事物之间的联系
B.强调模拟现实世界中的算法而不强调概念
C.使用现实世界的概念抽象地思考问题从而自然地解决问题
D.不强调模拟现实世界中的算法而强调概念
7.对如下二叉树进行后序遍历的结果为( )。
2015年计算机二级《C语言》考试上机测试题(1)
A.ABCDEF
B.DBEAFC
C.ABDECF
D.DEBFCA
8.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指( )。
A.模块间的关系
B.系统结构部件转换成软件的过程描述
C.软件层次结构
D.软件开发过程
9.两个或两个以上模块之间关联的紧密程度称为( )。
A.耦合度
B.内聚度
C.复杂度
D.数据传输特性
10.下列描述错误的是( )。
A.继承分为多重继承和单继承
B.对象之间的通信靠传递消息来实现
C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征
D.类是具有共同属性、共同方法的对象的集合
11.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是( )。
A.DB包含DBS和DBMS
B.DBMS包含DB和DBS
C.DBS包含DB和DBMS
D.没有任何关系
12.下列合法的声明语句是( )。
A.int_abc=50;
B.double int=3+5e2.5;
C.long do=1L:
D.float 3_asd=3e-3;
13.设x、Y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是( )。
A.x&&Y
B.x<=Y
C.x‖y+z&&y-z
D.!((x 14.若ch为char型变量,k为int型变量(已知字符a的ASCIl码是97),则执行下列语句后输出的结果为( )。
ch=’b’;
k=10:
printf("%X,%o,",ch,ch,k);
printf("k=%%d\n",k);
A.因变量类型与格式描述符的类型不匹配,输出无定值
B.输出项与格式描述符个数不符,输出为0值或不定值
C.62,142,k一%d
D.62,142,k一%l0
15.有下列程序: 、
fun(int X,int y){return(x+y);)
main()
{ int a=1,b=2,c=3,sum;
sum=fun((a++,b++,a+b),c++);
printf("%d\n",sum);
}
执行后的输出结果是( )。
A.6
B.7
C.8
D.9
16.假定x和Y为double型,则表达式x=2,y—x+3/2的值是( )。
A.3.500000
B.3
C.2.000000
D.3.000000
17.有如下程序:
main()
{int x=1,a=0,b=0;
switch(x)
{
case 0:b++;
case l:a++;
case 2:a++;b++;
)
printf("a=%d,b=%d\n",a,b);
)
该程序的输出结果是( )。
A.a=2,b=1
B.a=1,b=1
C.a=1,b=0
D.a=2,b=2
18.下列程序的输出结果是( )。
main()
{int i=1,j=2,k=3;
if(i++= =1&&(++j= =3= =‖k++= =3))
printf("%d%d%d\n",i,J,k);
)
A.1 2 3
B.2 3 4
C.2 2 3
D.2 3 3
19.下列程序的输出结果是( )。
#include
main()
{ int a=0,i;
for(i=1;i<5;i++)
{ switch(i)
{ case 0:
case 3:a+=1;
case l:
case 2:a+=2;
default:a+=3;
)
printf("%d",i);
)
A.19 B.1 C.6 D.8
20.有以下程序:
main()
{int X,i;
for(i=1;i<=50;i++)
{x=i;
if(X%2=O)
if(x%3=O)
if(X%7=0) .
printf("%d,i)";
)
)
输出结果是( )。
A.28
B.27
C.42
D.41
21.以下程序的输出结果是( )。
main()
{int a[3][3]={{1,2},{3,4),{5,6}},i,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<=i;j++)s+=a[i][j];
printf("%d\n",s);
}
A.18
B.19
C.20
D.21
22.有下列程序:
main()
{ int k=5;
while(--k) printf("%d",k=1);
printf("/n");
)
执行后的输出结果是( )。
A.1
B.2
C.4
D.死循环
23.若有定义:“int a[2][3];”,则对a数组的第i行第J列元素的正确引用为( )。
A.*(*(a+i)+j)
B.(a+i)[j]
C.*(a+i+j)
D.*(a+i)+j
24.下列能正确进行字符串赋值的是( )。
A.char s[5]={"ABCDE"};
B.char s[5]={’A’,’B’,’C’,’D’,’E’}; 、
C.char*S;S="ABCDE";
D.char*s;printf("%《",s);
25.现有以下结构体说明和变量定义,如图所示,指针P、q、r分别指定一个链表中连续的3个结点。
2015年计算机二级《C语言》考试上机测试题(1)
struct node
{har data;
struct node*next;)*P,*q,*r;
现要将q和r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是( )。
A.q-:>next=r->next;p--:>next=r;rm:>next=q;
B.q-:>next=r;q->next=r->next;r->next=q;
C.q-:>next=r->next;r->next=q;p->next=r;
D.q-:>next=q;p->next=r;q->next=r->next;
26.有下列程序:
main()
{int i,j,x=0;
for(i=0,i<2;i++)
{x++;
for(j=0;j<=3;j++)
{if(j%2)continue;
x++:
)
x++:
}
printf("x=%d\n"x);
}
程序执行后的输出结果是( )。
A.x=4
B.x=8
C.x=6
D.x=12
27.有下列程序:
int funl(double a){return a*=a;} 、
int fun2(double x,double y)
{double a=0,b=0;
a=funl(x);b=funl(y);return(int)(a+b);
)
main()
{double w;w=fun2(1.1,2.0),……}
程序执行后变量w中的值是( )。 、
A.5.21 B.5 C.5.0 D.0.0
28.有下列程序:
main()
{int i,s=0,t[]={1,2,3,4,5,6,7,8,9};
for(i=0;i<9;i+=2)s+=*(t+i);
printf("%d\n",s);
}
程序执行后的输出结果是( )。
A.45
B.20
C.25
D.36
29.有下列程序:
int fun(int n)
{if(n= =1))return l;
else
return(n+fun(n-1)):
}
main()
{ int x;
seanf("%d",&x);x=fun(x);printf("%d\n",x);
}
执行程序时,给变量x输入l0,程序的输出结果是( )。
A.55
B.54
C.65
D.45
30.有下列程序:
int fun(int x[],int n)
{ static int sum=0,i;
for(i=0;i return sum;
}
main()
{int a[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0;
s=fun(a,5)+fun(b,4);printf("%d\n",s);
程序执行后的输出结果是( )。 、
A.45
B.50
C.60
D.55
31.有下列程序:
main()
f char*P[]={"3697","2584");
int i,j;long num=0;
for(i=0;i<2;i++)
{j=0;
while(p[i][j]!=’\0’)
{if((p[i][j]-t\0’)%2)num=10*num+p[j][j]-’0’;
j+=2;
)
)
printf("%d\n",num);
)
程序执行后的输出结果是( )。
A.35 B.37 C.39 D.3975
32.以下程序的输出结果是( )。
main()
{ char st[20]="hell0\O\t\\\”;
printf("%d%d\n",strlen(st),sizeof(st));
}
A.9 9
B.5 20
C.13 20
D.20 20
33.若有下的定义:"int t[3][2];",能正确表示t数组元素地址的表达式是( )。
A.&t[3][2]
B.t[3]
C.t[l]
D.t[2][2]
34.函数fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始点是( )。
A.文件开始
B.文件末尾
C.文件当前位置
D.以上都不对
35.下述程序的输出结果是( )。
#include
main()
{int i;
for(i=1;i<=10;i++)
{if(i*i>=20)&&(i*i<=lOO))
break;
}
printf("%d\n",i*i);
)
A.49
B.36
C.25
D.64
36.若有定义“int b[8],*p=b;”,则p+6表示( )。
A.数组元素b[6]的值
B.数组元素b[6]的地址
C.数组元素b[7]的地址
D.数组元素b[0]的值加上6
37.设变量已正确定义,则以下能正确计算f=n!的程序是( )。
A.f=0; for(i=1;i<=n;i++)f*=i;
B.f=1;for(i=1;i C.f=1;for(i=n;i>1;i++)f*=i;
D.f=1;for(i=n;i>=2;i--)f*=i;
38.下述程序执行的输出结果是( )。
#include
main()
{char a[2][4]; ,
strcpy(a。"are");strcpy(a[1],"you");
a[o][3]=’&’;
printf("%s\n",a);
)
A.are&you
B.you
C.are
D.&
39.设x=011050,则x=x&01252的值是( )。
A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
40.在“文件包含,,预处理语句的使用形式中,当#include后面的文件名用(双引号)括时,寻找被包含文件的方式是( )。
A.直接按系统设定的标准方式搜索目录
B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索
C.仅仅搜索源程序所在目录
D.仅仅搜索当前目录
2018年计算机二级考试C语言试题及答案(3)
2018年计算机二级考试C语言试题及答案(3) 1[单选题] 以下叙述中正确的是 A.两个字符串可以用关系运算符进行大小比较 B.函数调用strlen(s);会返回字符串S实际占用内存的大小(以字节为单位) C.C语言本身没有提供对字符串进行整体操作的运算符 D.当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和 参考答案:C 参考解析:本题考查字符串处理函数strien、strcat、strcmp。B选项中strlen返回的是字符串s实际占用内存大小加上结尾符,A选项中不能用关系运算符进行大小比较,可以使用strcmp。D选项当使用连接函数strcat时,内存空间会减少一个字符位置。 2[单选题] 一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是( )。 A.一对一B.一对多C.多对多D.多对一 参考答案:C 参考解析:因为一个人可以操作多个计算机,而一台计算机又可以被多个人使用,所以两个实体之间是多对多的关系。 3[单选题] 对于while(!E)s;,若要执行循环体s,则E的取值应为: A.E等于1B.E不等于0C.E不等于1D.E等于0 参考答案:D 参考解析:while语句的一般形式为:while(表达式)语句;其中表达式是循环条件,语句为循环体。while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。该题中如要执行语句s,则!E应为真,因此E应等于0,D选项正确。 4[单选题] 在软件设计中不使用的工具是( )。 A.系统结构图B.PAD图C.数据流图(DFD图)D.程序流程图 参考答案:C 参考解析:系统结构图是对软件系统结构的总体设计的图形显示。在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。PAD图是在详细设计阶段用到的。程序流程图是对程序流程的图形表示,在详细设计过程中用到。数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以选择C。 5[单选题] 若有定义语句:char a='\82';则变量a( ) A.说明不合法B.包含1个字符C.包含2个字符D.包含3个字符 参考答案:B 参考解析:char a='\82',定义字符量a,char型变量值为1个字节长度,并从右侧开始运算,所以a的值应为'2'。因此B选项正确。 6[单选题] 若fp已定义为指向某文件的指针,且没有读到该文件的末尾,则C语言函数feof(fp)的函数返回值是 A.EOFB.非0C.-1D.0 参考答案:D 参考解析:本题考查文件的定位,feof函数的用法是从输入流读取数据,如果到达文件末尾(遇文件结束符),eof函数值为非零值,否则为0,所以选项D正确。 7[单选题] 以下叙述中正确的是 A.只要适当地修改代码,就可以将do-while与while相互转换 B.对于“for(表达式1;表达式2;表达式3)循环体”首先要计算表达式2的值,以便决定是否开始循环 C.对于“for(表达式1;表达式2;表达式3)循环体”,只在个别情况下才能转换成while语句 D.如果根据算法需要使用无限循环(即通常所称的“死循环”),则只能使用while语句 参考答案:A 参考解析:B选项中,for语句中需要先求解先求解表达式1;C选项中,for语句使用最为灵活,它完全可以取代while语句;D选项中,对于死循环,也可以使用for语句。因此A选项正确。
2018年计算机二级考试C语言试题及答案(5)
2018年计算机二级考试C语言试题及答案(5) 1[单选题] 耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是( )。 A.提高耦合性降低内聚性有利于提高模块的独立性 B.降低耦合性提高内聚性有利于提高模块的独立性 C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度 D.内聚性是指模块问互相连接的紧密程度 参考答案:B 参考解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,所以A错误,B正确。耦合性是模块间互相连接的紧密程度的度量而内聚性是指一个模块内部各个元素问彼此结合的紧密程度,所以C与D错误。 2[单选题] 软件设计中划分模块的一个准则是( )。 A.低内聚低耦合 B.高内聚低耦合 C.低内聚高耦合 D.高内聚高耦合 参考答案:B 参考解析:一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。 3[单选题] 下列数据结构中,能够按照“先进后出”原则存取数据的是( )。 A.循环队列 B.栈 C.队列 D.二叉树 参考答案:B 参考解析:栈是按先进后出的原则组织数据的。队列是先进先出的原则组织数据。 4[单选题] 以下叙述中错误的是( )。 A.gets函数用于从终端读入字符串 B.getchar函数用于从磁盘文件读入字符 C.fput,函数用于把字符串输出到文件 D.fwrite函数用于以二进制形式输出数据到文件 参考答案:B 参考解析:本题考查字符处理函数和文件操作函数,属于基础知识,其中B选项getehar函数是用于从终端读入一个字符。 5[单选题] 以下选项中能表示合法常量的是( )。 A.1,200 B.1.5E2.0 C.'\' D."\007" 参考答案:D 参考解析:A选项中整型常量应表示为1200,不能包含“,”。B选项中E后面的指数必须为整数。C选项中转义字符以“\”开始,若要表示字符“\”,应写为“\\”。 6[单选题] 若有定义语句:char s[10]="1234567\0\0";则strlen(S)的值是( )。 A.7 B.8 C.9 D.10 参考答案:A 参考解析:strlen()函数在计算字符串长度时,遇到结束标识为止,且长度不包括结束标识。本题中字符串,从第一个字符开始,遇到第一个结束标识‘\0’为止,注意‘\0’不占字符串长度,所以字符串长度为7。因此A选项正确。 7[单选题] C源程序中不能表示的数制是( )。 A.十六进制 B.八进制 C.十进制 D.二进制 参考答案:D 参考解析:在C语言中整型常量可以用十进制、八进制和十六进制等形式表示,但不包括二进制,所以选择D。 8[单选题] 设有定义: int a=1,b=2,e=3; 以下语句中执行效果与其他三个不同的是( )。 A.if(a>b) c=a,a=b,b=c; B.if(a>b) {e=a,a=b,b=e;} C.if(a>b)e=a;a=b;b=C; D.if(a>b) {c-7-a;a=b;b=e;} 参考答案:C 参考解析:由于a小于b,所以所有选项中的条件都为假,c选项中实际执行了a=b;b=c;两个操作。而A、B、D选项由于条件不成立.所以什么也没有做,所以选择C选项。 9[单选题] 软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是( )。 A.编译程序 B.操作系统 C.教务管理系统 D.汇编程序 参考答案:C 参考解析:编译软件、操作系统、汇编程序都属于系统软件,只有C教务管理系统才是应用软件。