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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、二级C语言分类模拟题537二级C语言分类模拟题537(总分:56.50,做题时间:90分钟)一、选择题(总题数:40,分数:56.50)1.有以下程序: #include stdio.h struct S int a;int b; main( ) struct S a, *p=&a; a.a=99; printf(%d/n,_); 程序要求输出结构体中成员a的数据,以下不能填入横线处的内容是_。(分数:1.00)A.aB.*p.aC.p-aD.(*p).a解析:解析 本题考查结构体变量的引用。题目中要求输出结构体中成员a的数据,p为指针,* p为结构体变量,那么* p.a可以表示为结构体中成员

2、a的数据。2.下列叙述中正确的是_。(分数:1.00)A.空字符串不占用内存,其内存空间大小是0B.两个连续的单引号()是合法的字符常量C.可以对字符串进行关系运算D.两个连续的双引号( )是合法的字符串常量解析:解析 字符串常量(包括空字符串)所占内存字节数等于字符串中字节数加1,A选项错误。字符常量是用单引号括起来的一个字符,B选项错误。C语言中,字符串比较不能直接用关系运算符进行正确比较,可以用字符串比较函数strcmp来实现,C选项错误。字符串常量是由一对双引号括起的字符序列,D选项正确。3.以下选项中可用作C程序合法实数的是_。(分数:1.00)A.3.0e0.2B.1e0C.E9D

3、.9.12E解析:解析 e前e后有数字,e后数值为整数,所以A、C、D错误。4.有如下程序: #include stdio.h struct person char name10; int age; ; main( ) struct person room2 = Wang,19,Li,20; printf(%s:%d/n,(room+1)-name,room-age); 程序运行后的输出结果是_。(分数:1.00)A.Li:19B.Wang:19C.Li:20D.Wang:17解析:解析 声明结构类型person后,在main函数中定义了一个结构数组room,其中有2个元素,每个元素都是per

4、son类型数据。在输出中,因为room表示数组首地址,首地址+1,指向room数组中第二个元素,并将该元素的name信息进行输出,同理,对第一个元素中的age信息输出,因此,答案为A选项。5.有以下程序(字母A的ASCII代码为65): #include stdio.h main() char c1 = A. c2 = Y; printf(%d,%d/n,c1,c2); 程序运行后的输出结果是_。(分数:1.00)A.输出格式不合法,输出出错信息B.A,YC.65,90D.65,89解析:解析 一个整数,只要它的值在0255范围之内,也可以用字符形式输出。输出之前,系统会将该整数转化为相应的A

5、SCII码字符。字符也可以用整型来输出,输出的是对应的ASCII值。A的ASCII值为65,Y的AScII值为89,故D选项正确。6.有以下程序: #includestdio.h int f(int x); main() int n=1, m; m=f(f(f(n); printf(%d/n, in); int f(int x) return x*2; 程序运行后的输出结果是_。(分数:1.00)A.8B.2C.4D.1解析:解析 第一次调用m=f(f(f(1),第二次调用m=f(f(2),第三次调用m=f(4),即返回值为8。所以选择A选项。7.fgets(str,n,fp)函数从文件中读入

6、一个字符串,以下错误的叙述是_。(分数:3.00)A.字符串读入后会自动加入/0B.fp是指向该文件的文件型指针C.fgets函数将从文件中最多读入n个字符D.fgets函数将从文件中最多读入n-1个字符解析:8.下列叙述中,正确的是_。(分数:1.00)A.C程序中的注释只能出现在程序的开始位置和语句的后面B.C程序书写格式严谨,要求一行内只能写一个语句C.C程序的书写格式自由,一个语句可以写在多行上D.用C语言编写的程序只能放在一个程序文件中解析:解析 C程序中注释可以放在任意位置;C语言的语法限制不严格,所以可以将多条语句放在同一行上;C程序可以放在多个程序文件中,并使用include语

7、句进行文件包含。故本题答案为C。9.有以下程序: #includestdio.h main() int a=1,b=2,c=3,d=0; if(a=1&b+=2) if(b!=2|c-!=3) printf(%d,%d,%d/n,a,b,c); else printf(%d,%d,%d/n,a,b,c); else printf(%d,%d,%d/n,a,b,c); 程序的运行结果是_。(分数:2.50)A.1,3,2B.1,3,3C.1,2,3D.3,2,1解析:解析 else总是和最近的if配对,所以进入第一个if语句中进行条件判断时,因为是逻辑与操作,需要两边运算对象的值均为非零值才为真

