计算机二级

若有下面的程序段:char s[]="china";char*p;p=s;则下列叙述正确的是A.s和p完全相同B.数组s中的内容和指针变量p中的内容相等C.s数组长度和p所指向的字符串长度相等D.*p与s[0]相等

题目

若有下面的程序段:char s[]="china";char*p;p=s;则下列叙述正确的是

A.s和p完全相同

B.数组s中的内容和指针变量p中的内容相等

C.s数组长度和p所指向的字符串长度相等

D.*p与s[0]相等

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下面的程序段叙述正确的是 。 Char s[]=”tarim”,char *p=s;

A.*p与s[0]相等

B.数组s中的内容和指针变量p中的内容相等

C.数组s长度和p所指向的字符串长度相等

D.s和p完全相同


C 解析:本题考查了一维字符数组的定义和初始化。选项C中str[10]初始化为空,可以不必进行类似''的空赋值,字符数组若没有进行初始化赋值,默认的字符为空,并且定义完str数组后,应该用','分隔而不是'。',所以选项C错误。

第2题:

有以下程序段: char s[]="china"; char *p; p=s; 则以下叙述中正确的是(40)。

A.数组s中的内容和指针变量p中的内容相等

B.s和p完全相同

C.sizeof(s)与sizeof(p)结果相同

D.*p和s[0]相等


正确答案:D
解析:本题考查对数组和指针的理解。题目中给出的程序段首先是将字符串"china"放进数组s中,接下来声明了一个字符型指针变量p,并使指针变量p指向数组s。指针变量p中存放的是数组s的首地址,而数组s中存放的是字符串"china",内容根本不同;数组名s是一个常量,表示的是数组首元素在内存中的首地址,虽然指针变量p中存放的也是数组s的首地址,但不完全相同;sizeof()函数的作用是求参数的长度,由于数组s中的内容和指针变量p中的内容不同,用函数sizeof()求得的结果肯定不同。*p表示取数组的第一个元素,而s[0]也表示取数组的第一个元素,因此相等。

第3题:

设有下面的程序段: char s[]="china"; char*p;p=s; 则下列叙述正确的是

A.s和p完全相同

B.数组s中的内容和指针变量p中的内容相同

C.s数组长度和p所指向的字符串长度相等

D.*p与s[0]相等


正确答案:D
解析:选项A)中,s为数组名,是一个常量地址,而指针p为一个字符变量,不能说两者完全相同,所以选项A)错误。选项B)和C)的说法都不严谨,只有选项D)的说法正确。注意:用于字符串处理的函数。

第4题:

若有下面的程序段: chars[]="china";char *p;p=s;则下列叙述正确的是( )。

A.s和p完全相同

B.数组s中的内容和指针变量p中的内容相等

C.数组s的长度和p所指向的字符串长度相等

D.*p与s[0]相等


正确答案:D
解析:字符型指针变量p中存放的是“china"的首地址,所以选项A)和B)错误;s数组长度为6,而p所指向的字符串长度为5,二者不相等,排除选项C)。

第5题:

若有下面的程序段char s[]="china";char *p; p=s;则下列叙述正确的是A.s和p完全相同 B.数组s中的内容和指针变量p中的内容相等C.s数组长度和p所指向的字符串长度相等 D.*p与s[0]相等


正确答案:D
本题考查数组与指针的关系。C语言规定数组名代表数组中第一个元素的地址,题目中给出了p=s,即p=&s[0],所以有*p=s[0]。A选项说s和p完全相同是错误的,因为s是数组名,是一个常量,而p是一个指针变量;B选项说数组s中的内容和指针变量p中的内容相等也是错误的,因为数组s中的内容是字符串“china”,而指针变量p中的内容是数组的首地址;C选项说s数组长度和p所指向的字符串长度相等也是错误的,因为字符串存放在数组中时,至少需要多出一个存放字符串结束标识的单元。

第6题:

以下正确的程序段是______。

A.int*p; scanf("%d",p);

B.int *s,k *s=100;

C.int*s,k; char*p,c; s=&k; p=&c; *p='a';

D.int*s,k; char*p,c; s=&k; p=&c; s=p; *s=1;


正确答案:C

第7题:

请选出正确的程序段A.int*p; scanf("%d",p); …B.int*s,k; *s=100; …C.int *s,k; char*p,c; s=&am

请选出正确的程序段

A.int*p; scanf("%d",p); …

B.int*s,k; *s=100; …

C.int *s,k; char*p,c; s=&k; p=&c; *p='a'; …

D.int *s,k; char *p,e; s=&k; p=&c; s=p; *s=1; …


正确答案:C
解析:本题的选项A)和B)犯了一个同样的错误,即指针变量p定义后并没有指向具体的变量。也就是说,p中没有确定的地址值,它的值是不可预见的,所指向的单元也是不可预见的,因此不能进行赋值操作。另外,在选项D)中,s是int型指针变量,p是char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量p的值赋给整型指针变量s。

第8题:

设有程序段:char s[]=china; char *p ; p=s ; 则下面叙述正确的是( ) 。

A. s 和 p 完全相同

B. 数组 s 中的内容和指针变量 p 中的内容相等

C. s 数组长度和 p 所指向的字符串长度相等

D. *p 与 s[0]相等


正确答案:D

第9题:

设有下面的程序段:

char s[]="china"; char*p; p=s;

则下列叙述正确的是

A.s和p完全相同

B.数组s中的内容和指针变量p中的内容相同

C.s数组长度和p所指向的字符串长度相等

D.*p与s[0]相等


正确答案:D
解析:考查的是字符指针和字符数组的区别。选项A)中,s为数组名,是一个常量地址,而指针p为一个字符变量,不能说两者完全相同,所以选项A)错误。选项B)和C)的说法都不严谨,只有选项D)的说法正确。