ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:24.22KB ,
资源ID:8545849      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8545849.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(二级C语言分类模拟题508.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

二级C语言分类模拟题508.docx

1、二级C语言分类模拟题508二级C语言分类模拟题508(总分:52.00,做题时间:90分钟)一、选择题(总题数:35,分数:52.00)1.下列排序方法中,最坏情况下比较次数最少的是_。(分数:2.00)A.冒泡排序B.简单选择排序C.直接插入排序D.堆排序解析:解析 冒泡排序、直接插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是nlog 2 n,因此本题答案为D。2.以下选项中,能用作数据常量的是_。(分数:2.50)A.115LB.0118C.1.5e1.5D.o115解析:解析 A选项中115L表示115是长整型数据,合法。B选项是八

2、进制常量的表示方法,但是在八进制中不能含有数字8,因此B选项错误。C选项中e后面应该是整数,不能是小数(1.5),因此C选项错误。D选项中八进制常量应该是数字“0”开始,而不是字母“o”开始。故本题答案为A。3.有以下程序: #includestdio.h main() int a=1,b=2; for(;a8;a+)b+=a;a+=2; printf(%d,%d/n,a,b); 程序运行后的输出结果是_。(分数:1.00)A.9,18B.8,11C.7,11D.10,14解析:解析 第一次循环a的值为1,满足条件,执行b+=a与a+=2,则b的值变为3,a的值变为3。执行a+,a的值为4,满

3、足条件进入第二次循环,执行完循环体后b的值为7,a的值为6。执行a+,a的值为7,满足条件进入第三次循环,执行完循环体后b的值为14,a的值为9。执行+,a的值变为10,不满足条件,循环结束。所以选择D选项。4.输出语句:printf(%d/n,11+011);的输出结果是_。(分数:1.00)A.20B.22C.022D.021解析:解析 printf(%d/n,11+011),11为十进制,011为八进制形式,打印格式%d表示十进制格式输出,因此,先将八进制数转化为十进制,011(8)=811+180=9,相当于printf(%d/n,11+9),故答案为20,A选项正确。5.设有如下定义

4、: struct int n; char c; a2,*p=a; 则以下错误引用结构体成员n的是_。(分数:1.00)A.(* a)-nB.a0.nC.p-nD.(* p).n解析:解析 若已定义了一个结构体变量和一个同一结构体类型的指针变量,并使该指针指向同类型的变量,则可用以下3种形式来引用结构体变量中的成员,其中结构体变量名也可以是已定义的结构体数组的数组元素:结构体变量名成员名;指针变量名-成员名;(*指针变量名)成员名。题目中a为数组名是地址常量,不是指针变量,A选项引用错误。a0为变量名,B选项引用正确。p为指针,且正确的指向结构体变量,C选项引用正确。D选项符合第三种引用方式,引

5、用正确。6.以下程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。 #includestdio.h void sort(int a,int n) int i,j,t; for(i=0;in-1;i+) for(j=i+1;jn;j+) if(aiaj) t=ai;ai=aj;aj=t; main() int a10=1,2,3,4,5,6,7,8,9,10),i; sort(&a1,7); for(i=0;i10;i+) printf(%d,ai); 程序运行后的输出结果是_。(分数:2.00)A.1,2,3,4,5,6,7,8,9,10,B.10,9,8,7,6,5,4,3,

6、2,1,C.1,8,7,6,5,4,3,2,9,10,D.1,2,10,9,8,7,6,5,4,3,解析:7.程序调试的任务是_。(分数:1.00)A.设计测试用例B.验证程序的正确性C.发现程序中的错误D.诊断和改正程序中的错误解析:解析 程序调试的主要任务是改正程序中的错误,而软件测试是发现错误。8.有以下程序: #includestdio.h main() char ch=uvwxyz,*pc; pc=ch; printf(%c/n,*(pc+5); 程序运行后的输出结果是_。(分数:1.00)A.zB.0C.元素ch5的地址D.字符y的地址解析:解析 语句pe=ch;使得指针变量指向字

7、符数组ch的首地址,即指向字符u。则pe+5指向的是字符向后移动5位,指向字符z。所以输出的*pe+5的值即为z。因此A选项正确。9.对于基类型相同的两个指针变量之间,不能进行的运算是_。(分数:1.00)A.B.=C.+D.-解析:10.有以下程序: #includestdio.h double f(double x); main() double a=0; int i; for(i=0;i30;i+=10)a+=f(double)i); printf(%3.0f/n,a); double f(double x) return x*x+1; 程序运行后的输出结果是_。(分数:1.00)A.5

8、00B.401C.503D.1404解析:解析 本题重点考察函数的定义和调用,第一次循环,a=0,i=0,返回值a=0*0+1+0=1;第二次循环,a=1,i=10,返回值a=10*10+1+1=102;第三次循环,a=102,i=20,返回值a=20*20+1+102=503;第四次循环,a=503,i=30,不符合i30,跳出循环,最后结果输出a=503。11.C语言中,下列不合法的字符常量是_。(分数:1.00)A./xffB./65C.&D./028解析:解析 选项A,/xff中/x组合表示是一个十六进制数ffH=10进制的255,它代表一个不可见字符的ASCII码,合法。选项B/65

9、同理十三个十进制数/ddd表示的是八进制数。/65=/065=10进制的53,是F的ASCII码表示。选项C,单&字,合法。选项D中/028同上表示是一个八进制数,但八进制数中逢八则进一,是不会出现8的,所以格式虽对但数值错了。不合法。12.有以下程序: #includestdio.h int fun(int x, int n) static int sum=0, i; for(i=0; in; i+) sum+=xi; return sum; main() int a=1, 2, 3, 4, 5, b=6, 7, 8, 9, s=0; s=fun(a, 5)+fun(b, 4); print

10、f(%d/n, s); 程序执行后的输出结果是( )。(分数:1.00)A.45B.50C.60D.55解析:解析 函数fun的功能是求数组的n个元素之和。fun(a, 5)=15。由于sum是静态局部变量,所以保持15不变,fun(b, 4)=45,所以s=fun(a, 5)+fun(b, 4)=60。13.有两个关系R、S如下: R A B C a 3 2 b 0 1 c 2 1 S A B a 3 b 0 c 2 由关系R通过运算得到关系S,则所使用的运算为_。(分数:2.00)A.选择B.投影C.插入D.连接解析:解析 投影运算是指对于关系内的域指定可引入新的运算。本题中S是在原有关系

11、R的内部进行的,是由R中原有的那些域的列所组成的关系。所以选择B。14.以下叙述中正确的是_。(分数:2.00)A.C语言程序将从源程序中第一个函数开始执行B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C.C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D.main可作为用户标识符,用以命名任意一个函数作为主函数解析:解析 main是主函数的函数名,表示这是一个主函数。每一个C源程序都必须有且只能有一个主函数。程序要从main函数开始执行,最后在main函数中结束。本题选C。15.若变量已正确定义为int型,要给a、b、c输入数据,正确的输入语句是_。(

12、分数:1.00)A.read(a, b, c);B.scanf(%d%d%d, a, b, c);C.scanf(%D%D%D, &a, %b, %c);D.scanf(%d%d%d, &a, &b, &c);解析:解析 scanf是键盘输入语句,%d是打印十进制文件,&x就是把你从键盘输入的值赋给X,后面依此类推,因此正确答案为D。16.有以下程序: #includestdio.h void f(int x,int n) if(n1) printf(%d,x0); f(&x1,n-1); printf(%d,x0); else printf(%d,x0); main() int z3=4,5

13、,6; f(z,3); printf(/n); 程序运行后的输出结果是_。(分数:1.00)A.6,5,4,6,5,4,B.4,5,6,5,4,C.4,5,6,4,5,6,D.6,5,4,5,6,解析:解析 本题考查了函数的递归调用,在main函数中调用f(z,3)后,系统进入f()函数,随后进入if语句,输出x0;再进入f()函数时,存在&x1函数的递归,输出x1;再进入f()函数,再进行递归,输出x2;随后结束返回输出上一个f()函数,输出x1;再返回第一个f()函数中,输出x0,程序运行后的输出结果是4,5,6,5,4。因此答案为B选项。17.下面程序的输出结果为_。 #includes

14、tring.h main() charP17=abc=ABC.STR50=xyz; strcpy(str,strcat(p1,p2); printf(%s,str); (分数:2.00)A.xyzabcABCB.abcABCC.xyzabcD.xyzABC解析:解析 strcpy(strl,s1):作用是将字符串s1拷贝到字符数组strl中去。strcat(字符数组1,字符数组2):把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后返回字符数组1的地址。本题定义了三个字符数组pl,p2,str,strcat(pl,p2)函数的作用是将字符串数组p2接到字符串p1的后面,结果放在字符

15、数组p1中,再通过strcpy()函数将该字符串拷贝到str数组中,原str数组中的字符串xyz被覆盖,因此打印输出字符串str即可得到abcABC。18.有以下程序: #includestdio.h main() int a=1,b=2,c=3,x; x=(ab)c; printf(%d/n,x); 程序运行后的输出结果是_。(分数:1.00)A.3B.1C.2D.0解析:解析 本题考查位运算符以及相关运算,为按位或,为按位与,那么ab为3,再与c按位与仍然为3,所以答案为A选项。19.下列选项中,能正确定义数组的语句是_。(分数:1.00)A.int num0.2008;B.int num

16、;C.int N=2008;int numN;D.#define N 2008int numN;解析:解析 C语言不允许定义动态数组,定义数组的大小必须为常量表达式。A选项错误,C语言中数组没有此类型的定义方法;B选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定初值的个数;C选项错误,N为变量,不能用来定义数组大小。因此D选项正确。20.下列合法的声明语句是_。(分数:1.00)A.int _abc=50;B.double int=3+5e2.5;C.long do=1L;D.float 3_asd=3e-3;解析:解析 标识符是由字母、数字或下划线组成,并且它的第一个字符必须是

17、字母或下划线。B选项int不是表达变量类型的标识符,它不能再用做变量名和函数名。C选项do是C语言的一个关键字。D选项标识符只能以字母或下划线开始。21.若有以下程序: #includestdio.h void fun(float*a, float*b) float w; *a=*a+*a; w=*a; *a=*b; *b=w; main() float x=2.0, y=3.0, *px=&x, *py=&y; fun(px, py); printf(%2.0f, %2.0f/n, x, y); 程序的输出结果是_。(分数:2.50)A.4,3B.2,3C.3,4D.3,2解析:解析 #in

18、cludestdio.h void fun(float*a,float*b)/a即指向px的指针,b即指向py的指针,则*a指向x,*b指向y float w; *a=*a+*a;/将x地址存放的数据自加,x变为4 w=*a; *a=*b; *b=w; /将x和y地址里面的数据互换,则x变为3,y变为4 main() float x=2.0, y=3.0, *px=&x, *py=&y; /px和py分别是指向x和y地址的指针 fun(px, py); printf(%2.0f, %2.0f/n, x, y); /%2.0f表示结果前面有2个空格,小数点后有0位,即保留到个位 22.以下程序调

19、用fun函数求数组中最大值所在元素的下标: #includestdio.h void fun(int*s,int n,int*k) int i; for(i=0,*k=i;in;i+) if(sis*k)_; main() int a5=1,6,2,8,0,k; fun(a,5,k); printf(%d%d/n,k,ak); 在横线处应填入的内容是_。(分数:1.00)A.*k=iB.k=iC.*k=i-sD.k=i-s解析:解析 fun函数的功能是求数组中最大值所在元素的下标。通过for循环语句,每次将最大的数给*k,即*k=i。因此A选项正确。23.以下叙述中正确的是(分数:1.00)A

20、.C程序中注释部分可以出现在程序中任意合适的地方B.花括号“”和“”只能作为函数体的定界符C.构成C程序的基本单位是函数,所有函数名都可以由用户命名D.分号是C语句之间的分隔符,不是语句的一部分解析:解析 C语言函数、语句的概念、注释以及C程序的基本结构,“/*”与“*/”之间的信息称为注释信息,在C语言中,允许在任何能够插入空格符的位置插入注释,但C语言的注释不能进行嵌套;在C语言中,函数体是从花括号“”开始,到花括号“”结束。但没有规定花括号“”和“”只能作为函数体定界符;选项C中前半句是正确的,在C程序中由有一个或多个函数所组成,但不是所有的函数都由用户自己命名,有些函数比如库函数,主函

21、数main()就不能由用户来命名;在C语言中明确规定每条语句以分号“;”结束,分号是语句不可缺少的一部分。24.有三个关系R、S和T如下: R A B C a 1 2 b 2 1 c 3 1 S A D c 4 T A B C D c 3 1 4 则由关系R和S得到关系T的操作是_。(分数:1.00)A.自然连接B.交C.投影D.并解析:解析 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,因此根据T中元组可以判断关系R和S做的是自然连接操作,答案为A。25.若i、j已定义成int型,则下列程序段中内循环体的总执行次数是_。 fo

22、r(i=6; i0; i-) for(j=0; j4; j+)(分数:2.50)A.20B.24C.25D.30解析:解析 本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的循环都要使j=0到3,j=4时不符合,所以退出j循环;然后i减1,j仍然要从03,j=4时退出j循环直到i变成0,退出i循环。第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4=24次。26.设一棵树的度为3,共有27个结点,其中度为3,2,0的结点数分别为4,1,10。该树中度为1的结点数为_。(分数:1.00)A.12B.13C.11D.不可能有这样的树解析:解析 在树结构中,

23、一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。 根据题意,度为3的树第1层1个根结点,第2层3个子结点,每个子结点下各3个子结点,所以第3层共9个子结点,前3层共13个结点。第3层有一个结点度为2即有2个子结点,本层其他结点各1个子结点;即第4层共10个结点。前4层共23个结点。第4层中的两个结点下各有一个子结点,即第5层有2个结点,此2个结点下各有一个子结点。 第3层有8个度为1的结点,第4层有2个度为1的结点,第5层有2个度为1的结点,8+2+2=12。故本题答案为A选项。27.设有如下定义: int arr=6, 7, 8, 9, 10; int*ptr; ptr

24、=arr; *(ptr2)=2; printf(%d, %d/n, *ptr, *(ptr2); 则下列程序段的输出结果为_。(分数:2.50)A.8,10B.6,8C.7,9D.6,2解析:解析 程序中ptr指针指向数组arr的首地址,*ptr=arr0=6,*(ptr2)=2,故选D。28.有以下程序: #includestdio.h int m=13; int fun2(int x, int y) int m=3; return(x*y-m); main() int a=7, b=5; printf(%d/n, fun2(a, b)/m); 程序运行后的输出结果是(分数:1.00)A.1

25、B.2C.7D.10解析:29.有以下程序 #includestdio.h main() int i, t3=9, 8, 7, 6, 5, 4, 3, 2, 1; for(i=0; i3; i+) printf(%d, t2-ii); 程序执行后的输出结果是_。(分数:2.00)A.3 5 7B.7 5 3C.3 6 9D.7 5 1解析:解析 本题考查的是for循环与二维数组的定义和引用。当定义二维数组的初始化列表只使用一重花括号时,其中的每个值依次代表从第1行的第1个元素起,直到第1行满,接着代表第2行、第3行的每一个元素。程序中的循环将循环3次,循环变量i的值分别是0、1、2,所以3次循

26、环中输出的数分别是:t2-00、t2-11、t2-22,即t20、t11、t02,所以最后输出的结果为3 5 7。故应该选择A。30.以下叙述中错误的是_。(分数:1.00)A.只要类型相同,结构体变量之间可以整体赋值B.函数的返回值类型不能是结构体类型,只能是简单类型C.可以通过指针变量来访问结构体变量的任何成员D.函数可以返回指向结构体变量的指针解析:解析 本题考查结构体相关知识。函数返回值可以是结构体,所以B选项错误。31.若有下列定义(设int类型变量占2个字节): int i=8, j=9; 则下列语句: printf(i=%d, j=%d/n, i, j); 输出的结果是_。(分数

27、:2.50)A.i=8, j-9B.i=%d, j=%dC.i=%8, j=%9D.8, 9解析:解析 本题考查函数的输出格式。在printf函数中,格式说明符中有两个“%”,表示将第1个%后面的字符原样输出,并不输出其对应的变量值。32.下列定义变量的语句中错误的是_。(分数:2.50)A.int_int;B.double int_;C.char For;D.float US$;解析:解析 C语言规定,变量的标识符只能由字母、数字和下划线3种字符组成,且首字符必须为字母或下划线。在C语言中大写字母和小写字母被认为是两个不同的字符。选项A定义的变量标识符int和选项B定义的变量标识符int与C语言的关键字int是不同的,是正确的变量标识。选项C定义的变量标识符For与C语言中的关键字for是两个不同的标识符,所以选项C是正确的,而选项D包含有特殊字符$,因而其不符合C语言的变量命名规定。33.以下选项中,能用作用户标识符的是_。(分数:1.00)A._0_B.8_8C.voidD.unsigned解析:解析

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

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