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

上传人:eventdump275 文档编号:498762 上传时间:2018-11-30 格式:DOC 页数:28 大小:67.50KB
下载 相关 举报
[计算机类试卷]国家二级C语言机试(数组)模拟试卷2及答案与解析.doc_第1页
第1页 / 共28页
[计算机类试卷]国家二级C语言机试(数组)模拟试卷2及答案与解析.doc_第2页
第2页 / 共28页
[计算机类试卷]国家二级C语言机试(数组)模拟试卷2及答案与解析.doc_第3页
第3页 / 共28页
[计算机类试卷]国家二级C语言机试(数组)模拟试卷2及答案与解析.doc_第4页
第4页 / 共28页
[计算机类试卷]国家二级C语言机试(数组)模拟试卷2及答案与解析.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、国家二级 C语言机试(数组)模拟试卷 2及答案与解析 一、选择题 1 若有定义语句: int m 3=1,2,3,4,5,6,7;,则与该语句等价的是( )。 ( A) int m 3=1,2,3,4,5,6,7; ( B) int m 3=1,2,3, 4 ,5, 6,7; ( C) int m 3=1,2,3,4,5,6,7; ( D) int m 3=1,2,3,4,5,6,7; 2 设有定义: char p=1, 2, 3,*q=p; 以下不能计算出一个 char型数据所占字节数的表达式是( )。 ( A) sizeof(p) ( B) sizeof(char) ( C) sizeof

2、(*q) ( D) sizeof(p0) 3 有以下程序 #include #include main() char str20=“One*World“,“One*Dream!“,*p=str1; printf(“%d,“,strlen(p); printf(“%sn“,p); 程序运行后的输出结果是( )。 ( A) 10,One*Dream! ( B) 9,One*Dream! ( C) 9,One*World ( D) 10,One*World 4 有以下程序 #include main() char s=“012xy08s34f4w2“; int i, n=0; for ( i=0;

