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

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

1、国家二级 C语言(函数和数组)机试模拟试卷 17及答案与解析 一、选择题 1 有以下程序 #include stdio.h #define N 3 void fun(int aN,int b) int i,j; for(i=0;i N;i+) bi=ai0; for(j=1;j N;j+) if(bi aij) bi=aij; main() int xNN=1,2,3,4,5,6,7,8,9,yN,i; fun(x,y); for(i=0;i N;i+) printf(“%d,“,yi); printf(“n“); ( A) 1,3,5, ( B) 2,4,8, ( C) 3,5,7 ( D)

2、 3,6,9, 2 以下语句中存在语法错误的是 ( A) char ss 20= “right?“; ( B) char *ss6; ss1= “right?“; ( C) char *ss = “right?“; ( D) char ss620; ss1= “right?“; 3 下列叙述中正确的是 ( A)两个连续的单引号( )是合法的字符常量 ( B)可以对字符串进行关系运算 ( C)两个连续的双引号( “)是合法的字符串常量 ( D)空字符串不占用内存,其内存空间大小是 0 4 以下选项中,能正确进行字符串赋值的是 ( A) char s5 = A, B, C, D, E ; ( B)

3、 char *s = “ABCDE“ ; ( C) char s45 = “ABCDE“ ; ( D) char *s ; gets( s ); 5 有以下程序 #include stdio.h int fun( char s ) char *p = s; while( *p != 0 ) p+; return ( p-s ); main() printf(“%dn“, fun(“0ABCDEF“) ); 程序运行后的输出结果是 ( A) 6 ( B) 7 ( C) 1 ( D) 0 6 若有以下程序段 char str412= “aa“,“bbb“,“ccccc“,“d“ , *strp4;

4、 int i; for( i = 0; i 4; i+ ) strpi = stri; 不能正确引用字符串的选项是 ( A) strp ( B) str0 ( C) strp3 ( D) *strp 7 以下叙述中正确的是 ( A)下面的语句用赋初值方式来定义字符串,其中 ,0是必须的 char str1 = s, t, r, 1, 0; ( B)有定义语句: char str1 = “str1“; ,数组 str1将包含 4个元素 ( C)字符 串常量 “str1“的类型是 :字符串数据类型 ( D)字符数组的每个元素可存放一个字符,并且最后一个元素必须是 0字符 8 以下叙述中正确的是 (

5、 A) char ca35 = “A“, “BB“, “CCC“; 是不合语法的 ( B)字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组 ( C) char ca 5 = “A“, “BB“, “CCC“; 是不合语法的 ( D) char *ca3 = “A“, “BB“, “CCC“; 是不合语法的 9 以下叙 述中正确的是 ( A)函数调用 strlen(s);会返回字符串 s实际占用内存的大小(以字节为单位 ) ( B)两个字符串可以用关系运算符进行大小比较 ( C)当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和 ( D) C语言本身没有提供对字符串进

6、行整体操作的运算符 10 以下叙述中正确的是 ( A)不能用字符串常量对字符数组名进行整体赋值操作 ( B)字符串常量 “Hello“会被隐含处理成一个无名字符型数组,它有 5个元素 ( C) char str7 = “string!“; 在语法上是 合法的,运行也是安全的 ( D) char *str; str = “Hello“;与 char str; str = “Hello“;效果是一样的 11 以下叙述中正确的是 ( A)语句 char str10 = “string!“; 和 char str10 = “string!“; 并不等价 ( B)对于一维字符数组,不能使用字符串常量来赋

