1、国家二级 C语言(函数和数组)机试模拟试卷 4及答案与解析 一、选择题 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(*P!=0)
2、 p+; return(p-s); main() printf(“ d n“, fun(“0ABCDEF“); 程序运行后的输出结果是 ( A) 6 ( B) 7 ( C) 1 ( D) 0 7 若有以下程序段 char str41 2=“aa“, “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;以下不能将一行 (不超过 80个
3、字符 )带有空格的字符串正确读入的语句或语句组是 ( A) while(si+=getchar()!= n); si= 0; ( B) scanf(“ s“,s); ( C) gets(s); ( D) doscanf(“ c“, 置换 a20=C a30=t;此时, a20=f,a10=t,再置换a20=t, a10=C;当 i=3时, j=4, a30=f=a430=f;不置换:所以 a1的结果为 fwo。 【知识模块】 函数和数组 17 【正确答案】 B 【试题解析】 本题考查标准输入输出函数和循环语句。 gets(s)函数的作用是将输入的字符读入字符串 s,直到遇到回车。而 scanf
4、()函数接收字符串时的结束标志为回车或者空格。 【知识模块】 函数和数组 18 【正确答案】 A 【试题解析】 选项 A计算的是 p字符数组首地址所占的内存字节数,返回值数组中所有元素占有的空间。 *q和 p0分别表示数组 p中下标为 0的字符元素,选项 B和 D)都可以计算 char型数据占有的字节数。 【知识模块】 函数和数组 19 【正确答案】 B 【试 题解析】 在主函数中定义了二维字符数组 str,并对它赋初值。定义字符指针 p,并把字符串 str1的地址赋给它。所以这时字符指针 p指向字符串“one*Drcam!”,然后在两个输出语句中,分别输出这个字符串的长度 10和字符串本身。
5、 【知识模块】 函数和数组 20 【正确答案】 C 【试题解析】 在主函数中的 for循环语句中,当 si的值不等于 0 9之间的数字时,结束循环语句的执行。由字符数组 s的初值可以得到 for循环语句执行了三次,所以变量 n的值等于 3。 【知识模块】 函数和数组 21 【正确答案】 D 【试题解析】 在选项 D中,不能把 s所指字符串的结束标志符赋给字符串 t。 【知识模块】 函数和数组 22 【正确答案】 A 【试题解析】 选项 A中定义了指针变量 s,通过赋值语句保存字符串常量的地址,而字符数组绝对不能赋值,而只能初始化或者输入。 【知识模块】 函数和数组 23 【正确答案】 C 【试
6、题解析】 在程序中语句 pc=ch;的功能是字符指针 pc指向字符串数组 ch的地址,而 *(ps+5)表示字符串数组 ch中第 6个字符 z。 【知 识模块】 函数和数组 24 【正确答案】 D 【试题解析】 这段程序的功能求出字符串 s中字符在小写字符 a到 z之间字符的个数。在程序中字符串 s的值为 “012xy”,所以在 7符串 s中符合要求的字的个数等于 2。 【知识模块】 函数和数组 25 【正确答案】 B 【试题解析】 字符串常量是用一对双括号括起来的一串字符。它用字符数组来存放,不用一对大括号对括起来。 【知识模块】 函数和数组 26 【正确答案】 C 【试题解析】 C语言本身
7、并没有设置一种类型来定义字符串变量,却 允许使用“字符串常量 ”。字符串常量是由双引号括起来的一串字符。任意两个字符串的大小比较要调用字符串比较函数 strcmp(s1, s2)来进行,其比较的方法是依次对 s1和 s2中对应位置上的字符两两进行比较,当出现第一对不相同的字符时,即由这两个字符决定所在串的大小 (比较字符大小的依据是其 ASCII码值 )。 【知识模块】 函数和数组 27 【正确答案】 B 【试题解析】 scanf()语句中用 “空格 ”间隔不同的字符串,空格将被全部忽略掉,所以用 scanf()函数不能输入空格; getchar()函数用于输入字符,其调用形式为:ch=get
8、chan), getchav()函数从终端读入一个字符作为函数值,把读入的一个字符赋给变量 ch。在输入时,空格、回车符都将用于字符读入,而且只有在用户敲入Enter.键时,读入才丌始执行。 gets()函数的调用形式为: gets(str_adr),其中str_adr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。 gets()函数用来从终端键盘读入字符串 (包括空格符 ),直到读入一个换行符为止。 getc()函数的调用形式为: ch=getc(pf)其中 pf是文件指针。函数的功能是从 pf指定的文件中读入一个字符,并把它作为函数值返回。 【知识模块】 函
9、数和数组 28 【正确答案】 D 【试题解析】 因为字符数组 s的数组名 s表示的是一个地址常量。所以语句“s+=2; ”不能将指针存当前化置的基础上再向后移动两位。因而程序编译时出错。 【知识模块】 函数和数组 29 【正确答案】 D 【试题解析】 本题在主函数中定义了一个字符二维数组 str10,并用“Mon”, “True”, “Wed” , “Thu”, “Fri”, “Sat”, “Sun”初始化。函数fun(charp10)的功能是统计出 p10中 pi0等于字符 T的个数。所以 fun(str)的功能是统计一周七天中英文名称首字母为 “T”的个数。因为字符串 “True”和“Thu”的首字符是 “T”, 所以 n=2。 【知识模块】 函数和数组