3、si!=0; i+ ) if(si = 0 strcat(p, r); strcpy(p+strlen(q), q); printf(“%dn“, strlen(p); 程序运行后的输出结果是( )。 ( A) 6 ( B) 9 ( C) 11 ( D) 7 7 若有定义语句: char *s1=“OK“, *s2=“ok“; 以下选项中,能够输出 “OK“的语句是( )。 ( A) if (strcmp(s1,s2)!=0) puts(s1); ( B) if (strcmp(s1,s2)!=0) puts(s2); ( C) if (strcmp(s1,s2)=1) puts(s1); (

4、 D) if ( strcmp(s1,s2)=0) puts(s1); 8 有以下程序,程序中库函数 islower (ch)用以判断 ch中的字母是否为小写字母 #include #include void fun(char *p ) int i=0; while(pi) if(pi= i+; main() char s1100=“ab cd EFG !“; fun(s1); printf(“%sn“,s1); 程序运行后的输出结果是( )。 ( A) aB cD EFG ! ( B) Ab Cd EFg ! ( C) ab cd EFG ! ( D) ab cd EFg ! 9 有以下程序

5、( strcat函数用以连接两个字符串 ) #include #include main() char a20=“ABCD0EFG0“,b=“IJK“; strcat(a,b); printf(“%sn“,a); 程序运行后的输出结果是( )。 ( A) ABCDIJK ( B) ABCDE0FG0IJK ( C) IJK ( D) EFGIJK 10 有以下程序 #include main() char s=“012xy“; int i,n=0; for(i=0;si!=0;i+) if(si=a else return(n+fun(n-1); main() int x; scanf(“%d

6、“, x=fun(x); printf(“%dn“,x); 执行程序时,给变量 x输入 10,程序的输出结果是( )。 ( A) 55 ( B) 54 ( C) 65 ( D) 45 12 以下能正确定义字符串的语 句是( )。 ( A) char str=“0“; ( B) char str=“x43“; ( C) char str=; ( D) char str=064; 13 以下关于字符串的叙述中正确的是( )。 ( A)空串比空格打头的字符串小 ( B)两个字符串中的字符个数相同时才能进行字符串大小的比较 ( C)可以用关系运算符对字符串的大小进行比较 ( D) C语言中有字符串类型

7、的常量和变量 14 若要求从键盘读入含有空格字符的字符串,应使用函数( )。 ( A) gets() ( B) getc() ( C) getchar() ( D) scanf() 15 若有以下程序 #include main() int i,j=0; char a=“How are you!“; for (i=0; ai; i+) if (ai != ) aj+=ai; aj=0; printf(“%sn“,a); 则程序的输出结果是( )。 ( A) Howareyou! ( B) Howareyou ( C) Hay! ( D) How are you! 16 若有以下程序 #incl

8、ude main() char a20, b =“The sky is blue.“; int i; for (i=0; i表示回车符 ) Fig flower is red. 则输出结果是( )。 ( A) wer is red.Fig flo is blue. ( B) wer is red.Fig flo ( C) wer is red.The sky is blue. ( D) Fig flower is red.The sky is blue. 17 若有以下程序 #include main() int i, j=0; char a=“How are you!“, b10; for

9、( i=0; ai; i+ ) if (ai = ) bj+=ai+1; bj=0; printf(“%sn“,b); 则程序的输出结果是( )。 ( A) ay ( B) Howareyou ( C) Hay! ( D) Howareyou! 18 若有以下程序 #include main() char a20, b =“The sky is blue.“; int i; for (i=0; i 则输出结果是( )。 ( A) Fig flower is red. ( B) Fig flower is red.is blue. ( C) Fig floweris red. ( D) Fig

10、floweris 19 若有以下程序 #include main() char w20=“dogs“, a510=“abcdef“, “ghijkl“, “mnopq“, “rstuv“, “wxyz .“; int i, j, k; for (i=0; wi; i+) for (j=0; j #include main() char a10 = “abc“, b10 = “012“, c10 = “xyz“; strcpy( a+1, b+2 ); puts( strcat( a, c+1 ) ); 程序运行后的输出结果是( )。 ( A) a2yz ( B) bc2yz ( C) a12x

11、yz ( D) 12yz 26 以下选项中,没有编译错误的是( )。 ( A) char str3 = d, e, b, u, g, 0; ( B) char str15 = “pass“, str26; str2 = str1; ( C) char name10; name = “china“; ( D) char str4; str4 = “hello world“; 27 有以下程序 #include main() char a510 = “one“, “two“, “three“, “four“, “five“ ; int i, j; char t; for ( i=0; ia j0

12、) t=ai0; ai0=aj0; aj0=t; puts(a1); 程序运行后的输出结果是( )。 ( A) fwo ( B) owo ( C) two ( D) fix 28 有以下程序 #include #include main() int i; char a=“How are you!“; for (i=0; ai; i+) if (ai = ) strcpy(a, printf(“%sn“,a); 程序的运行 结果是( )。 ( A) are you! ( B) Howareyou! ( C) areyou! ( D) you! 29 有以下程序 #include main() c

13、har b310; int i; for (i=0; i 则输出结果是( )。 ( A) Figflower is red. ( B) Figfloweris red. ( C) Figflowerisred. ( D) Fig flower is red. 30 有以下程序 #include #include main() char w20, a510=“abcdef“, “ghijkl“, “mnopq“, “rstuv“, “wxyz.“; int i; for (i=0; i #include main() int i; char a=“How are you!“; for (i=0;

14、 ai; i+) if (ai = ) strcpy(a, i=0; printf(“%sn“,a); 程序的运行结果是( )。 ( A) you! ( B) Howareyou! ( C) areyou! ( D) are you! 32 有以下程序 #include main() char b410; int i; for (i=0; i则输出结果是( ) 。 ( A) Figflowerisred. ( B) Figfloweris red. ( C) Figflower is red. ( D) Fig flower is red. 33 有以下程序 #include #include

15、 main() char w20, a510=“abcdef“, “ghijkl“, “mnopq“, “rstuv“, “wxyz.“; int i; for (i=0; i #include main() char str12 = s,t , r , i , n , g ; printf(“%dn“, strlen( str ) ); 程序运行后的输出结果是( )。 ( A) 6 ( B) 7 ( C) 11 ( D) 12 35 有以下程序 #include #include main() char s=“Beijing“; printf(“%dn“, strlen(strcpy( s,

16、“China“) ); 程序运行后的输出结果是( )。 ( A) 5 ( B) 7 ( C) 12 ( D) 14 36 有如下程序 #include main() char name10 = S, T, R, I, N, G; name3 = E; name5 = 0; printf(“%sn“, name); 程序运行后的输出结果是( )。 ( A) STREN ( B) STRIEG ( C) STRENG ( D) STREN0 37 设有以下定义 char s1=“0123“; char s2=0,1,2,3; 则以下叙述正确的是( )。 ( A)数组 s1的长度大于 s2的长度 (

17、 B)数组 s1和 s2的长度相同 ( C)数组 s1的长 度小于 s2的长度 ( D)数组 s1和 s2完全等价 38 有以下程序 #include main() char *mm4=“abcd“,“1234“,“mnop“,“5678“; char *pm=mm; int i; for(i=0; i读入到 str中的程序段是( )。 ( A) char str80; scanf(“%s“,str) ; ( B) char str80; int i=0; while(stri+=getchar()!=n); stri=0; ( C) char str80; gets(str); ( D) c

