二级C语言模拟653.docx
- 文档编号:18152213
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:23
- 大小:25.83KB
二级C语言模拟653.docx
《二级C语言模拟653.docx》由会员分享,可在线阅读,更多相关《二级C语言模拟653.docx(23页珍藏版)》请在冰点文库上搜索。
二级C语言模拟653
二级C语言模拟653
(总分:
160.50,做题时间:
90分钟)
一、选择题(总题数:
40,分数:
60.50)
1.有以下程序(strcat函数用以连接两个字符串)
#include<stdio.h>
#include<string.h>
main()
{chara[20]="ABCD/0EFG/0",b[]="IJK";
strcat(a,b);printf("%s/n",a);
}
程序运行后的输出结果是______。
(分数:
1.00)
A.ABCDE/0FG/0IJK
B.ABCDIJK √
C.IJK
D.EFGIJK
解析:
[解析]C语言中以字符"/0"作为字符串结束的标志。
本题中字符串a实际为“ABCD”,函数strcat将串a和串b连接,所以选B。
2.以下for循环体的执行次数是______。
#include<stdio.h>
main()
{inti,j;
for(i=0,j=i;i<=j+1;i+=2,j--)printf("%d/n",i);
}
(分数:
2.50)
A.3
B.2
C.1 √
D.0
解析:
3.有以下程序:
#include<stdio.h>
main()
{
int*p,x=100;
p=&x;x=*p+10;
printf("%d/n",x);
}
程序运行后的输出结果是______。
(分数:
1.00)
A.110 √
B.120
C.100
D.90
解析:
[解析]程序执行过程为:
定义指针p,指向变量x,x=(*p)+10=110,输出110,A选项正确。
4.有下列程序:
main()
{intk=5;
while(--k)printf("%d",k=1);
printf("/n");
}
执行后的输出结果是______。
(分数:
1.00)
A.1 √
B.2
C.4
D.死循环
解析:
[解析]在程序语句中,k的初始值为5,进行第1次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出k,此时k的值变为1。
程序执行第2次循环时,k自减1变为0,为假,退出while循环语句。
所以程序的最后结果为1。
5.有以下程序:
#include<stdio.h>
#include<string.h>
structA
{
inta;
charb[10];
doublec;
};
voidf(structAt);
main()
{
structAa={1001,"ZhangDa",1098.0};
f(a);
printf("%d,%s,%6.lf/n",a.a,a.b,a.c);
}
voidf(structAt)
{
t.a=1002;
strcpy(t.b,"ChangRong");
t.c=1202.0;
}
程序运行后的输出结果是______。
(分数:
1.00)
A.1002,ZhangDa,1202.0
B.1002,ChangRong,1202.0
C.1001,ChangRong,1098.0
D.1001,ZhangDa,1098.0 √
解析:
[解析]本题考查结构体的相关操作以及传值、传址的区别,该题中调用f函数后,会生成参数a的一个副本,而不会改变a的值,所以a值维持原值,选项D正确。
6.以下程序段完全正确的是______。
(分数:
1.00)
A.int*p;scanf("%d",&p);
B.int*p;scanf("%d",p);
C.intk,*p=&k;scanf("%d",p); √
D.intk,*p;*p=&k;scanf("%d",p);
解析:
[解析]scanf函数参数列表,需要为指针,这个指针必须指向变量,所以答案选择C。
7.下列关于信息系统的叙述中,错误的是______。
(分数:
2.50)
A.广播电视是一种双向的、点到多点的信息交互系统 √
B.网络聊天是一种双向的、以信息交互为主要目的的系统
C.电话是一种双向的、点对点的、以信息交互为主要目的的系统
D.雷达是一种以感测和识别为主要目的的系统
解析:
[解析]广播/电视是一种单向的、点对多点(面)的以信息传递为主要目的的系统。
8.以下叙述中正确的是______。
(分数:
2.50)
A.关系运算符两边的运算对象可以是C语言中任意合法的表达式 √
B.在C语言中,逻辑真值和假值分别对应1和0
C.对于浮点变量x和y,表达式:
x==y是非法的,会出编译错误
D.分支结构是根据算术表达式的结果来判断流程走向的
解析:
[解析]逻辑真值和假值分别对应非零和零;对于浮点变量x和y,表达式“x==y”是合法的;分支结构是根据表达式的真假来判断流程走向的。
所以选择A。
9.下列程序输出结果是______。
#include<stdio.h>
main()
{chara[]={"a","b","c","d","e","f","/0"};
inti,j;
i=sizeof(a);
j=strlen(a);
printf("%d,%d",i,j);
}
(分数:
2.50)
A.7,7
B.7,6 √
C.6,6
D.6,7
解析:
[解析]本题要注意sizeof()和strlen()的区别,sizeof()函数的功能是返回字符串所占的字节数,strlen()函数的功能是返回字符串长度,"/0"是一个转义符,它占存储空间,但不计入串的长度。
10.有以下程序:
#include<stdio.h>
main()
{
inta=1,b=2,c=3,x;
x=(a^b)&c;
printf("%d/n",x);
}
程序运行后的输出结果是______。
(分数:
1.00)
A.3 √
B.1
C.2
D.0
解析:
[解析]本题考查位运算符以及相关运算,^为按位或,&为按位与,那么a^b为3,再与c按位与仍然为3,所以答案为A选项。
11.软件设计中划分模块的一个准则是______。
(分数:
1.00)
A.低内聚低耦合
B.高内聚低耦合 √
C.低内聚高耦合
D.高内聚高耦合
解析:
[解析]一般较优秀的软件设计应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,因此本题答案为B。
12.若有以下程序段:
doublex=5.16894;
printf("%f/n",(int)(x*1000+0.5)/(double)1000);
则程序段的输出结果是______。
(分数:
1.00)
A.5.170000
B.5.175000
C.5.169000 √
D.5.168000
解析:
[解析]%f的输出格式是以带小数点的数学形式输出浮点数。
首先计算x*1000,结果为5168.94,然后+0.5,结果为5169.44;然后进行强制类型转换,转换成整型为5169,然后除以双精度数据1000,结果也为双精度数据5.169,输出时按照%f的格式输出,所以输出结果为5.169000。
13.设有定义intk=1,m=2;floatf=7;,则以下选项中错误的表达式是______。
(分数:
1.00)
A.k=k>=k
B.-k++
C.k%int(f) √
D.k>=f>m
解析:
[解析]强制类型转换的一般形式为:
(类型名)(表达式),而选项C中只给表达式加了括号,并没有绐类型名也加上括号,所以选项C的表达式错误。
14.程序中对fun函数有如下说明:
void*fun();
此说明的含义是______。
(分数:
2.00)
A.fun函数无返回值
B.fun函数的返回值可以是任意的数据类型
C.fun函数的返回值是无值型的指针类型 √
D.指针fun指向一个函数,该函数无返回值
解析:
[解析]C语言中函数的定义分为有参函数的定义和无参函数的定义。
无参函数的定义形式为:
类型标识符函数名()
{说明部分
语句
}
有参函数的定义有两种形式:
类型标识符函数名(形式参数列表)
形式参数说明
{说明部分
语句
}
或
类型标识符函数名(类型名形参1,类型名形参2,…)
{说明部分
语句
}
其中函数名为用户定义的C语言的合法标识符,其前面的类型标识符用来说明函数值的类型,可以是C允许的任何类型,如int、char、float、double和指针类型等。
当函数值为整型时类型标识符可以省略,如果函数没有返回值,类型标识符可以是void型。
当函数的形参多于一个时,各个形参之间用逗号分隔。
15.设有以下说明和语句:
intx[3][4],(*p)[4];p=a;,则与表达式*(*p+2)等价的选项是______。
(分数:
1.00)
A.a[0][2] √
B.*(a+2)[0]
C.(*a+2)[0]
D.a[2][0]
解析:
[解析](*p)[4]是指向有4个元素的数组指针,a为二位数组首地址,赋值给数组指针p。
题目中表达式*(*p+2)是对数组a第1行第3列元素的引用。
a[0][2]是数组第1行第3列元素,与题目中等价,A选项正确。
*(a+2)[0]是对数组第3行第1列元素的引用,B选项错误。
(*a+2)[0]是对数组第1行第3列元素的引用,C选项错误。
a[2][0]是数组第3行第1列元素,D选项错误。
16.下面属于黑盒测试方法的是______。
(分数:
1.00)
A.基本路径测试
B.等价类划分 √
C.判定覆盖测试
D.语句覆盖测试
解析:
[解析]等价类划分法是一种典型的、重要的黑盒测试方法,它将程序所有可能的输入数据(有效的和无效的)划分成若干个等价类进行测试。
基本路径测试、判定覆盖测试和语句覆盖测试都属于白盒测试。
17.以下程序依次把从终端输入的字符存放到f文件中,用#作为结束输入的标识,则在横线处应填入的是______。
#include<stdio.h>
main()
{FILE*fp;
charch;
fp=fopen("fname","w");
while((ch=getchar())!
="#")fputc(______);
fclose(fp);
}
(分数:
1.00)
A.ch,"fname"
B.fp,ch
C.ch
D.ch,fp √
解析:
[解析]本题考查fpute函数,该函数将字符ch写到文件指针fp所指向的文件的当前写指针的位置。
函数格式:
intfpute(intn,File*fp),答案为D选项。
18.有以下程序:
#include<stdio.h>
#include<stdlib.h>
intfun(intn)
{int*p;
p=(int*)malloc(aizeof(int));
*p=n;return*p;
}
main()
{inta;
a=fun(10);printf("%d/n",a+fun(10));
}
程序的运行结果是______。
(分数:
2.00)
A.0
B.10
C.20 √
D.出错
解析:
[解析]malloc(sizeof(int))的作用是开辟一个长度为sizeof(int)的存储空间,并通过强制类型转换(int*)将此存储空间的地址赋给一个整型的指针变量p,然后执行语句*p=n,使得*p的值为10,并通过return返回此值,即a的值为10。
最后在主函数中通过printf()函数输出a+fun(10)=10+10=20。
19.若有定义:
inta[10];,则对数组a元素的正确引用是______。
(分数:
2.50)
A.a[10]
B.a[3.5]
C.a(5)
D.a[10-10] √
解析:
[解析]本题考查了对一维数组引用的基本语法问题,读者需要清楚地了解引用一维数组的基本格式。
20.以下是while语句的基本形式:
while(表达式){语句;}
其中“表达式”______。
(分数:
2.50)
A.必须是逻辑表达式
B.必须是关系表达式
C.必须是逻辑表达式或关系表达式
D.可以是任意合法的表达式 √
解析:
[解析]本题考查while表达式。
while(表达式)中的表达式可以为任何合法的表达式,一般情况下为逻辑、条件表达式,需要注意的是,当等号(==)误写为赋值号(=)时不会报错的,但是其值恒为1。
21.有如下程序:
#include<stdio.h>
#include<string.h>
main()
{
char*str="0/n0123/4":
printf("%d",strlen(str));
}
程序运行后的输出结果是______。
(分数:
1.00)
A.3
B.6
C.8
D.7 √
解析:
[解析]strlen()函数求得参数中字符串的长度(不包括字符串结束符"/0")。
程序定义一个字符指针变量str,并使用字符串“0/n0123/4”初始化,然后将str传给strlen()函数,用strlen()函数计算该字符串的长度,该字符串中的字符分别是:
"0"、"/n"、"0"、"1"、"2"、"3"、"/4"、"/0"。
其中"/4"表示菱形符号"◆"。
除了"/0",其他字符都属于strlen()函数的计算字符,结果为7。
故本题答案为D选项。
22.以下不是合法C语言转义字符的是______。
(分数:
1.00)
A."/c" √
B."/a"
C."/h"
D."/r"
解析:
[解析]C语言中,‘/a’表示响铃,‘/b’表示退格,‘/r’表示回车不换行,故答案为A选项。
23.有以下程序:
#include<stdio.h>
#defineN4
voidfun(inta[][N],intb[])
{inti;
for(i=0;i<N;i++)b[i]=a[i][i];
}
main()
{intx[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;
fun(x,y);
for(i=0;i<N;i++)printf("%d,",y[i]);
printf("/n");
}
程序的运行结果是______。
(分数:
2.50)
A.1,0,7,0, √
B.1,2,3,4,
C.1,4,5,9,
D.3,4,8,10,
解析:
[解析]该程序首先在定义变量时,对二维数组x[][N]进行赋值操作;调用函数fun,函数fun的功能是将=维数组中的a[0儿0]、a[1][1]、a[2][2]和a[3][3]赋值给一维数组。
最后将输出一维数组1,0,7,0,。
24.以下叙述中错误的是______。
(分数:
1.00)
A.用户定义的函数中可以没有return语句
B.用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值 √
C.用户定义的函数中若没有return语句,则应当定义函数为void类型
D.函数的return语句中可以没有表达式
解析:
[解析]本题重点考查函数返回值的相关知识,函数的值只能通过return语句返回主调函数,在函数中允许有多个return语句,但每次调用只能有一个return语句被执行,因此只能返回一个函数值。
不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。
因此B选项正确。
25.设有以下定义:
typedefunion
{longi;intk[5];charc;}DATE;
srtuctdate
{intcat;DATEcow;doubledog;}too;
DATEmax;
则下语句的执行结果是()
printf("%d,"sizeof(structdate))+sizeof(max));
(分数:
1.00)
A.25
B.30 √
C.18
D.8
解析:
26.在下列选项中,没有构成死循环的程序段是_____。
(分数:
2.00)
A.inti=100;while
(1){i=i%100+1;if(i>100)break;}
B.for(;;);
C.intk=1000;do{++k;}while(k>=1000); √
D.ints=36:
while(s);--s;
解析:
27.有以下程序:
#include<stdio.h>
main()
{inta[]={2,3,5,4},i;
for(i=0;i<4;i++)
switch(i%2)
{case0:
switch(a[i]%2)
{case0:
a[i]++;break;
case1:
a[i]--;
}break;
case1:
a[i]=0;
}
for(i=0:
i<4;i++)printf("%d",a[i]);printf("/n");
}
程序运行后的输出结果是______。
(分数:
2.50)
A.0304
B.2050
C.3344
D.3040 √
解析:
[解析]第一次循环i为0,i%2为0,执行switch(a[0]%2)中的case0语句,a[0]++,a[0]的值变成3;第二次循环i的值为1,i%2为1,执行case1:
a[i]=0;所以a[1]的值变成0;第三次循环i的值为2,i%2为0,执行switch(a[2]%2)中的case1语句,a[2]--,a[2]的值变成4;第四次循环i的值为3,i%2为1,执行case1:
a[i]=0;所以a[3]的值变成0。
28.数据库设计中反映用户对数据要求的模式是______。
(分数:
1.00)
A.内模式
B.概念模式
C.外模式 √
D.设计模式
解析:
[解析]数据库系统的三级模式是概念模式、外模式和内模式。
概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户的公共数据视图。
外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,因此选择C。
内模式又称物理模式,它给出了数据库物理存储结构与物理存取的方法。
29.有以下程序:
include<stdio.h>
main()
{inti,a;
for(i=0;i<=10;i++)a=i;
printf("%d,%d/n",i,a);
}程序的运行结果是______。
(分数:
1.00)
A.11,10 √
B.10,10
C.10,11
D.11,11
解析:
[解析]当i=10时循环继续执行,i值赋值给变量a。
赋值完成后执行i=i+1,此时i=11,判定是否满足条件i<=10,不满足条件,结束循环。
循环结束时,printf()是从右到左结合的,输出i,a的值为11,10,答案为A选项。
30.对下列二叉树进行中序遍历的结果是______。
(分数:
1.00)
A.ACBDFEG √
B.ACBDFGE
C.ABDCGEF
D.FCADBEG
解析:
31.以下叙述中正确的是______。
(分数:
2.00)
A.语言中的关键字不能作变量名,但可以作为函数名
B.标识符的长度不能任意长,最多只能包含16个字符
C.标识符总是由字母、数字和下画线组成,且第一个字符不得为数字 √
D.用户自定义的标识符必须”见名知义”,如果随意定义,则会出编译错误
解析:
[解析]C语言中的关键字即不能做变量名也不能做用户函数名,所以A错误。
标识符的命名规则,即由下画线字母和数字组成,且必须以下画线和字母开始,也不能和关键字一致。
不同C语言规定标识符的有效长度可能会不同,但没有限制最大长度,所以B错误。
用户定义的标识符只要满足标识符命名规则没有特殊要求,不必一定“见名知义”,所以D错误。
32.若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为
(分数:
1.00)
A.0 √
B.1
C.-1
D.一个非0值
解析:
[解析]文件尾测试函数feof()的应用,读取文件时,当文件中的数据全部读完后,文件位置指针将位于文件的结尾。
此时如果读数据,将会出现错误。
为了保证读写数据的正确性,需要进行文件尾测试,文件尾测试使用函数feof(),它的功能是测试fp指向的文件是否到达文件尾。
若到达文件尾,返回值为非0,否则返回值为0。
在本题中fP指向的某文件还没有到了文件尾,因此返回0。
33.设定义以下结构体,结构体变量p的出生年份赋值正确的语句是______。
structst
{intx;
inty;
intz;
};
structworker
{charname[20];
charsex;
structstbirth;
)p;
(分数:
2.00)
A.x=1987
B.birth.x=1987;
C.birth.x=1987; √
D.x=1987;
解析:
34.设有以下定义:
typedefunion
{longi;intk[5];charc;}DATE;
srtuctdate
{intcat;DATEcow;doubledog;}too;
DATEmax;
则下语句的执行结果是()
printf("%d,"sizeof(structdate))+sizeof(max));
(分数:
1.00)
A.25
B.30 √
C.18
D.8
解析:
35.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定.这属于算法的______。
(分数:
2.00)
A.正当性
B.可行性
C.确定性 √
D.有穷性
解析:
[解析]算法具有5个特性:
有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出。
36.请选出以下程序的输出结果______。
#include<stdio.h>
sub(x,y,z)
intx,y,*z;
{*z=y-x:
}
main(){
inta,b,c;
sub10,5,&a);sub(7,a,&b);sub(a,b,&c);
printf("%d,%d,/%d/n",a,b,c);
}
(分数:
2.00)
A.5,2,3
B.-5,-12,-7 √
C.-5,-12,-17
D.5,-2,-7
解析:
[解析]sub()函数的作用是将形参y和x的差赋给了z指向的那
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 模拟 653
![提示](https://static.bingdoc.com/images/bang_tan.gif)