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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文([计算机类试卷]国家二级C语言(数组)机试模拟试卷4及答案与解析.doc)为本站会员(explodesoak291)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

[计算机类试卷]国家二级C语言(数组)机试模拟试卷4及答案与解析.doc

1、国家二级 C语言(数组)机试模拟试卷 4及答案与解析 一、选择题 1 若有定义: int x10, *pt=x;,则对 x数组元素的正确引用是 ( )。 ( A) pt+3 ( B) *&x10 ( C) *(pt+10) ( D) *(x+3) 2 有以下程序: #include stdio h 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) 20 ( B) 25 ( C) 45 ( D) 36 3 有以下程

2、序: #include stdio h main() int s12=1, 2, 3, 4, 4, 3, 2, 1, 1, 1, 2, 3, c5=0, i; for(i=0; i 12; i+) esi+; for(i=1; i 5; i+) printf(“ d“, ci); printf(“ n“); 程序的运行结果是 ( )。 ( A) 2 3 4 4 ( B) 4 3 3 2 ( C) 1 2 3 4 ( D) 1 1 2 3 4 下列定义数组的语句中正确的是 ( )。 ( A) #define N10 int xN; ( B) int N=10; int xN; ( C) int

3、x0 10; ( D) int x; 5 下列选项中能正确定义数组的语句是 ( )。 ( A) int hum02008 ; ( B) int num; ( C) int N=2008; int numN; ( D) #define N2008 int numN; 6 若要求定义具有 10个 int型 元素的一维数组 a,则以下定义语句中错误的是( )。 ( A) #define n5 int a2*n; ( B) int n=10, an; ( C) int a5+5; ( D) #define N10 int aN; 7 设有定义: double a10, *s=a;,以下能够代表数组元素

4、 a3的是 ( )。 ( A) (*s)3 ( B) *(s+3) ( C) *s3 ( D) *s+3 8 有以下程序: #include stdio h main() int i, t3=9, 8, 7, 6, 5, 4, 3, 2, 1; for(i=0; i 3; i+) printf(“ d“, t2-ii); 程序的运行结果是 ( )。 ( A) 3 5 7 ( B) 7 5 3 ( C) 3 6 9 ( D) 7 5 1 9 下列定义语句中错误的是 ( )。 ( A) int x43=1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3; ( B) int x4=

5、1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3; ( C) int x3=0, 1, 1, 2, 3; ( D) int x3=1, 2, 3, 4; 10 下列定义数组的语句中错误的是 ( )。 ( A) int x23=1, 2, 3, 4, 5, 6; ( B) int x3=0; ( C) int x3=1, 2, 3, 4, 5, 6; ( D) int x23=1, 2, 3, 4, 5, 6; 11 下列定义数组的语句中错误的是 ( )。 ( A) int num3=1, 2, 3, 4, 5, 6; ( B) int num24=1, 2, 3, 4, 5

6、, 6; ( C) int num=1, 2, 3, 4, 5, 6; ( D) int num4=1, 2, 3, 4, 5, 6; 12 若有定义语句: char s10=“1234567 0 0“;,则 strlen(s)的值是 ( )。 ( A) 7 ( B) 8 ( C) 9 ( D) 10 13 有以下程序: #include stdio h #include string h main() char p20=a, b, c, d, q=“abc“, r=“abcde“; strcat(p, r); strcpy(P+strlen(q), q); pfinff(“ d n“, st

7、rlen(p); 程序的运行结果是 ( )。 ( A) 11 ( B) 9 ( C) 6 ( D) 7 14 有以下程序 (strcat函数用于连接两个字符串 ): #include stdio h #include string h main() char a20=“ABCD 0EFG 0“, b=“IJK“; strcat(a, b); printf(“ s n“, a); 程序的运行结果是 ( )。 ( A) IJK ( B) ABCDE 0FG 0IJK ( C) ABCDIJK ( D) EFGIJK 15 有以下程序: char name20; int num; scanf(“na