18、har str80, *ps=str; do scanf(“%c“,ps); while(*ps+ !=n); *(ps)=0; 国家二级 C语言机试(数组)模拟试卷 2答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 考查二维数组的初始化。初始化二维数组的时候若给数组的全部元素均赋初值,此时第一维的元素个数可以不指定,部分赋值时,最后一行元素不写完整,此时数组第一维元素个数仍然可以不指定。题中为按行给数组 m赋值,最后一行只有部分赋初值,答案选 A。 【知识模块】 数组 2 【正确答案】 A 【试题解析】 数组名表示该数组的首地址,是一个地址常量,所以 sizeof(p)求得的是

19、一个地址占用的字节数,即 4个字节,答案选 A。 【知识模块】 数组 3 【正确答案】 A 【试题解析】 :二维数组存放字符串, str1表示的是第二个字符串的首地址,strlen()函数的功能是计算字符串的实际长度(不包含结束标志),所以求得的字符串长度为 10,输出的答案为 A)。 【知识模块】 数组 4 【正确答案】 A 【试题解析】 该程序段的作用是统计字符串中数字的个数,由于 ?0?为字符串结束符,遇到 ?0?时即认为该字符串结束,所以答案选 A。 【知识模块】 数组 5 【正确答案】 A 【试题解析】 strlen()函数的功能为计算字符串的实际长度(不包含结束标志),所以答案选

20、A。 【知识模块】 数组 6 【正确答案】 A 【试题解析】 strcat(字符数组 ,字符串 )函数的功能是把 “字符串内容 “连接到 “字符数组 “中的字符串尾端,所以语句 “strcat(p, r); “执行完毕之后, p中的字符为 ?a?, ?b?, ?c?, ?d?, ?a?, ?b?,?c?, ?d?, ?e?。 strcpy(字符数组 ,字符串 )函数的功能是把 “字符串 ”复 制到 “字符数组 ”中,将字符数组中原有的内容覆盖,并且添加结束标志 ?,所以语句 “strcpy(p+strlen(q), q);”执行完毕后, p中的字符为?a?, ?b?, ?c?, ?a?, ?b

