二级C语言笔试模拟18.docx
《二级C语言笔试模拟18.docx》由会员分享,可在线阅读,更多相关《二级C语言笔试模拟18.docx(18页珍藏版)》请在冰豆网上搜索。
二级C语言笔试模拟18
二级C语言笔试模拟18
一、选择题
1、下列叙述中错误的是( )。
A)一种数据的逻辑结构可以有多种存储结构
B)数据的存储结构与数据的处理效率无关
C)数据的存储结构与数据的处理效率密切相关
D)数据的存储结构在计算机中所占的空间不一定是连续的
2、软件按功能可以分为:
应用软件、系统软件和支撑软件(或工具软件),下面属于系统软件的是( )。
A.编辑软件 B.操作系统
C.教务管理系统 D.浏览器
3、软件工程的理论和技术性研究的内容主要包括软件开发技术和( )。
A)消除软件危机 B)软件工程管 C)程序设计自动化 D)实现软件可重用
4、下列选项中不属于面向对象程序设计特征的是
A)继承性 B)多态性
C)类比性 D)封装性
5、结构化程序设计主要强调的是( )。
A)程序的规模 B)程序的效率
C)程序设计语言的先进性 D)程序的易读性
6、设有如下3个关系表R、S、T。
下列操作中正确的是
A)T=R∩S B)T=R∪S C)T=R×S D)T=R/S
7、结构化程序设计的核心和基础是( )。
A)结构化分析方法 B)结构化设计方法 C)结构化设计理论 D)结构化编程方法
8、关系数据库管理系统能实现的专门关系运算包括( )。
A)排序、索引、统计 B)选择、投影、连接
C)关联、更新、排序 D)显示、打印、制表
9、下列对于软件测试的描述中正确的是( )。
A)软件测试的目的是证明程序是否正确
B)软件测试的目的是使程序运行结果正确
C)软件测试的目的是尽可能多地发现程序中的错误
D)软件测试的目的是使程序符合结构化原则
10、有以下程序:
main()
{inta=[10]{1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;
printf("%d\n",*p+*q);
}
程序运行后的输出结果是______。
A)16 B)10 C)8 D)6
11、下列叙述错误的是( )。
A)在C语言中的保留字必须小写
B)变量的存储类型决定了变量的存储位置及其生存期
C)宏定义以#define开头,行未必须加分号
D)在C语言中的注释行可以出现在程序的任何位置
12、可以在C语言程序中用做用户标识符的一组标识符是( )。
A)void
123
BBN
B)aa
abc
cas
C)as+b3
-123
If
D)6f
Do
SIG
13、表示关系a≤b≤c的C语言表达式为( )。
A)(a<=b)&&(b<=c)
B)(a<=b)and(b<=c)
C)(a<=b<=c)
D)(a<=b)&(b<=c)
14、设intx=2,y=1;表达式(!
x||y--)的值是( )。
A.0 B.1 C.2 D.-1
15、以下程序段的输出结果是
inta=1234;
printf("%2d\n",a);
A)12 B)34 C)1234 D)提示出错、无结果
16、若有条件表达式(exp)?
a++:
b--,则以下表达式中能完全等价于表达式(exp)的是
A)(exp==0) B)(exp!
=0) C)(exp==1) D)(exp!
=1)
17、下列程序的输出结果是( )
#include<stdio.h>
main()
{inta=3,b=2,c=1;
if(a<b)
if(b<0)c=0;
elsec++;
printf("%d\n",c);
}
A)0 B)2 C)1 D)3
18、两次运行下列的程序,如果从键盘上分别输入3和1,则输出结果是( )。
main()
{ intx;
scanf("%d",&x);
if(x++>2)printf("%d",x);
elseprintf("%d\n",x--);
}
A)4和2 B)4和1 C)4和0 D)3和1
19、fseek函数的正确调用形式是
A)fseek(文件指针,起始点,位移量) B)fseek(文件指针,位移量,起始点)
C)fseek(位移量,起始点,文件指针) D)fseek(起始点,位移量,文件指针)
20、下列循环体的执行次数是( )。
#include<stdio.h>
main()
{ inti,j;
for(i=0,j=1;i<j+1;i+=1,j--)
printf("%d\n",j);
}
A)3 B)2 C)1 D)0
21、下列关于宏的叙述中正确的是( )。
A.宏名必须用大写字母表示 B.宏定义必须位于源程序中所有语句之前
C.宏替换没有数据类型限制 D.宏调用比函数调用耗费时间
22、有以下程序:
maln()
{ inti,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
23、有以下程序(提示:
程序中fseek(fp,-2L*sizeof(int),SEEK_END);语句的作用是使位置指针从文件末尾向前移2*sizeof(int)字节):
#include <stdio.h>
main()
{ FILE*fp;inti,a[4]={1,2,3,4},b;
fp=fopen("data.dar","wb");
for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp);
fclose(fp);
fp=fopen("data.dar","rb");
fseek(fp,-2L*sizeof(int),SEEK_END);
fread(&b,sizeof(int),1,fp); /*从文件中读取sizeof(int)字节的数据到变量b中*/
fclose(fp);
printf("%d\n",b);
}
执行后的输出结果( )。
A)2 B)1 C)4 D)3
24、有下列程序:
intfun(intn)
{if(n==1)}return1;
else
return(n+fun(n-1));
}
main()
{intx;
scanf("%d",&x);x=fun(x);printf("%d\n",x);
}
执行程序时,给变量x输入10,程序的输出结果是( )。
A.55 B.54 C.65 D.45
25、下列程序执行后的输出结果是
voidrune(int*a,intb[])
{ b[0]=*a+6;}
main( )
{ inta,b[5];
a=0;b[0]=3;
fune(&a,b);
printf("%d\n",b[0]);
}
A)6 B)7 C)8 D)9
26、以下程序的输出结果是( )。
#include <stdio.h>
main()
{ intn=4;
while(n--)printf("%d ",--n);
}
A)2 0 B)3 1 C)3 2 1 D)2 1 0
27、下列说法正确的是( )。
A)在C语言中,可以使用动态内存分配技术,定义元素个数可变的数组
B)在C语言中,数组元素的个数可以不确定,允许随机变动
C)在C语言中,数组元素的数据类型可以不一致
D)在C语言中,定义了一个数组后,就确定了它所容纳的元素的个数
28、下列程序执行的输出结果是( )。
#inClUde<stdio.h>
main()
{ chara[2][4];
strcpy(a,"are");strcpy(a[1],"you");
a[0][3]='&';
printf("%s\n",a);
}
A)are&you B)you C)are D)&
29、有以下程序:
#include<stdio.h>
#definef(x)x*x*x
main()
{inta=3,s,t;
s=f(a+1);t=f((a+1));
printf("%d,%d\n",s,t);
}
程序运行后的输出结果是( )。
A.10,64 B.10,10 C.64,10 D.64,64
30、以下不能对二维数组a进行正确初始化的语句是
A)inta[2][3]={0};
B)inta[][3]={{1,2},{0}};
C)inta[2][3]={{1,2},{3,4},{5,6}};
D)inta[][3]={1,2,3,4,5,6};
31、根据下列的定义,能打印出字母P的语句是( )
structstu{charname[10];
intage;
};
stmctstus[10]={"John",11,
"Paul",12,
"Mary",11,
"adam",12
}:
A)printf("%c",s[3].name); B)printf("%c",s[3].name[1]);
C)printf("%c",s[2].name[11]); D)printf("%c",s[1].name[0]);
32、已知有结构体:
structsk
{ inta;
floatb;
}data,*p;
若有p=&data,则对data的成员a的正确引用是( )。
A)(*p).data.a B)(*p).a; C)p->data.a D)p.data.a
33、有以下程序:
#include<stdio.h>
intfun(int*k)
{intb=0;
b=*k+b:
return(b);}
main()
{inta[10]={1,2,3,4,5,6,7,8},i;
for(i=2;i<4;i++){printf("%d",fun(&a[i]));}
printf("\n");
}
程序运行后的输出结果是( )。
A)1012 B)810 C)34D)1028
34、fseanf函数的正确调用形式是
A)fseanf(fp,格式字符串,输出表列);
B)fseanf(格式字符串,输出表列,fp);
C)fscanf(格式字符串,文件指针,输出表列);
D)fscanf(文件指针,格式字符串,输入表列);
35、变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。
若要求将a的高4位取反,低4位不变,所要执行的运算是
A)a^b B)a|b C)a&b D)a<<4
36、设x=011050,则x=x&01252的值是( )。
A)0000001000101000 B)1111110100011001
C)0000001011100010 D)1100000000101000
37、若有以下语句
typedefstructS
{intg;charh;}T;
以下叙述中正确的是( )。
A)可用S定义结构体变量 B)可用T定义结构体变量
C)S是struct类型的变量 D)T是structS类型的变量
38、以下选项中叙述错误的是( )。
A)C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值
B)在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内
C)C程序函数中定义的自动变量,系统不自动赋确定的初值
D)C程序函数的形参不可以说明为static型变量
39、以下程序运行后的输出结果是
#include<stdio.h>
main()
{ FILE*fp;charstr[10];
fp=fopen("myfile.dat","w");
fputs("abc",fp);fclose(fp);
fp=fopen("myfile.data","a++");
fprintf(fp,"%d",28);
rewind(fp);
fscanf(fp,"%s",str);puts(str);
fclose(fp);
}
A)abc B)28c C)abc28 D)因类型不一致而出错
40、以下程序的输出结果是( )。
#include <stdio.h>
charcchar(char eh)
{ if(ch>='A,&&ch<='Z') ch=ch-'A'+'a';
returnch;
}
main()
{ chars[]="ABC+abc=defDEF",*p=s;
while(*p)
{ *p=cchsr(*p); p++;}
printf("%s\n",s);
}
A)abc+ABC=DEFdef B)abc+abc=defdef
C)abcABCDEFdef D)abcabcdefdef
二、填空题
41、在算法的4个特性中,算法必须能在执行有限个步骤之后终止指的是算法的______特性。
42、按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。
43、 在长度为n的有序线性表中进行二分查找,最坏的情况下,需要的比较次数为 。
44、在面向对象方法中,对象之间进行通信的构造称为______。
45、软件维护活动包括以下几类:
改正性维护、适应性维护、 维护和预防性维护。
46、若变量a,b已定义为血类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的的输出语句_______。
47、若a的值为1,则表达式!
a‖++a的值是______。
48、以下程序运行后的输出结果是 。
#include<string.h>
main()
{ charch[]="abc",x[3][4];inti
for(i=0;i<3;i++)strcpy(x[i],ch);
for(i=0;i<3;i++)printf("%s",&x[i][i]);
printf("\n");
}
49、若x和a均是血型变量,则计算完x=(a=4,6*2)后的x值为______。
50、表达式pow(2.8,sqrt(float(x)))值的数据类型为______型。
51、若有定义:
intk;,以下程序段的输出结果是______。
for(k=2;k<6;k++,k++)printf("##%d",k);
52、 下列程序的输出结果是 。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<3;y++)
z=(*(ptr+y)<x)?
*(ptr+y):
x;
printf("%d\n",z);
}
53、 有以下程序:
floatf1(floatn)
{ returnn*n; }
floatf2(floatn)
{ return2*n; }
main()
{ float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;
p1=f1;p2=f2;
y1=p2(p1(2.0));
t=P1;p1=p2;p2=t;
y2=p2(p1(2.0));
printf("%3.0f,%3.0f\n",y1,y2);
}
程序运行后的输出结果是 。
54、下列程序的输出结果是______。
main()
{inti,sum;
for(i=1;i<7;i++)
sum+=i;
primf("%d",sum);
}
55、在对文件进行操作的过程中,若要求文件的位置指针重新指向文件的开头,应当调用的函数是 函数。
答案:
一、选择题
1、B
[解析]数据的存储结构分为顺序结构和链式结构,一个数据的逻辑结构可以有多种存储结构。
顺序结构中数据元素所占的存储空间是连续的,而链式存储结构中,数据元素所占的存储空间不一定是连续的。
数据的存储结构与数据的处理效率密切相关。
2、B
[解析]编辑软件和浏览器属于工具软件,教务系统是应用软件。
3、B
[解析]软件工程的目标是:
在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。
基于这一目标,软件工程的理论和技术性研究的内容主要包括软件开发技术和软件工程管理。
4、C
[解析]面向对象程序设计的3个主要特征是封装性、继承性和多态性。
5、D
[解析]程序不光是编写完就结束了,为了测试和维护程序,往往还有其他人阅读和跟踪程序,因此,程序设计的风格应该强调简单和清晰,即程序的易读性,“清晰第一,效率第二”。
6、C
[解析]本题考查数据库的关系代数运算。
R表中只有一个域名A,有两个记录(也叫元组),分别是m和n;S表中有两个域名,分别是B和C,其所对应的记录分别为1和3。
注意观察表T,它是由R的第一个记录依次与S的所有记录组合,然后再由R的第二个记录与S的所有记录组合,形成的一个新表。
上述运算恰恰符合关系代数的笛卡儿积运算规则。
关系代数中,笛卡儿积运算用“×”来表示。
因此,上述运算可以表示为T=R×S。
7、C
[解析]结构化程序设计的核心和基础是结构化设计理论,其中包括:
结构化分析方法、结构化设计方法和结构化编程方法。
8、B
[解析]关系数据库管理系统的专门关系运算包括选择运算、投影运算和连接运算。
9、C
[解析]软件测试是为了尽可能多地发现程序中的错误,尤其是发现至今尚未发现的错误。
10、B
[解析]p指向了a[3]的地址,且*p=a[3]=4,又有*q=p-2;则q指向了a[5]的地址,且*q=a[5]=6,最后输出为10。
11、C
[解析]本题涉及C语言最基本的4个知识点:
①C语言的保留字必须小写:
②变量的存储类型不同,其存储位置和生存期也不一样;③C语言允许其注释部分出现在程序中的任何位置;④宏定义以#define开头,行末不需要加分号。
12、B
[解析]C语言规定,标识符是由字母、数字或下画线组成,并且它的第一个字符必须是字母或者下画线。
13、A
[解析]本题考查逻辑与运算符&&。
在C语言中使用运算符“&&”连接两个表达式,也可以表示逻辑与运算符。
在C语言中不允许出现a<=b<=c这种格式。
14、B
[解析]因x为2.所以!
x表达式值为0,因y为1,y--表达式的值为1然后自减1,y为0,所以!
x||y--表达式的值为1。
15、C
[解析]在C语言中,对于不同类型的数据用不同的格式字符输出,其中,“%d”是按整型数据的实际长度输出;在“%md”中,m为指定的输出字段的宽度,如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
16、B
[解析]条件运算符要求有3个操作对象,称三日(元)运算符,它是C语言中唯一的一个三目运算符。
条件表达式的一般形式为:
表达式17表达式2:
表达式3。
其求解顺序是:
先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。
若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值,注意++、--的用法。
17、C
[解析]本题考查if语句。
第一个if语句,先判断条件,发现a<b不成立,不再执行下列的语句,直接执行最后的printf输出语句,然后结束程序,整个过程c的值没有发生变化。
18、A
[解析]本题考查ifelse语句。
首先scanf函数通过键盘读入x的值。
当x=3时,第一个if语句,先判断条件,取x的值3和2比较,然后将x的值加1,发现条件成立,执行下列的printf语句,输出x的值4。
当x=1时,第一个if语句,先判断条件,取x的值1和2比较,然后将x的值加1(x的值变为2),发现条件不成立,执行下列的else语句,先输出x的值2,再将x的值减1。
19、B
[解析]本