单选题设有如下程序段:char s[20]= Bejing,*p;p=s:则执行p=s;语句后,以下叙述正确的是(  )。A 可以用*p表示s[0]B s数组中元素的个数和p所指字符串长度相等C s和p都是指针变量D 数组s中的内容和指针变量p中的内容相等

题目
单选题
设有如下程序段:char s[20]= Bejing,*p;p=s:则执行p=s;语句后,以下叙述正确的是(  )。
A

可以用*p表示s[0]

B

s数组中元素的个数和p所指字符串长度相等

C

s和p都是指针变量

D

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


相似考题
参考答案和解析
正确答案: A
解析:
A项正确,p=s;后,指针p指向s的首地址,*p=s[0];B项错误,p是字符串指针所指向的字符串为"Bejing",其长度为7,而数组a中元素的个数为20;C项错误,s为字符数组名;D项,数组s中有20个元素,其中s[6]~s[19]都为0,p中只有7个元素。答案选择A选项。
更多“设有如下程序段:char s[20]= Bejing,*p;p=s:则执行p=s;语句后,以下叙述正确的是(  )。”相关问题
  • 第1题:

    设有下列程序段: char s[20]="Beijing",*p; p=s; 则执行p=s;语句后,下列叙述正确的是( )。

    A.可以用*p表示s[0]

    B.s数组中元素的个数和p所指字符串长度相等

    C.s和p都是指针变量

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


    正确答案:A
    解析:程序定义了字符数组s和字符型指针变量p,并且使得p指向数组,执行p=s;语句后,*p即表示s[0];s数组中元素的个数和 p所指字符串长度不相等,因为s数组中元素的个数包括字符串结束标志“\0”,而p所指字符串长度不包括“\0”;s是字符型数组,p是指针变量;数组s中的内容和指针变量p中的内容不相同,数组中存放的是字符串,而指针变量p存放的是数组的首地址。

  • 第2题:

    设有下面的程序段:

    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)的说法正确。

  • 第3题:

    请选出正确的程序段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。

  • 第4题:

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

    A.s和p完全相同

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

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

    D.*p与s[0]相等


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

  • 第5题:

    设有如下程序段:则执行P=s;语句后,以下叙述中正确的是( )。

    A.可以用* P表示s[O]

    B.S数组中元素的个数和P所指字符串长度相等

    C.s和P都是指针变量

    D.数组s中的内容和指针变量P中的内容相等


    正确答案:A
    P=8;后,指针P指向s的首地址,*P=s[0],因此选项A)是正确的;p是字符串指针,所指向的字符串为”beijing”,其长度为7,而数组s中元素的个数为20,因此选项B)和D)是错误的;s是数组,不是指针变量,所以选项C)也是错误的。

  • 第6题:

    设有下列程序段: chars[20]="Beijing",*P; P=S; 则执行“p=s;”语句后,下列叙述正确的是( )。

    A.可以用*P表示s[0]

    B.S数组中元素的个数和P所指字符串长度相等

    C.S和P都是指针变量

    D.数组s中的内容和指针变量P中的内容相同


    正确答案:A
    A。【解析】程序定义了字符数组S和字符型指针变量P,并且使P指向数组S的首地址,执行P=S语句后,*P表示s[o];S数组中元素的个数和P所指字符串长度不相等,s数组中包括字符串结束标志“\0”,而P所指字符串不包括“\0”,数组s中的内容和指针变量P中的内容不相同,数组中存放的是字符串,而指针变量P存放的是数组的首地址。

  • 第7题:

    设有如下函数定义。若在主函数中用语句cout<<f("good")调用上述函数,则输出结果为(48)。 int f(char *s){ char *p=s; while(*p! ='\0')p++; return(p-s); }

    A.3

    B.4

    C.5

    D.6


    正确答案:B
    解析:程序中的while循环执行完以后,s指向字符中的第一个元素,p指向'\0'(字符串的末尾位置),所以p-s是字符申的长度。所以选择B。

  • 第8题:

    若有定义语句:char s[3][10],(*k)[3]。*P;,则以下赋值语句正确的是

    A.p=S;

    B.p=k;

    C.p=s[0];

    D.k=S;


    正确答案:C

  • 第9题:

    以下程序运行后的输出结果是【】。 include void main(){char s[]=“123456”,*p;for(p=s

    以下程序运行后的输出结果是【 】。

    include<iostream.h>

    void main(){

    char s[]=“123456”,*p;

    for(p=s; p<s+2; p++)

    cout<<p<<end1;

    }


    正确答案:123456 23456
    123456 23456

  • 第10题:

    有以下程序: include main( ) { char *p ,* q; p=(char * )malloc(sizeof(char

    有以下程序: #include<stdlib.h> main( ) { char *p ,* q; p=(char * )malloc(sizeof(char) * 20);q=p; scanf("%s%s",p,q); printf("%s%s\n",p,q); } 若从键盘输入:abc def<回车>,则输出结果是

    A.def def

    B.abc def

    C.abc d

    D.d d


    正确答案:A

  • 第11题:

    若有如下程序: void a(char*p,char c) {while(*p) { if(*p==c)*p=c-'b'+'B';; p++; } } main() {char s[50]="abcdeeffgee",b='e'; a(s,b);printf("%s\n",s); } 则程序运行后的输出结果是( )。

    A.Abcdeeffgee

    B.ABCDeeFFGee

    C.abcdEEffgEE

    D.ABCDEEFFGEE


    正确答案:C
    解析:函数a的功能是将字符数组s中的小写字母e变为大写字母,其余字符不变,4个选项中只有C符合题意。

  • 第12题:

    执行下列语句后,*(p+1)的值是().  char  s[3]="ab",*p;  p=s;


    正确答案:b

  • 第13题:

    以下正确的程序段是

    A.cgar str[20]; scanf(“%s",&str);

    B.char *p; scanf("%s",p);

    C.cha str[20]; scanf("%s",&str[2])

    D.char str[20],*p=str; scanf("%s",p[2]);


    正确答案:C

  • 第14题:

    有以下程序: includemain(){char*p,*q; p=(char *)malloc(sizeof(char)* 20);q=p; sca

    有以下程序: # include<stdio.h> main() { char*p,*q; p=(char *)malloc(sizeof(char)* 20);q=p; scanf("%s %s",p,q);printf("%s %s\n",p,q); } 若从键盘输入;abc def<回车>,则输出结果是 ______。

    A.def def

    B.abc def

    C.abe d

    D.d d


    正确答案:A
    解析:本题考查%s控制符在scanf函数中的应用。scanf函数中%s控制符的作用是将键盘输入的字符串送到内存,输入的字符串从第一个非空格字符算起,遇到空格或回车就认为是输入结束。本题中执行语句scanf("%s%s",p,q)时,从键盘输入abc def回车>后,指针变量p指向字符串"abc\0",q指向字符串"def\0",但是由于p和q指向同一个存储单元,所以存储单元中存放的是"def\0",printf函数的输出结果为def def。

  • 第15题:

    请选出正确的程序段______。

    A.int*p

    B.int*s,k;scanf(""%d"",p); *s=100;… ……

    C.int*s,k;

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


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

  • 第16题:

    有以下程序include main(){ char *p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf

    有以下程序 #include <stdlib.h> main() { char *p,*q; p=(char*)malloc(sizeof(char)*20); q=p; scanf("%s %s",p,q); printf("%s %s\n",p,q); } 若从键盘输入:abc def<回车>, 则输出结果是

    A.def def

    B.abc del

    C.abc d

    D.d d


    正确答案:A
    解析:本题考查的知识点是字符型指针变量、malloc()函数的使用。本题首先定义两个字符型指针变量p和q,通过malloc()函数申请20个字符的存储空间,并把它的首地址赋给p,在把p的值赋给q,p和q指向同一个存储区。在scanf()语句中读取字符串到p和q指向的字符串,先把“abc”读取到p指向的存储区中,第一个空格是结束标记,第二个空格是分隔符,再把“def”存放到q指向的存储区,把原先的内容覆盖。所以p和q指向的存储区中内容是“def”,所以最后输出的def,clef.所以4个选项中A正确。

  • 第17题:

    以下正确的程序段是

    A.cgar str[20]; scanf("%s",&str);

    B.char*p; scanf("%s",p);

    C.char str[20]; scanf("%s",&str[2])

    D.char str[20],*p=str; scanf("%s",p[2]);


    正确答案:C
    解析:scanf输入字符串有一点要注意的是,格式控制串必须用%s。注意:gets函数和puts函数的作用。

  • 第18题:

    有如下的程序: int f(char*s) { char *p=s; while(*p!='\0') p++; return(p-s); }如果在主程序中用下述语句调用上述函数,则输出结果为______。 printf("%d\n",f("best one!"));

    A.3

    B.6

    C.8

    D.9


    正确答案:D
    解析:函数f的功能实际上是统计字符串s的字符数,“bestone!”共9个字符,所以选D。

  • 第19题:

    以下正确的程序段是______。

    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

  • 第20题:

    若有定义语句:char s[3][10],(*k)[3],*p;,则以下赋值语句正确的是;

    A.p=s;

    B.p=k

    C.p=s[0]

    D.k=s;


    正确答案:C

  • 第21题:

    以下程序运行后,输出结果是()includess(char*s){char*p=s; while(*p)p++ return(p-s);

    以下程序运行后,输出结果是( ) #include<stdio.h> ss(char *s) { char*p=s; while(*p) p++ return(p-s); } main() { char *a="abded" int i; i=ss(a) ; printf("%d\n",i); }

    A.8

    B.7

    C.6

    D.5


    正确答案:D

  • 第22题:

    有以下程序段: 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]也表示取数组的第一个元素,因此相等。

  • 第23题:

    (28)若有定义语句:char s[3][10],(*k)[3],*p;,则以下赋值语句正确的是

    A)p=s;

    B)p=k;

    C)p=s[0];

    D)k=s;


    正确答案:C