21、?, ?c?, ?, ?d?, ?e?。 strlen()计算的是结束标志符之前的字符串长度,所以答案选 A。 【知识模块】 数组 7 【正确答案】 A 【试题解析】 字符串比较函数 strcmp(字符串 1,字符串 2)得返回值为若字符串 1与字符串 2相同则返回 0,若字符串 1小于字符串 2则返回负整数,若 字符串 1大于字符串 2则返回正整数。要输出字符指针 s1指向的字符串,则需保证条件判定语句为真,调用语句 puts(s1)输出即可,易知答案选 A。 【知识模块】 数组 8 【正确答案】 A 【试题解析】 函数 islower (ch)的返回值是:若 ch为小写字母则返回 true

22、,否则返回 NULL(0)。函数 fun()的功能是将空格前的小写字母改成对应的大写字母,所以答案选 A。 【知识模块】 数组 9 【正确答案】 A 【试题解析】 strcat(字符数组 ,字符串 )函数的功能是把 “字符串 内容 “连接到 “字符数组 “中的字符串尾端,而字符串的尾端用结束标记 ?0?标识,所以语句 “strcat(a, b); “执行完毕之后,在字符 ?D?后面连接数组 b中的字符串。答案选 A。 【知识模块】 数组 10 【正确答案】 A 【试题解析】 该程序段的功能是统计字符数组 s中小写英文字母的个数,所以答案选 A。 【知识模块】 数组 11 【正确答案】 A 【试

23、题解析】 考查函数的递归调用。函数 fun()的功能是计算 1到 n的数字之和,当传入的参数为 10时,返回的最终结果为 55,答案选 A。 【知识模块】 数组 12 【正确答案】 A 【试题解析】 字符串需要用一个字符数组或者字符指针来存储,所以选项 B)错误;字符串常量是由两个双引号引起来的若干字符所构成的字符序列,单引号括起来的为单个字符,选项 C)、 D)错误;所以答案选 A)。 【知识模块】 数组 13 【正确答案】 A 【试题解析】 两个任意长度的字符串均可以使用字符串比较函数 strcmp()来比较大小,选项 B)错误; C语言中只能使用字符串比较函数比较字符串大小而不能使用关系

24、运算符,选项 C)错误; C语言中 没有字符串类型,选项 D)错误。字符串比较函数 strcmp()的计算规则是从左至右依次比较字符串 1和字符串 2对应位置的字符的 ASCII码,空字符串的 ASCII码为 0,而以空格开头的字符串的 ASCII码值为 32,选项 A)表述正确,答案选 A)。 【知识模块】 数组 14 【正确答案】 A 【试题解析】 getc()、 getchar()能输入单个字符,在 C语言中能输入字符串的函数有 scanf()和 gets(),但是在 scanf()函数中,空格和回车都会作为分隔符,而gets()函数则会将空格作为普通 字符输入,回车作为分隔符,所以答案

25、选 A。 【知识模块】 数组 15 【正确答案】 A 【试题解析】 for循环将非空格的字符放置到了数组前部(见语句 “if (ai != ? ?) aj+=ai;“),然后在调整的非空格字符后面添加了字符串结束标识符,输出的即是去除了空格的字符串,答案选 A。 【知识模块】 数组 16 【正确答案】 A 【试题解析】 该程序段中,输入函数 scanf()读入共 7个字符,分别是 Fig flo,这些字符覆盖掉数组 b中的前 7个字符,所以 for循环结束后, b中元素为 “Fig flo is blue.“。 gets()函数则会将剩余的字符串读入到字符数组 a中,所以 a中存入的字符串为

26、“wer is red.“。所以答案选 A。 【知识模块】 数组 17 【正确答案】 A 【试题解析】 for循环的作用是把数组 a中空格符的下一个字符存放在数组 b中,所以输出结果为 “ay“,答案选 A。 【知识模块】 数组 18 【正确答案】 A 【试题解析】 for循环是读入 10个字符到数组 a中, for循环结束后给数组 a加上字符串结束符,所以 调试时 a中的数据为 F, i, g, , f, l, o, w,e, r, 。剩余的字符串由 gets()函数输入到数组 b中,系统会自动用 来结束字符串的输入,此时 b中的数据为 , i, s, r, e, d, . , , s, ,

