1、国家二级 C语言(函数和数组)机试模拟试卷 13及答案与解析 一、选择题 1 设有定义: int x23;则以下关于二维数组 x的叙述错误的是 ( A)数组 X可以看作是由 x0和 x1两个元素组成的一维数组 ( B)可以用 x0=0;的形式为数组所有元素赋初值 0 ( C)元素 x0可看作是由 3个整型元素组成的一维数组 ( D) x0和 x1是数组名,分别代表一个地址常量 2 有以下程序 #inclUde #define N 3 void fun(int aN, int b) int i, j ; for(i=0 ; i int fun(char s) char *p=s; while(*
2、p!=0) p+; return(p-s); main() printf(“ d n“, fun(“0ABC DEF“); 程序运行后的输出结果是 ( A) 6 ( B) 7 ( C) 1 ( D) 0 7 若有以下程序段 char str412=“as“, “bbb“, “ccccc“, “d“), *strp4; int i ; for(i=0; iaj0) t=ai0; ai0=aj0; aj0=t; ) puts(a1); 程序运行后的输出结果是 ( A) fwo ( B) owo ( C) two ( D) fix 17 设有定义: char s81; int i=0;以下不能将一行
3、 (不超过 80个字符 )带有空格的字符串正确读入的语句或语 句组是 ( A) while(si+=getchar()?= n)=si= 0; ( B) scanf(“ s“, s); ( C) gets(s); ( D) doscanf(“ c“, &si); while(si+!= n); si= 0; 18 设有定义: char p=1, 2, 3, *q=p;以下不能计算出一个 char型数据所占字节数的表达式是 ( A) sizeof(p) ( B) sizeof(char) ( C) sizeof(*q) ( D) sizeof(p0) 19 有以下程序 #include #inc
4、lude void main() char str20=“One*World“, “One*Dream!“, *p=str1; printf(“ d, “, strlen(p); printf(“ s n“, p); 程序运行后的输出结果是 ( A) 9 One*Dream! ( B) 10 One*Dream? ( C) 9 One*World ( D) 10 One*World 20 有以下程序 #include void main() char s=“012xy 08s 34f4w2“; int i, n=0 ; for(i=0; si!=0; i+) if(Si=0&Si void m
5、ain() char s=“012xy“; int i, n=0 ; for(i=0; si!=0; i+) if(si=a&sia30=f;置换 a20=f, a30=t;此时, a20=Ca10=t,再置换a20=t, a10=f,;当 i=3时, j=4, a30=f=a430=f;不置换;所以 a1的结果为 fwo。 【知识模块】 函数和数组 17 【正确答案】 B 【试题解析】 本题考查标准输入输出函数和循环语句。 gets(s)函数的作用是将输入的字符读入字符串 s,直到遇到回车。而 scanf7()函数接收字符串时的结束标志为回车或者空格。 【知识模块】 函数和数组 18 【正确
6、答案】 A 【试题解析】 选项 A)计算的是 p字符数组首地址所占的内存字节数,返回值数组中所有元素占 有的空间。 *q和 p0分别表示数组 p中下标为 0的字符元素,选项 B)和 D)都可以计算 char型数据占有的字节数。 【知识模块】 函数和数组 19 【正确答案】 B 【试题解析】 在主函数中定义了二维字符数组 str,并对它赋初值。定义字符指针 p,并把字符串 str1的地址赋给它。所以这时字符指针 p指向字符串“One*Dream!”,然后在两个输出语句中,分别输出这个字符串的长度 10和字符串本身。 【知识模块】 函数和数组 20 【正确答案】 C 【试题解析】 在主函数中的 f
7、or循环语句中,当 si的值不等于 0 9之间的数字时,结束循环语句的执行。由字符数组 s的初值可以得到 for循环语句执行了三次,所以变量 n的值等于 3。 【知识模块】 函数和数组 21 【正确答案】 D 【试题解析】 在选项 D)中,不能把 s所指字符串的结束标志符赋给字符串 t。 【知识模块】 函数和数组 22 【正确答案】 A 【试题解析】 选项 A)中定义了指针变量 s,通过赋值语句保存字符串常量的地址,而字符数组绝对不能赋值,而只能初始化或者输入。 【知识模块】 函数和数组 23 【正确答案】 C 【试题解析】 在程序中语句 pc=ch;的功能是字符指针 pc指向字符串数组 ch
8、的地址,而 *(ps+5)表示字符串数组 ch中第 6个字符 z。 【知识模块】 函数和数组 24 【正确答案】 D 【试题解析】 这段程序的功能求出字符串 s中字符在小写字符 a到 z之间字符的个数。在程序中字符串 s的值为 “012xy”,所以在字符串 s中符合要求的字符的个数等于 2。 【知识模块】 函数和数组 25 【正确答案】 B 【试题解析】 字符串常量是用一对双括号括 起来的一串字符。它用字符数组来存放,不用一对大括号对括起来。 【知识模块】 函数和数组 26 【正确答案】 C 【试题解析】 C语言本身并没有设置一利,类型来定义字符串变量,却允许使用“字符串常量 ”。字符串常量是
9、由双引号括起来的一串字符。任意两个字符串的大小比较要调用字符串比较函数 strcmp(s1, s2)来进行,其比较的方法是依次对 s1和 s2中对应位置上的字符两两进行比较,当出现第一对不相同的字符时,即由这两个字符决定所在串的大小 (比较字符大小的依据是其 ASCII码值 )。 【知识模块 】 函数和数组 27 【正确答案】 B 【试题解析】 scanf()语句中用 “空格 ”间隔不同的字符串,空格将被全部忽略掉,所以用 scanf()函数不能输入空格; getchar()函数用于输入字符,其调用形式为:ch=getchar(), getchar()函数从终端读入一个字符作为函数值,把读入的
10、一个字符赋给变量 ch。在输入时,空格、回车符都将用于字符读入,而且只有在用户敲入Enter键时,读入才开始执行。 gets()函数的调用形式为: gets(str_adr),其中str_adr是存放输入字符串 的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。 gets()函数用来从终端键盘读入字符串 (包括空格符 ),直到读入一个换行符为止。 getc()函数的调用形式为: ch=getc(pD其中 pf是文件指针。函数的功能是从 pf指定的文件中读入一个字符,并把它作为函数值返回。 【知识模块】 函数和数组 28 【正确答案】 D 【试题解析】 因为字符数组 s中的数组名
11、s表示的是一个地址常量。所以语句“s+=2; ”不能将指针在当前位置的基础上再向后移动两位。因而程序编译时出错。 【知 识模块】 函数和数组 29 【正确答案】 D 【试题解析】 本题在主函数中定义了一个字符二维数组 str10,并用“Mon”, “Tue”, “Wed” , “Thu”, “Fri”, “Sat”, “Sun”初始化。函数 fun(char p10)的功能是统计出 p10中 pi0等十字符 T的个数。所以 fun(str)的功能是统计一周七天中英文名称首 7母为 “T”的个数。因为字符串 “Tue”和 “Thu”的首字符是 “T”, 所以 n=2。 【知识模块】 函数和数组
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1