8、me= s num= d“, name, &num); 当执行上述程序,并从键盘输入: name=Lili hum=1001回车后, name的值为( )。 ( A) name=Lili Bum=1001 ( B) name=Lili ( C) Lili hum= ( D) Lili 16 有以下程序: #include stdio h main() char ch=“uvwxyz“, *pc; pc=ch; printf(“ c n“, *(pc+5); 程序的运行结果是 ( )。 ( A) z ( B) 0 ( C)元素 ch5的地址 ( D)字符 y的地址 17 有以下程序: #incl

9、ude stdio h main() char s=“012xy“; int i, n=0; for(i=0; si!=0; i+) if(si =a&si =z)n+; pfinff(“ d n“, n); 程序的运行结果是 ( )。 ( A) 0 ( B) 2 ( C) 3 ( D) 5 18 若有以下定义和语句: #include stdio h char s110=“abcd!“, *s2=“ n123 “; pfinff(“ d d n“, strlen(s1), strlen(s2); 程序的运行结果是 ( )。 ( A) 10 7 ( B) 10 5 ( C) 5 5 ( D)

10、5 8 19 有以下程序: #include stdio h main() char s=“abcde“; s+=2: printf(“ d n“, s0); 程序的运行结果是 ( )。 ( A)输出字符 c的 ASCII码 ( B)程序出错 ( C)输出字符 c ( D)输出字符 a的 ASCII码 20 有以下程序: #include stdio h void fun(char*t, char*s) while(*t!=0)t+; while(*t+=*s+)!=0); main() char ss10=“acc“, aa10=“bbxxyy“; fun(ss, aa); printf(“

11、 s, s n“, ss, aa); 程序的运行结果是 ( )。 ( A) acc, bbxxyy ( B) accbbxxyy, bbxxyy ( C) accxxyy, bbxxyy ( D) accxyy, bbxxyy 21 设有定义: char p=1, 2, 3, *q=p;,以下不能计算出一个 char型数据所占字节数的表达式是 ( )。 ( A) sizeof(p) ( B) sizeof(char) ( C) sizeof(*q) ( D) sizeof(p0) 22 设有定义: char s81; int i=0;,以下不能将一行 (不超过 80个字符 )带有空格的字符串正

12、确读入的语句或语句组是 ( )。 ( A) gets(s); ( B) while(si+=getchar()!= n); si= 0; ( C) scanf(“ s“, s); ( D) doscanf(“ c“, &si); while(si+!= n); si= 0; 23 若有定义语句: char*s1=“OK“, *s2=“ok“;,以下选项中,能够输出 “OK”的语句是 ( )。 ( A) if(strcmp(s1, s2)!=0)puts(s2); ( B) if(strcmp(s1, s2)!=0)puts(s1); ( C) if(strcmp(s1, s2)=1)puts(

13、s1); ( D) if(stremp(s1, s2)=0)puts(s1); 24 若要求从键盘读入含有空格字符的字符串,应使用函数 ( )。 ( A) getchar() ( B) getc() ( C) gets() ( D) seanf() 25 下列选项中,能够满足 “只要字符串 s1等于字符串 s2,则执行 sT”要求的是( )。 ( A) if(s1-s2=0)ST; ( B) if(s1=s2)ST; ( C) if(strcpy(s1, s2)=1)ST; ( D) if(stremp(s2, s1)=0)ST; 国家二级 C语言(数组)机试模拟试卷 4答案与解析 一、选择题

14、 1 【正确答案】 D 【试题解析】 没有 A选项的引用形式。 *与 &放在一起作用抵消,但 x10下标10超出了数组下标范围,所以 B选项错误。最大只能引用到 x9,而 *(pt+i)表示引用指针 pt所指元素后的第 i个元素,所以 C选项错误,最大只能为 *(pt+9)。 D选项正确。 【知识模块】 数组 2 【正确答案】 B 【试题解析】 统计 1 9这 9个数中的奇数和,此题考查指向数组的指针。 C语言规定数组名代表数组的首地址,也就是第一个元素的地址,因此 *(t+i)代表数组的第 i+1个元素。程序的运行结果是 1+3+5+7+9=25。 【知识模块】 数组 3 【正确答案】 B