27、 b,l, u, e, .v, 。 printf输出 b时,默认在第一个 停止,所以输出结果为选项 A)。 【知识模块】 数组 19 【正确答案】 A 【试题解析】 最外层 for循环遍历数组 w,内两层循环遍 历二维数组 a,并用两条相同的 if语句跳出内两层循环,并输出此时的 j、 k值。这段代码的功能是在数组 a中查找与数组 w每个字符相同的第一个字符下标并输出,所以输出结果为0,3,2,2,1,0,3,1,答案选 A。 【知识模块】 数组 20 【正确答案】 A 【试题解析】 通过赋初值的方式把一个字符串赋给字符数组必须要在字符串的末尾加上结束标识符 0,没有 0的不能判定该字符数组存

28、放的是字符串,选项 A)正确;用字符数组存放字符串的时候,字符数组的元素个数至少要比存放的字符串长度要多 1,因为结束 标识符也会被写入到字符数组中,选项 B)错误; C语言中没有字符串类型,选项 C)错误;字符数组的最后一个元素不一定为 0字符,只有存放字符串的时候才会在末尾加上 0字符,选项 D)错误,所以答案选A)。 【知识模块】 数组 21 【正确答案】 A 【试题解析】 C语言中没有为字符串提供整体操作的运算符,但是提供了相应的字符串处理函数对字符串进行处理,选项 A)正确,选项 C)错误; strlen()函数的功能是计算字符串的实际长度(不包含结束标志),而字符串实际占用内存会包

29、含结束标识符,选项 B) 错误;每个字符串末尾都会有一个结束标识符,但是拼接后只保留了一个,计算字符串占用内存时结束标识符也会占用 1个字节,所以要小于两个原串占用空间的和,选项 D)错误;答案选 A)。 【知识模块】 数组 22 【正确答案】 A 【试题解析】 字符数组名为一个地址常量,不能进行赋值类操作,所以不能把一个字符串的地址赋值给该字符数组名,选项 A)正确;字符串常量被处理成一个无名字符型数组时,结束标识符 0也作为该字符数组的一个元素,所以应该有 6个元素,选项 B)错误;而在用字符数组存放字符串的时候,也要保 证数组维数要比字符串长度大,选项 C)错误;不能把字符串赋给字符数组

30、名,选项 D)错误;答案选 A)。 【知识模块】 数组 23 【正确答案】 A 【试题解析】 C语言编译系统会自动为字符串添加上结束标识符 ,选项 A)正确;,语句 “char str10 = “string! “;“ 和 “char str10 = “string! “;“是直接把字符串常量赋值给字符数组的两种形式,两者等价,选项 B)、 C)错误;字符数组存放字符串时 C语言编译系统会自动在其后面添加上结束标识符 0, 所以 str中元素个数要比字符串长度大,选项 D)错误;答案选 A)。 【知识模块】 数组 24 【正确答案】 A 【试题解析】 字符数组存放字符串时 C语言编译系统会自动

31、在其后面添加上结束标识符 ?0?,数组 str的维数没有指定,所以 str含有的元素个数(占用字节数)要比字符串长度大 1,所以用 sizeof(str)求得的字符串占用字节数为 6,用strlen(str)计算出的字符串长度为 5,答案选 A。 【知识模块】 数组 25 【正确答案】 A 【试题解析】 语句 “strcpy( a+1, b+2 );“将数组 b第三个元素以及后面的元素“20000000“覆盖数组 a的第二个元素以及后面的字符,执行完毕后, a中字符串为 “a2“。语句 “strcat( a, c+1 “将字符数组 c第二个元素往后的字符串链接到数组 a的字符串的尾部,执行完毕

32、后, a中字符串为 “a2yz“,所以答案选 A。 【知识模块】 数组 26 【正确答案】 A 【试题解析】 字符数组为指针常量,不能进行赋值性操作,选项 B)、 C)、D)错误;选项 A)赋值正确,答案选 A)。 【知识模块】 数组 27 【正确答案】 A 【试题解析】 两层 for循环当中,外层循环 i从 0到 1,内层循环 j从 i+1到 4。该段代码的逻辑是将二维数组中存放的字符串的首位字符按照 ASCII码值从小到大排序,类似于冒泡排序,不过外层只循环了两次。所以头两个字符串的首位存放的均是字符 ?f?,输出 a1为 “fwo“,答案选 A。 【知识模块】 数组 28 【正确答案】