8、,所以需要逐个执行判断的结果为1。进入第二个if语句条件判断,因为b!=2条件成立,所以整个条件表达式的值为真,不再执行逻辑或的第二个运算对象(c-!=3)c的值不变,也不再执行第一个else语句。打印a的值1,b的值3,c的值3。10.有三个关系R,S和T如下: R A B C a 1 2 b 2 1 c 3 1 S A B C d 3 2 T A B C a 1 2 b 2 1 c 3 1 d 3 2 其中关系T由关系R和S通过某种操作得到,该操作为_。(分数:1.00)A.选择B.投影C.交D.并解析:解析 在关系T中包含了关系R与S中的所有元组,所以进行的是并的运算,答案为D。11.有

9、以下程序(注:字符a的ASCH码值为97): #includestdio.h main() char*s=abc; do printf(%d,*s%10);+s; while(*s); 程序运行后的输出结果是_。(分数:1.00)A.789B.abcC.7890D.979899解析:解析 因为小写字符a,b,c的ASCII码值分别勾97,98,99,而在do while循环语句中,每次对字符的ASCII码值取余数并输出,所以分别输出7,8,9。12.以下叙述中正确的是_。(分数:1.00)A.在C语言中,预处理命令行都以“#”开头B.预处理命令行必须位于C源程序的起始位置C.#include

10、stdio.h必须放在C程序的开头D.C语言的预处理不能实现宏定义和条件编译的功能解析:解析 预处理命令是以“#”号开头的命令,它们不是C语言的可执行命令,这些命令应该在函数之外书写,一般在源文件的最前面书写,但不是必须在起始位置书写,因此B、C选项错误。C语言的预处理能够实现宏定义和条件编译等功能,因此D选项错误。故本题答案为A。13.若变量已正确定义,下列正确的程序段是 _ 。(分数:2.00)A.while(ch=getchar()=/N)putchar(ch);B.while(ch=getchar()=/n)putchar(ch);C.while(ch=getchar()!=/N)pu

11、tchar(ch);D.while(ch=getchar()!=/n)putchar(ch);解析:解析 本题考查两个知识点:C语言用/n这个字符常量表示换行;函数getchar()的作用是从终端输入一个字符,当遇到换行时结束输入。14.以下有4组用户标识符,其中合法的组是_。(分数:1.00)A.FOR-subCaseB.4dDOSizeC.f2_G3IFabcD.WORDvoiddefine解析:解析 C语言的标识符的定义为:以字母或下划线开头的由字母、数字字符、下划线组成的字符串。而且标识符不能与关键字相同。15.以下选项中合法的常量是_。(分数:1.00)A.999B.2.7eC.OX

12、abD.123E 0.2解析:解析 A选项中含有非法的空格,所以错误。C语言中十六进制常量以Ox开头,所以C选项正确。实型常量中e的前后必须均有数据,且其后必须为整数,所以B选项和D选项错误。16.下列定义变量的语句中错误的是_。(分数:2.50)A.double int_;B.float US$;C.char For;D.int_int;解析:解析 变量命名规范:由字母数字下划线组成,且数字不作为开头。所以B错误。17.若二维数组a有m列,则在aij前的元素个数为 _ 。(分数:1.00)A.i*m+j-1B.i*m+jC.j*m+1D.i*m+j+1解析:解析 二维数组的元素可以看成是按矩

13、阵形式存放的,数组第一维的下标是i,说明它前面还有i行,有i*m个元素,数组第二维的下标是j,说明它前面还有j列,有j个元素,所以共有i*m+j个元素。18.有以下程序 #include stdio.h main() int x; scanf(%d,&x); if(x=3);else if(x!=10) printf(%d/n,x); 程序运行时,输入的值在哪个范围才会有输出结果_。(分数:1.00)A.大于3且不等于10的整数B.不等于10的整数C.大于3或等于10的整数D.小于3的整数解析:解析 大于3执行else语句,不等于10,就会输出x的值,所以选择A。19.有以下程序: #incl