15、【试题解析】 在 for(i=0; i 12; i+)csi+中,数组元素 si的值作为数组 c的下标,当退出循环时,数组 c的 4个元素的值分别为 4、 3、 3、 2,因此 B选项正确。 【知识模块】 数组 4 【正确答案】 A 【试题解析】 数组说明的一般形式为:类型说明符数组名 常量表达式 。 B选项中 N是变量,不能用变量定义数组长度。 C选项中数组长度是一串非法的数字。定义数组时必须为其指明长度, D选项中的数组长度为空,所 以非法。 【知识模块】 数组 5 【正确答案】 D 【试题解析】 C语言不允许定义动态数组,定义数组的大小必须为常量表达式。A选项错误, C语言中的数组没有此

16、类型的定义方法; B选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定初值的个数; C选项错误, N为变量,不能用来定义数组大小。 D选项正确。 【知识模块】 数组 6 【正确答案】 B 【试题解析】 一维数组的定义方式为:类型说明符数组名 常量表达式 ;注意定义数组时,元素个数不能是变量,因此应该选择 B选项。 【知识模块】 数组 7 【正确答案】 B 【试题解析】 题中,首先定义了 double型的数组 a,并将数组首地址赋给指针s。 s3能够表示 a3,故选项 A、 C不能表示 a3;选项 D的, *s+3=a0+3。故本题答案为 B选项。 【知识模块】 数组 8 【正确答案

17、】 A 【试题解析】 二维数组 t3实际上指 t33=9, 8, 7, 6, 5, 4, 3, 2,1,通过循环语句 for语句可以得到 i=0, t20=3、 i=1, t11=5、 i=2,t02=7、 i=3时循环结束,即 t20=3、 t11=5、 t02=7,因此 A选项正确。 【知识模块】 数组 9 【正确答案】 B 【试题解析】 二维数组定义的一般形式是:类型说明符数组名 常量表达式 1常量表达式 2。其中常量表达式 1表示第一维下标的长度,常量表达式 2表示第二维下标的长度。如对二维数组的全部元素赋初值,则第一维的长度可以不给出。但如果对 x4赋值,只确定行数,而不确定列数,就

18、无法正确赋值,因此 B选项正确。 【知识模块】 数组 10 【 正确答案】 D 【试题解析】 D选项中 x23定义的是一个 2行 3列的二维数组,而在给数组元素赋值时却赋成了 3行,所以错误。 【知识模块】 数组 11 【正确答案】 B 【试题解析】 B选项中定义的数组为 2行 4列,而赋值时赋成了 3行,所以出错。 【知识模块】 数组 12 【正确答案】 A 【试题解析】 stden()函数是计算字符串长度时,遇到结束标识为止,且长度不包括结束标识。本题中的字符串从第一个字符开始,遇到第一个结束标识 0为止,注意 0不占字符串长 度,所以字符串长度为 7,因此 A选项正确。 【知识模块】 数

19、组 13 【正确答案】 C 【试题解析】 strcpy:字符串复制函数; strlen:求字符串长度函数 (注意:不包含字符串结束标记字符 0); strcat:字符串连接函数。执行完语句 strcat(p,r);后, p数组中存储的元素为 a, b, c, d, a, b, c, d, e;执行语句strcpy(p+strlen(q), q);得到的结果是将 q所指向的字符串复制至 p+strlen(q)开始的存储位置,因为 strlen的值为 3,即 p+3开始存储 q中的元素,所以执行完strcpy(P+strlen(q), q)语句后,字符数组 p20的存储元素为 a, b, c, 【

20、知识模块】 数组 14 【正确答案】 C 【试题解析】 字符数组 a中包含两个 0,遇到第一个 0时就表示字符串 a结束。字符串处理函数 strcat(字符数组 a,字符数组 b),功能是连接两个字符数组中的字符串,把字符串 b连接到字符串 a的后面,结果放在字符数组 a中。连接时将字符串 a后的 0取消,只在新串最后保留一个 0。本题相当于将“ABCD“和 “UK“连接,因此 C选项正确。 【知识模块】 数组 15 【正确答案】 D 【试题解析】 在输入格式控制 “name= s num= d”中,普通字符 “name=num=”在输入时要原样输入,而格式控制符 s和 d对应各自的输入项,将