33、A 【试题解析】 for循环的作用是把数组 a中第一个空格后面的字符串覆盖掉数组a中的数据,所以输出结果为 “are you!“,答案选 A。 【知识模块】 数组 29 【正确答案】 A 【试题解析】 scanf()输入字符串的时候,空格和回车符均为分隔符,所以不能记录空格,即 b0= “Fig“, b1= “flower“。 gets()输入字符串时空格可以作为普通字符输入,所以 b2= “ is red. “,所以输出结果为选项 A 【知识模块】 数组 30 【正确答案】 A 【试题解析】 该段代码的逻辑是:将二维字符数组 a中每个字符串位于中间的字符存放在数组 w中并输出,所以答案选 A

34、。 【知识模块】 数组 31 【正确答案】 A 【试题解析】 该段程序的作用是将最后一个空格后面的字符串覆盖数组 a中的数据,所以 for循环执行完毕后, a=“you! “,所以答案选 A。 【知识模块】 数组 32 【正确答案】 A 【试题解析】 scanf()输入字符串的时候,空格和回车符均为分隔符,所以不能记录空格,即 b1= “Fig“, b2= “flower“, b2= “is“, b3= “red. “,所以输出结果为选项 A 【知识模块】 数组 33 【正确答案】 A 【 试题解析】 该段代码的逻辑是:将二维字符数组 a中每个字符串最后一个字符存放在数组 w中并输出,所以答案

35、选 A。 【知识模块】 数组 34 【正确答案】 A 【试题解析】 strlen()函数的功能是计算字符串的实际长度(不包含结束标志),所以求得的字符串长度为 6,输出的答案为选项 A)。 【知识模块】 数组 35 【正确答案】 A 【试题解析】 strcpy(s,“China“)将字符串 “China“覆盖 s中的字符串,之后s=?C?,?h?,?i?,?n?,?a?,?0?,?g?,?0?, strlen()计算的是字符串的实际长度 (不包含结束标识符 ),即统计的是第一个 ?0?前字符个数,所以输出结果为 5,答案选A。 【知识模块】 数组 36 【正确答案】 A 【试题解析】 语句 “

36、name3 = ?E?;“将数组 name第四个字符 ?I?变为字符 ?E?,语句 “name5 = 0;“则将数组 name的第六个字符 ?G?变为 ?0?,这两句执行完毕后,字符数组前六位元素为 “STREN0“。 【知识模块】 数组 37 【正确答案】 A 【试题解 析】 字符数组 s2的末尾字符不为 ?0?,所以存放的并不是字符串,所以s2的字符个数为 4,数组长度也为 4; C语言中,若直接把一个字符串赋值给字符数组,系统会自动在末尾加上结束标识符 ?0?并放置到该字符数组中,所以 s1中的字符个数为 5,数组长度也为 5,答案选 A。 【知识模块】 数组 38 【正确答案】 A 【试题解析】 输出语句 “printf(“%s“,pmi+i);“表明输出以 pmi+i为首地址的之后的字符串,输出语句共执行 4次,输出以 p0,p1+1,p2+2,p3+3为起始位置的字符串,分别为 “abcd“, “234“, “op“, “8“,所以答案选 A。 【知识模块】 数组 39 【正确答案】 A 【试题解析】 scanf()函数输入字符串时,空格和回车都会作为分隔符,所以选项A)只能把字符串 “This“记录到 str中,不能读入完整的字符串,答案选 A)。 【知识模块】 数组

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

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