14、udestdio.h main() char s1=programe,s2=Language; char*p1=s1,*p2=s2; int k; for(k=0;k8;k+) if(*(p1+k)=*(p2+k) printf(%s/n,*(p1+k); 程序的运行结果是_。(分数:1.00)A.grame ame eB.g a eC.programeD.无输出字符解析:解析 定义两个指针变量p1、p2,分别指向数组s1、s2首地址,在for循环中,比较两个指针所指地址的元素是否相等,如果相等,则输出当前指针指向地址的字符串。20.假定已建立以下链表结构,且指针P和q已指向如下图所示的结点:

15、 则以下选项中可将q所指向结点从链表中删除并释放该结点的语句组是(分数:2.00)A.(*p).next=(*q).next;free(p);B.p=q-next;free(q);C.p=q;free(q);D.p-next=q-next;free(q);解析:解析 要从链表中删除b,只需要将c结点的地址赋给p-next即可。c结点的地址存放在q-next中,因此,p-next=q-next即可,然后用free(q)释放指针q的空间。21.若有定义int x,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x+):(y+)中的条件表达式(x-y)等价的是_。(分数:1.00)A.(x

16、-y0|x-y0)B.(x-y0)C.(x-y0)D.(x-y=0)解析:解析 条件表达式:x=表达式1?表达式2:表达式3的含义是:先求解表达式1,若其值为非0(真),则求解表达式2,将表达式2的值赋给x,若表达式1的值为0(假),则求解表达式3,将表达式3的值赋给x。在本题中与表达式(x-y)等价的是(x-y0|x-y0),A选项正确。22.有以下程序: #includestdio.h void fun(char*p) +p; printf(%s, p); main() char*a=Morning, Afternoon, Evening, Night; fun(a); 程序的运行结果是_

17、。(分数:2.50)A.AfternoonB.fternoonC.MorningD.orning解析:解析 执行fun(a)语句时,p指向的是字符串数组a的第一个字符串“Morning”,p自加1之后,p指向字符串数组a的第2个字符串“Afternoon”。23.在16位IBM-PC上使用C语言,若有如下定义: struct data int i; char ch; double f; b; 则结构变量b占用内存的字节数是 _ 。(分数:2.00)A.1B.2C.7D.11解析:解析 结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和。本题中整型变量i所占用的内存是2字节,字符型变量

18、ch所占用的内存是1字节,双精度型变量f所占用的内存是8字节,三者相加即可。24.以下叙述中正确的是_。(分数:1.00)A.用C语言实现的算法必须要有输入和输出操作B.用C语言实现的算法可以没有输出,但必须要有输入C.用C程序实现的算法可以没有输入,但必须要有输出D.用C程序实现的算法可以既没有输入,也没有输出解析:解析 本题考查的是c语言中算法的特性。一个算法具有5个特性:有穷性、确定性、可行性、有零个或多个输入以及一个或多个输出。所以,选项C正确。25.有以下程序段: char str412=aaa,bbb,ccc,ddd,*p4; int i; for(i=0;i4;i+)pi=str

19、i; 以下选项中不能正确引用字符串的是_。(分数:1.00)A.*p3B.p3C.str2D.*p解析:解析 *p3p30是一个字符,不是字符串,选项A错误。p3和str2和*p分别代表了ddd,ccc,aaa。答案为A选项。26.以下定义语句中,编译时会出现编译错误的是 _ 。(分数:1.00)A.char a=a;B.char a=/nC.char a=aa;D.char a=/xgd;解析:解析 char类型用于存储单个字符的简单变量类型,它可以被指定为一个字符常量或一个整数。27.已知大写字母A的ASCII码值是65,小写字母a的ASCII码值是97。以下不能将变量c中的大写字母转换为

20、对应小写字母的语句是_。(分数:1.00)A.c=(A+c)%26-aB.c=c+32C.c=c-A+aD.c=(c-A)%26+a解析:解析 根据题意可知,小写字母比与之对应的大写字母的ASCII码大32。A选项中字符A加上c表示的大写字符再对字母个数26取余,本身这个表达式没有任何含义,所以选择A选项。28.有以下程序 #includestdio.h char fun(char*c) if(*c=Z*c=A) *c-=A-a; return*c; main() char s81,*p=s; gets(s); while(*p) *p=fun(p); putchar(*p); p+; pri

21、ntf(/n); 若运行时从键盘上输入OPEN THE DOOR回车,程序的输出结果是_。(分数:2.00)A.open the doorB.oPEN tHE dOORC.OPEN THE DOORD.Open The Door解析:解析 函数fun功能将大写字符转换为小写字符。所以选择A。29.若有说明“int a34;”,则a数组元素的非法引用是_。(分数:2.50)A.a02*1B.a13C.a4-20D.a04解析:30.以下程序的输出结果是_。 main() int i,a10; for(i=9;i=0;i-)ai=10-i; print(%d%d%d,a2,a5,a8); (分数:

22、2.00)A.258B.741C.852D.369解析:解析 在本题运行时主要注意的是当i=9时,ai=10-9=1:i=8时,ai=10-8=2;i=7时,ai=10-7=3;依此类推,直到i=0时,ai=10-0=10:此时,i的值已变为-1,判断for的循环条件,不成立,然后输出a2,a5,a8分别为8,5,2。31.有以下程序: #includestdio.h main() struct nodeint n; struct node*next; *p; struct node x3=2, x+1, 4, x+2, 6, NULL; p=x; printf(%d, , p-n); pri

23、ntf(%d/n, p-next-n ); 程序运行后的输出结果是_。(分数:1.00)A.2,3B.2,4C.3,4D.4,6解析:解析 由题干中的函数可知,程序运行后的输出结果为2,4。32.有以下程序: #includestdio.h #define S(x)x*x/x main() int k=6,j=3; printf(%d,%d/n,S(k+j+2),S(j+k+2); 程序运行后的输出结果是_。(分数:1.00)A.11,11B.29,29C.26,29D.121,121解析:解析 #define命令是C语言中的一个宏定义命令,标识符一般使用大写,为了区分其他标识符,它用来将一个

24、标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。宏定义不进行其他操作,仅仅只是替换标识符。s(k+j+2)=k+j+2*k+j+2/k+j+2,经计算可得29,S(j+k+2)=j+k+2*k+j+2/i+k+2,经计算可得29。因此输出为29,29。答案为B选项。33.有以下程序: #includestdio.h main() char s=012xy; int 1,n=0; for(i=0;si!=0;i+) if(si=a&si=z)n+; printf(%d/n,n); 程序的运行结果是_。(分数:2.00)A.0B.2C.3D.5解析:解析 程序首先给字符数组

25、s赋值为012xy,for循环语句的功能是遍历字符串,通过if条件语句对字符串中的小写字母进行计数,字符串中小写字母为2个,即n=2,因此B选项正确。34.以下叙述中正确的是_。(分数:1.00)A.每个后缀为.C的C语言源程序都可以单独进行编译B.每个后缀为.C的C语言源程序都应该包含一个main函数C.在C语言程序中,main函数必须放在其他函数的最前面D.在C语言程序中,只有main函数才可单独进行编译解析:解析 一个普通的C函数可以单独作为一个C的程序文件存在被包含到其他程序中,每个后缀为C的C语言源程序都可以单独进行编译,所以B、D选项错误。main函数可以放在程序的开始、中间和最后

26、,所以C选项错误。35.有以下程序: #include stdio.h main() FILE *fp; int i,a6=1,2,3,4,5,6,k; fp = fopen(data.dat,w+); fprintf(fp, %d/n, a0); for (i=1; i6; i+) fseek(fp, 0L, 0); fscanf(fp, %d, &k); fseek(fp, 0L, 0); fprintf(fp, %din, ai+k); rewind(fp); fseanf(fp, %d, &k); fclose(fp); printf(%d/n, k); 程序的运行结果是_。(分数:1

27、.00)A.21B.6C.123456D.11解析:解析 fopen函数以一定方式打开指定文件,返回一个指向文件的文件指针。如果不能实现打开指定文件的操作,则返回一个空指针NULL。fscanf函数从文本文件中按格式输入。fprintf函数按照格式向文本文件中输出数据。文件定位函数fseek,将指针由文件开头0、当前位置1、末尾2移动指定字节。rewind函数功能使文件的位置指针返回到文件头。本例中,循环实现的功能是求数组的和。程序执行过程为:以读/写方式建立一个新的文本文件data.dat,将1写入文件;执行for循环,将文件指针移到文件开头,将文件第一个数值1赋给k,再将指针移动到开头,向文件内输入ai+k=3。for循环实现将a数组中元素累加,结果21存放在文件中。调用rewind将文件指针移动到开头,调用fscanf函数从文件中

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2