21、输入的数据赋给相应的输入项。本题中输入 “name=Lili num=1001回车 ”后,将字符串Lili赋给字符数组 name,整数 1001赋给变量 num,因此 D选项正确。 【知识模块】 数组 16 【正确答案】 A 【试题解析】 语句 pc=ch;使得指针变量指向字符 数组 ch的首地址,即指向字符 u,则 pc+5指向的是字符向后移动 5位,指向字符 z,所以输出的 *pc+5的值即为 z,因此 A选项正确。 【知识模块】 数组 17 【正确答案】 B 【试题解析】 程序首先给字符数组 s赋值为 “012xy“, for循环语句的功能是遍历字符串,通过 if条件语句对字符串中的小写

22、字母进行计数,字符串中小写字母为 2个,即 n=2,因此 B选项正确。 【知识模块】 数组 18 【正确答案】 C 【试题解析】 strlen函数返回字符串的长度,求字符串长 度时,遇到结束标志 0为止,但是长度不包括结束标识。字符数组 s1的后 5个元素没有赋值,都为 0,即 “abcd!“后为 0,所以 strlen(s1)的值为 5。字符指针 s2所指向的字符串中, n为转义字符换行符,表示 1个字符,也为转义字符,代表,也是 1个字符,其后为字符串结束标识 0,所以 strlen(s2)的值也为 5,因此 C选项正确。 【知识模块】 数组 19 【正确答案】 B 【试题解析】 本题重点

23、考查数组名的概念。在 C语言中,数组名类似于一个指向数组首地址的指针常量,一 旦定义就不能修改其内容。所以本题中的 “s+=2”;语句让数组名 s的内容加 2是错误的,编译无法通过,因此 B选项正确。 【知识模块】 数组 20 【正确答案】 B 【试题解析】 本题重点考查 while循环语句的简单应用。在函数 fun()中,前一个while循环的作用是:如果形参指针 t所指内容不为 0,则让 t增 1,直到它指向0。后一个 while循环的作用是:将 s所指内容赋给 t所指地址,然后两者同时增1,直到赋给 t的内容为 0。由此可见,函数 fun()的作用就是将形参 s所指字符串连接到形参 t所

24、指字符串末 尾,相当于库函数中的 strcat()。主函数中使用 fun()将数组 aa中的字符串连接到了数组 ss中原有字符串之后,所以执行完后, ss中的字符串为 “accbbxxyy”。程序最后输出的结果是 【知识模块】 数组 21 【正确答案】 A 【试题解析】 根据题目中的定义可知道 sizeof(p),计算的是数组 p中所有元素所占用的字节数,而不是 char型数据所占的字节数。 【知识模块】 数组 22 【正确答案】 C 【试题解析】 使用 scanf()输入字符串时,空格和回车符都作为输入数 据的分隔符而不能被读入,而应该使用 gets(s)。 【知识模块】 数组 23 【正确

25、答案】 B 【试题解析】 strcmp(s1, s2)是字符串比较函数,比较规则是两个字符串自左向右逐个字符相比 (按照 ASCII码值大小 ),以第一个不相同字符的大小作为比较结果。因为 OK ok,所以 strcmp(s1, s2)为负值,只有 B选项正确。 【知识模块】 数组 24 【正确答案】 C 【试题解析】 scanf()语句中用 “空格 ”间隔不同的字符串,空格将被全部忽略掉,所以用 scanf()函数不能输入空格; getchar()函数用于输入字符,其调用格式为:ch=getchar(), getchar()函数从终端读入一个字符作为函数值,把读入的字符赋给变量 ch。在输入

26、时,空格、回车符都将作为字符读入,而且只有在用户敲入回车键时,读入才开始执行。 gets()函数的调用形式为: gets(str_adr),其中 str_adr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。 gets函数用来从终端键盘读入字符串 (包括空格符 ),直到读入一个换行符为止。 getc()函数的调 用形式为: ch=getc(pf),其中 pf是文件指针,函数的功能是从 pf指定的文件中读入一个字符,并把它作为函数值返回。因此 C选项正确。 【知识模块】 数组 25 【正确答案】 D 【试题解析】 在 C语言中,要对两个字符串的大小进行比较,就需要调用字符串比较函数 strcmp,如果这个函数的返回值等于 0,说明两个字符串相等,因此 D选项正确。 【知识模块】 数组

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1