国家二级C语言机试(函数和数组)模拟试卷23
选择题
1.下面是有关C语言字符数组的描述,其中错误的是(D)
A. 不可以用赋值语句给字符数组名赋字符串
B. 可以用输入语句把字符串整体输入给字符数组
C. 字符数组中的内容不一定是字符串
D. 字符数组只能存放字符串
解析:本题考查字符数组。选项A、B)和C)都是正确的,字符数组存放其他数据。
2.以下选项中有语法错误的是
A
解析:本题考查字符数组的定义和使用。选项A定义了一个二维字符数组,第二句是直接给字符数组赋值错误,C语言中不能直接给字符数组赋值;选项B、C)和D)都是正确的。
3.下列叙述中正确的是(C)
A. 两个连续的单引号(\\
B. 可以对字符串进行关系运算
C. 两个连续的双引号(\\
D. 空字符串不占用内存,其内存空间大小是0
解析:两个连续的双引号:\\
4.以下选项中,能正确进行字符串赋值的是
B
解析:对于选项A字符串中无法存放字符串结束标志’\0’,选项C每行仅仅存放5个字符,同样的不能存放字符串结束标志,选项D中指针变量s没有实际的内存空间,无法存放输入的字符串。因此正确的选项为B),相当于char*s:s=\\
5.有以下程序
#include
int fun(char s[]){char*p=s;
while(*p!=0)p++;
return(p-s):}
main(){printf(\\(B)
A. 6
B. 7
C. 1
D. 0
解析:函数fun的主要功能是计算字符串中实际字符的个数,因此主函数中调用fun得到结果为7。
6.若有以下程序段
char str[4][12]={\\(A)
A. strp
B. str[0]
C. strp[3]
D. *strp
解析:程序段中定义指针数组*strp,含有4个元素,for循环strp分别保存了二维数组str中的4个字符串的首地址,因此strp为二级地址,不能保存字符串的首地址,*strp或者strp[0]中存放了字符串\\
7.以下叙述中正确的是
B
解析:选项B中除了字符串中实际字符之外,还要存储字符串结束标志,应为5个元素。在C语言中没有字符串数据类型,因此选项C不正确,选项D字符数组不一定必须存放字符串,因此没有规定最后一个元素为字符串结束标志。
8.以下叙述中正确的是
B
解析:字符串数组,也就是二维字符数组,其中每个元素为一个字符串,选项B的说法正确。选项A和C)对于ca的定义是正确的。选项D定义一个指针数组,可以保存多个字符串的首地址。
9.以下叙述中正确的是(D)
A. 函数调用“str1en(s);”会返回字符串s实际占用内存的大小(以字节为单位)
B. 两个字符串可以用关系运算符进行大小比较
C. 当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和
D. C语言本身没有提供对字符串进行整体操作的运算符
解析:C语言中没有运算符可以处理字符串,要调用“string”库中的函数来处理字符串,其中str1en函数主要测试字符串中实际字符的个数,比实际占用的内存至少要少一个。Strcat(s1,s2)函数用于连接两个字符串,是把字符串s2连接到s1的后面。
10.以下叙述中正确的是(A)
A. 不能用字符串常量对字符数组名进行整体赋值操作
B. 字符串常量“Hello”会被隐含处理成一个无名字符型数组,它有5个元素
C. “char str[7]=\\
D. “char*str;str=\\
解析:字符数组仅仅可以采用定义时初始化以及输入得到数据,在程序其他部分不允许对其进行赋值。字符串常量中除了实际字符之外还有结束标志,选项B错误,而选项C中,没有空间存放字符串结束标志,因此运行是不安全的。选项D中第一个str为指针,可以赋值,而后面的为数组,在程序中赋值出错。
11.以下叙述中正确的是(C)
A. 语句“char str[10]=\\
B. 对于一维字符数组,不能使用字符串常量来赋初值
C. 对于字符串常量“string!”,系统已自动在最后加入了“’\0’”字符,表示串结尾
D. 在语句char str[]=\\
解析:在C语言中,字符串是借助于字符型一维数组来存放的,可以借助在定义时初始化以及输入来把字符串存入数组,并规定以字符’\0’作为“字符串结束标志”。’\0’是一个转义字符,称为空值,它的ASCII码值为0。’\0’作为标志占甩存储空间,但不计入字符串的实际长度。在C语言中,系统在每个字符串的最后自动加入一个字符(’\0’)作为字符串的结束标志。
12.设有定义char str[]=\\(B)
A. 6 6
B. 6 5
C. 5 5
D. 5 6
解析:sizeof主要用于测试变量所占的实际内存,而str1en函数主要测试字符串中实际字符的个数,字符串\\
13.设有定义语句: char*aa[2]={\\(D)
A. aa数组的两个元素只能存放含有4个字符的一维数组的首地址
B. aa数组的值分别是字符串\\
C. aa是指针变量,它指向含有两个元素的字符型数组
D. aa[0]存放了字符串\\
解析:题目中char*aa[2],定义了指针数组aa,有两个元素,aa[0]存放\\
14.以下选项中,没有编译错误的是
A
解析:选项A是定义了字符数组str3[].并对其赋初值。选项B中语句str2=str1非法,字符数组小能直接赋值。选项C,D)和选项B一致。
15.有以下程序
main()
{char a[5][10]={\\(A)
A. fwo
B. owo
C. two
D. fix
解析:这个程序的执行过程是当i=0时,j=1,a[0][0]=0a[3][0]=t置换a[2][0]=f,a[3][0]=t;此时,a[2][0]=ea[1][0]=t,再置换 a[2][0]=t,a[1][0]=f,;当i=3时,i=4,a[3][0]=f=a43][0]=f;不置换;所以a[1]的结果为fwo。
16.设有定义: char s[81];int i=0;以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是
B
解析:本题考查标准输入输出函数和循环语句。gets(s)函数的作用是将输入的字符读入字符串s,直到遇到回车。而scanf()函数接收字符串时的结束标志为回车或者空格。
17.设有定义: char p[]={’1’,’2’,’3’},*q=p;以下不能计算出一个char型数据所占字节数的表达式是(A)
A. sizeof(p)
B. sizeof(char)
C. sizeof(*q)
D. sizeof(p[0])
解析:选项A计算的是p[]字符数组首地址所占的内存字节数,返回值数
本文档预览:3600字符,共6296字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载