7、初值 ( C)对于字符串常量 “string!“,系统已自动在最后加入了 0字符,表示串结尾 ( D)在语句 char str = “string!“;中,数组 str的大小等于字符串的长度 12 设有定义 char str = “Hello“; 则语句 printf(“%d %d“, sizeof(str), strlen(str); 的输出结果是 ( A) 6 6 ( B) 6 5 ( C) 5 5 ( D) 5 6 13 设有定义语句: char *aa2= “abcd“,“ABCD“; 则以下叙述正确的是 ( A) aa数组的两个元素只能存放含有 4个字符的一维数组的首地址 ( B)

8、aa数组的值分别是字符串 “abcd“和 “ABCD“ ( C) aa是指针变量,它指向含有两个元素的字符型数组 ( D) aa0存放了字符串 “abcd“的首地址 14 以下选项中,没有编译错误的是 ( 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“; 15 有 以下程序 main() char a510=“one“,“two“,“three“

9、,“four“,“five“; int i,j; char t; for(i=0;i 4;i+) for(j=i+1;j 5;j+) if(ai0 aj0) t=ai0;ai0=aj0;aj0=t; puts(a1); 程序运行后的输出结果是 ( A) fwo ( B) owo ( C) two ( D) fix 16 设 有定义: char s81; int i=0; 以下不能将一行(不超过 80个字符)带有空格的字符串正确读入的语句或语句组是 ( A) while(si+=getchar()!=n);si=0; ( B) scanf(“%s“,s); ( C) gets(s); ( D)

10、do scanf(“%c“, while(si+!=n); si=0; 17 设有定义: char p=1, 2, 3,*q=p; 以下不能计算出一个 char型数据所占字节数的表达式是 ( A) sizeof(p) ( B) sizeof(char) ( C) sizeof(*q) ( D) sizeof(p0) 18 有以下程序 #include stdio.h #include string.h void main() char str20=“One*World“,“One*Dream!“,*p=str1; printf(“%d,“,strlen(p); printf(“%sn“,p);

11、 程序运行后的输出结 果是 ( A) 9,One*Dream! ( B) 10,One*Dream! ( C) 9,One*World ( D) 10,One*World 19 有以下程序 #include stdio.h void main() char s=“012xy08s34f4w2“; int i,n=0; for(i=0;si!=0;i+) if(si =0 printf(“%dn“,n); 程序运行后的输出结果是 ( A) 0 ( B) 7 ( C) 3 ( D) 8 20 以下不能将 s所指字符串正确复制到 t所指存储空间的是 ( A) for(i=0;ti=si;i+); (

12、 B) while(*t=*s)t+;s+; ( C) for(i=0,j=0;ti+=sj+; ); ( D) do*t+=*s+;while(*s ); 21 下列语句组中,正确的是 ( A) char *s;s=“Olympic“; ( B) char s7;s=“Olympic“; ( C) char *s;s=“Olympic“; ( D) char s7;s=“Olympic“; 22 有以下程序 main( ) char ch =“uvwxyz“,*pc; pc=ch; printf(“%cn“,*(pc+5); 程序运行后的输出结果是 ( A) 0 ( B)元素 ch5的地址

13、( C) z ( D)字符 y的地址 23 有以下程序 #include stdio.h void main() char s=“012xy“;int i,n=0; for(i=0;si!=0;i+) if(si =a printf(“%dn“,n); 程序运行后的输出结果是 ( A) 0 ( B) 3 ( C) 5 ( D) 2 24 以下能正确定义字符串的语句是 ( A) char str=“x43“; ( B) char str=“0“; ( C) char str=; ( D) char str=064; 25 以下关于字符串的叙述中正确的是 ( A)两个字符串中的字符个数相同时才能进

14、行字符串大小的比较 ( B)可以用关系运算符对字符串的大小进行比较 ( C)空串比空格打头的字符串小 ( D) C语言中有字符串类型的常量和变量 26 若要求从键盘读入含有空格字符的字符串,应使用函数 ( A) getc() ( B) gets() ( C) getchar() ( D) scanf() 27 有以下程序 #include stdio.h main() char s=“abcde“; s+=2; printf(“%dn“,s0); 执行后的结果是 ( A)输出字符 c的 ASCII码 ( B)输出字符 c ( C)输出字符 a的 ASCII码 ( D)程序出错 28 有下列程序

15、: fun(char p 10) int n=0,i; for(i=0;i 7;i+ +) if(pi0= = T)n+ +; return n; main( ) char str 10=“Mon“,“Tue“,“Wed“,“Thu“,“Fri“,“Sat“,“Sun“; printf(“%dn“,fun(str); 程序执行后的输出结果是 ( A) 1 ( B) 3 ( C) 0 ( D) 2 国家二级 C语言(函数和数组)机试模拟试卷 17答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 函数 fun()的作用是求出二维数组 aN中每一行中的最大元素,所以在 main()函数中执

16、行完 fun( x,y)后,数组 y中的元素为二维数组 xNN每一行的最大元素。 【知识模块】 函数和数组 2 【正确答案】 A 【试题解析】 选项 A中定义了二维数组 ss,可以用于存储字符串,但是字符串的存储不能通过赋值,仅可以初始化或者输入得到,而选项 C和 A不同,选项 C为指针数组,对于指针变量可以保存常量字符串的地址。 【知识模块】 函数和数组 3 【正确答案】 A 【试题解析】 两个连续的双引号: “,是一个字符串常量,称为 “空串 ”。 【知识模块】 函数和数组 4 【正确答案】 B 【试题解析】 对于选项 A字符串中无法存放字符串结束标志 0,选项 C每行仅仅存放 5个字符,

17、同样的不能存放字符串结束标志,选项 D中指针变量 s没有实际的内存空间,无法存放输入的字符串。因此正确的选项为 B,相当于 char *s; s=“ABCDE“,把字符串常量的首地址存放到指针变量中存储。 【知识模块】 函数和数组 5 【正确答案】 B 【试题解析】 函数 fun的主要功能是计算字符串中实际字符的个数,因此主函数中调用 fun得到结果为 7。 【知识模块】 函数和数组 6 【正确答案】 A 【试题解析】 程序段中定义指针数组 *strp,含有 4个元素, for循环 strp分别保存了二维数组 str中的 4个字符串的首地址,因此 strp为二级地址,不能保存字符串的首地址,

18、*strp或者 strp0中存放了字符串 “aa“的首地址 。所以不能正确引用字符串的为选项 A。 【知识模块】 函数和数组 7 【正确答案】 B 【试题解析】 选项 B中除了字符串中实际字符之外,还要存储字符串结束标志,应为 5个元素。在 C语言中没有字符串数据类型,因此选项 C不正确,选项D字符数组不一定必须存放字符串,因此没有规定最后一个元素为字符串结束标志。 【知识模块】 函数和数组 8 【正确答案】 B 【试题解析】 字符串数组,也就是二维字符数组,其中每个元素为一个字符串,选项 B的说法正确。选项 A和 C对于 ca的定义是正确的。选项 D定 义一个指针数组,可以保存多个字符串的首

19、地址。 【知识模块】 函数和数组 9 【正确答案】 D 【试题解析】 C语言中没有运算符可以处理字符串,要调用 “string库中的函数来处理字符串,其中 strlen函数主要测试字符串中实际字符的个数,比实际占用的内存至少要少一个。 Strcat(s1,s2)函数用于连接两个字符串,是把字符串 s2连接到 s1的后面。 【知识模块】 函数和数组 10 【正确答案】 A 【试题解析】 字符数组仅仅可以采用定义时初始化以及输入得到数据,在程序其他部分 不允许对其进行赋值。字符串常量中除了实际字符之外还有结束标志,选项 B错误,而选项 C中,没有空间存放字符串结束标志,因此运行是不安全的。选项 D

20、中第一个 str为指针,可以赋值,而后面的为数组,在程序中赋值出错。 【知识模块】 函数和数组 11 【正确答案】 C 【试题解析】 在 C语言中,字符串是借助于字符型一维数组来存放的,可以借助在定义时初始化以及输入来把字符串存入数组,并规定以字符 0作为 “字符串结束标志 ”。 0是一个转义字符,称为空值,它的 ASCII码值为 0。 0作为标志占用存 储空间,但不计入字符串的实际长度。在 C语言中,系统在每个字符串的最后自动加入一个字符( 0)作为字符串的结束标志。 【知识模块】 函数和数组 12 【正确答案】 B 【试题解析】 sizeof主要用于测试变量所占的实际内存,而 strlen

21、函数主要测试字符串中实际字符的个数,字符串 “Hello“占有内存 6个字节,而字符串中共有 5个字符。 【知识模块】 函数和数组 13 【正确答案】 D 【试题解析】 题目中 char *aa2,定义了指针数组 aa,有两个元素, aa0存 放“abcd“地址,而 aa1 存放 “ABCD“地址。 【知识模块】 函数和数组 14 【正确答案】 A 【试题解析】 选项 A是定义了字符数组 str3,并对其赋初值。 选项 B中语句str2=str1非法,字符数组不能直接赋值。选项 C, D和选项 B一致。 【知识模块】 函数和数组 15 【正确答案】 A 【试题解析】 这个程序的执行过程是当 i

22、=0时, j=1,a00=o a10=t;不置换;当 i=1时, j=2,a10=t =a20=t;不置换 ;当 i=2时, j=3,a20=ta30=f;置换 a20=f, a30=t;此时, a20=f,a10=t,再置换a20=t,a10=f,;当 i=3时, j=4,a30=f=a430=f;不置换;所以 a1的结果为fwo。 【知识模块】 函数和数组 16 【正确答案】 B 【试题解析】 本题考查标准输入输出函数和循环语句。 gets(s)函数的作用是将输入的字符读入字符串 s,直到遇到回车。而 scanf()函数接收字符串 时的结束标志为回车或者空格。 【知识模块】 函数和数组 1

23、7 【正确答案】 A 【试题解析】 选项 A计算的是 p 字符数组首地址所占的内存字节数,返回值数组中所有元素占有的空间。 *q和 p0分别表示数组 p中下标为 0的字符元素,选项 B和 D都可以计算 char型数据占有的字节数。 【知识模块】 函数和数组 18 【正确答案】 B 【试题解析】 在主函数中定义了二维字符数组 str,并对它赋初值。定义字符指针 p,并把字符串 str1的地址赋给它。所以这时字符指针 p指向字符串“One*Dream!”,然后在两个输出语句中,分别输出这个字符串的长度 10和字符串本身。 【知识模块】 函数和数组 19 【正确答案】 C 【试题解析】 在主函数中的

24、 for循环语句中,当 si的值不等于 09之间的数字时,结束循环语句的执行。由字符数组 s的初值可以得到 for循环语句执行了三次,所以变量 n的值等于 3。 【知识模块】 函数和数组 20 【正确答案】 D 【试题解析】 在选项 D中,不能把 s所指字符串的结束标志符赋给字符串 t。 【知识模块】 函数和数组 21 【正确答案】 A 【试题解析】 选项 A中定义了指针变量 s,通过赋值语句保存字符串常量的地址,而字符数组绝对不能赋值,而只能初始化或者输入。 【知识模块】 函数和数组 22 【正确答案】 C 【试题解析】 在程序中语句 pc=ch;的功能是字符指针 pc指向字符串数组 ch

25、的地址,而 *(ps+5)表示字符串数组 ch 中第 6个字符 z。 【知识模块】 函数和数组 23 【正确答案】 D 【试题解析】 这段程序的功能求出字符串 s中字符在小写字符 a到 z之间字符的个数。在程序中 字符串 s的值为 “012xy”,所以在字符串 s中符合要求的字符的个数等于 2。 【知识模块】 函数和数组 24 【正确答案】 B 【试题解析】 字符串常量是用一对双括号括起来的一串字符。它用字符数组来存放,不用一对大括号对括起来。 【知识模块】 函数和数组 25 【正确答案】 C 【试题解析】 C语言本身并没有设置一种类型来定义字符串变量,却允许使用“字符串常量 ”。字符串常量是

26、由双引号括起来的一串字符。任意两个字符串的大小比较要调用字符串比较函数 strcmp(s1,s2 )来进行 ,其比较的方法是依次对 s1和s2中对应位置上的字符两两进行比较,当出现第一对不相同的字符时,即由这两个字符决定所在串的大小(比较字符大小的依据是其 ASC 码值)。 【知识模块】 函数和数组 26 【正确答案】 B 【试题解析】 scanf() 语句中用 “空格 ”间隔不同的字符串,空格将被全部忽略掉,所以用 scanf()函数不能输入空格; getchar()函数用于输入字符,其调用形式为: ch=getchar(),getchar()函数从终端读入一个字符作为函数值,把读入的一个字

27、符赋给变量 ch。在 输入时,空格、回车符都将用于字符读入,而且只有在用户敲入 Enter键时,读入才开始执行。 gets()函数的调用形式为: gets(str_adr),其中str_adr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。 gets()函数用来从终端键盘读入字符串 (包括空格符 ),直到读入一个换行符为止。 getc()函数的调用形式为: ch=getc(pf)其中 pf是文件指针。函数的功能是从 pf指定的文件中读入一个字符,并把它作为函数值返回。 【知识模块】 函数和数组 27 【正确 答案】 D 【试题解析】 因为字符数组 s 中的数组名

28、 s表示的是一个地址常量。所以语句“s+=2; ”不能将指针在当前位置的基础上再向后移动两位。因而程序编译时出错。 【知识模块】 函数和数组 28 【正确答案】 D 【试题解析】 本题在主函数中定义了一个字符二维数组 str 10,并用“Mon”, “Tue”, “Wed” , “Thu”, “Fri”, “Sat”, “Sun”初始化。函数 fun(char p 10)的功能是统计出 p 10中 p i0等于字符 T的个数。所以 fun(str)的功能是统计一周七天中英文名称首字母为 “T”的个数。因为字符串 “Tue”和 “Thu”的首字符是 “T”, 所以 n=2。 【知识模块】 函数和数组

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

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

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