单选题请读程序: main() {char*p; chars[80]; scanf("%s",s); p=s[0]; printf("%s",p); } 请判断上面程序()A 错误:p=s[0];正确:p=*s;B 错误:p=s[0];正确:p=s[];C 错误:p=s[0];正确:p=s;D 错误:p=s[0];正确:p=&s;

题目
单选题
请读程序: main() {char*p; chars[80]; scanf("%s",s); p=s[0]; printf("%s",p); } 请判断上面程序()
A

错误:p=s[0];正确:p=*s;

B

错误:p=s[0];正确:p=s[];

C

错误:p=s[0];正确:p=s;

D

错误:p=s[0];正确:p=&s;


相似考题
更多“请读程序: main() {char*p; chars[80]; scanf("%s",s); p=s[0]; prin”相关问题
  • 第1题:

    有以下程序: 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。

  • 第2题:

    下列给定程序中,函数fun()的功能是:在字符串的最前端加入n个*号,形成新串,并且覆盖原串。

    注意:字符串的长度最长允许79。

    请改正函数fun()中的错误,使它能得出正确的结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

    试题程序;

    include <stdio.h>

    include <strzng.h>

    include <conio.h>

    /*****************found***************/

    void fun(char s[], int n)

    {

    char a[80],*p;

    int i;

    /*****************found***************/

    s=p;

    for(i=0; i<n; i++) a[i]='*';

    do

    {a[i]=*p;

    /*****************found***************/

    i++;

    }while(*p);

    a[i]=0;

    strcpy(s,a);

    }

    main()

    { int n;char s[80];

    clrscr();

    printf("\nEnter a string:");gets(s);

    printf("\nThe string\%s\n",s);

    printf("\nEnter n(number of*):");scanf ("%d",&n);

    fun(s,n);

    printf("\nThe string after inster: \%s\n",s);

    }


    正确答案:(1)错误:void fun(char s[]int n) 正确:void fun(char *s int n) (2)错误:s=p; 正确:p=s; (3)错误:i++; 正确:i++;p++; (4)错误:a[i]=0; 正确:a[i]='\0';
    (1)错误:void fun(char s[],int n) 正确:void fun(char *s, int n) (2)错误:s=p; 正确:p=s; (3)错误:i++; 正确:i++;p++; (4)错误:a[i]=0; 正确:a[i]='\0'; 解析:在本题中,s是数组名,代表数组首地址,在编译时对s数组分配了一段内存单元,因此在程序运行期间s是一个常量,不能再被赋值。因此s=p是错误的,如果把“chars[];”改成“char*s;”,则程序正确。此时s是指向字符数组的指针变量,p=s是合法的,它将字符串的首地址赋给指针变量p,然后在printf函数语句中输出字符串s。因此,应当弄清楚字符数组与字符指针变量用法的区别。

  • 第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题:

    下列程序的执行结果是______。 in(f(char*s) { char*p=s; while(*p!='\0')p++; return(p-s); } main() { printf("%d\n",f("goodbye!")); }

    A.3

    B.6

    C.8

    D.0


    正确答案:C
    解析:字符在内存中占一个字节的存储空间,按字符的存储顺序,其地址依次递增,在函数f中循环过后,p指向字符串的结束位置,s指向字符串首地址,p-s即为字符串长度。

  • 第5题:

    有以下程序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正确。

  • 第6题:

    若输入“abcdef”“abdef”,下述程序的输出结果为( )。 #include<stdio.h> #include<string.h> main { int n; char s1[20],s2[20],*p1,*p2; scanf("%s",s1); scanf("%S",s2); p1=s1; p2=s2; n=strcmp(p1,p2); printf("Vood\n",n); }

    A. -1

    B.0

    C."abcdef"

    D."abdef"


    正确答案:D
    本题考查字符串比较函数strcmp(s1,s2),若s1>s2,则返回1;若s1=s2,则返回0;若s1<s2,则返回-1。字符串依次比较的是它们字符的ASCIl码值。

  • 第7题:

    请读程序: includde include void fun(char * s) {char a[10]; str

    请读程序: # includde<stdio.h> # include<string.> void fun(char * s) {char a[10]; strcpy(a,"STRING"); s=a; } main() { char*p; fun(p); print{("%s\n",p); } 上面程序的输出结果(表示空格) ( )

    A.STRING

    B.STRING

    C.STRING

    D.不确定的值


    正确答案:D

  • 第8题:

    请读程序: includeChar fun(char*c)(if(c<='z'& & * c>='A') * c-='A'-'a'ret

    请读程序: # include<stdio.h> Char fun(char*c) (if(c<='z'& & * c>='A') * c-='A'-'a' return * c; } main() { char s[81],* p=s; gets(s); while(* p) { * p=fun(p);putchar(* p);p + +; puchar('\n'); } 若运行时从键盘上输入OPEN THE DOOR <CR>(<CR>表示回车),则上面程序的输出结果是 ( )

    A.oPEN tHE dOOR

    B.ope the door

    C.OPEN THE DOOR

    D.Open The Door


    正确答案:B

  • 第9题:

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

    char s[ ]="XYZQ";

    void main(){

    char *p;

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

    cout<<p<<end1;

    }


    正确答案:XYZQ YZQ ZQ Q
    XYZQ YZQ ZQ Q

  • 第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题:

    有以下程序:include using namespace std;int main ( ){ char s1[10],s2[10]; char*p

    有以下程序: #include <iostream> using namespace std; int main ( ) { char s1[10],s2[10]; char *p=s1,*q=s2; cin>>s1>>s2; while (*p ! =' \0 ' ) p++; while (*q!='\0') *p++=*q++; *p='\0'; cout<<s1<<end1; return 0; }

    A.abcd0ghij

    B.abcd0ghij0

    C.abcd

    D.abcdghij


    正确答案:D
    解析:程序定义两个字符串指针p和q,并使指针分别指向字符串数组s1和s2。数组s1和s2通过输入的字符串赋初值。程序中第1个while语句,用来计算s1的长度,并把指针p移到数组s1的最后一个元素。第2个while语句,是将数组s2中的字符串合并到数组s1的后面。语句“*p'\0';”,是合并后的字符串s1的结束标志。所以最后s1中的字符串为abcdghij。

  • 第12题:

    单选题
    有以下程序: #include int fun(char *s) {  char *p=s;  while(*p++!='\0');  return(p-s); } main() {  char *p=01234;  printf(%d,fun(p)); } 程序的运行结果是(  )。
    A

    6

    B

    5

    C

    4

    D

    3


    正确答案: B
    解析:
    程序执行过程为:定义字符串指针p并为其初始化为“01234”,调用函数fun(p),将指针传入函数。while循环找到字符串的束符地址,然后使这个指针指向结束符下一个单元,结束循环。返回字符串首地址与结束符下一个地址之差,也即是字符串长度加1。输出地址差为6,答案选择A选项。

  • 第13题:

    下列程序的输出结果是______。 includef(char 8s){char *p=s;while(*p!='\0')p++;retur

    下列程序的输出结果是______。# include<stdio.h>f(char 8s){ char *p=s; while(*p!='\0')p++; return(p-s);}main(){ printf("%d\n",f("ABCDEF"));}

    A.3

    B.6

    C.8

    D.0


    正确答案:B

  • 第14题:

    下面程序的运行结果是【】。 include void main() {char s[]="9876",*p;for(p=s;p

    下面程序的运行结果是【 】。

    include<iostream.h>

    void main()

    {

    char s[]="9876",*p;

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

    cout<<p;

    }


    正确答案:9876876
    9876876

  • 第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题:

    有以下程序includemain(){ 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 def

    C.abc d

    D.d d


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

  • 第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题:

    请读程序: includef(char * s){cahr * p=s;while(* p!='\0')p++;return(p-s);}main(){

    请读程序: # include<stdio.h> f(char * s) {cahr * p=s; while(* p!='\0')p++; return(p-s); } main() {printf("%d\n”,f("ABCDEF"));} 上面程序的输出结果是 ( )

    A.3

    B.6

    C.8

    D.0


    正确答案:B

  • 第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题:

    下列程序中,正确的为______。

    A.main() { int *pb=&b; float 1>=15.25; print f("%d\n" ,*pb); }

    B.amin() { int a,*pa; a=10; *pa=a; prinffC%d",*pa); }

    C.main() { char s[20]; char *ps=&s; scanf("%s",*p); printf("%s",*p); }

    D.main() { char str[10]; int *ps=str[0]; str="abcdefg"; printf("%s",*p); }


    正确答案:B

  • 第21题:

    以下程序运行后的输出结果是【】。 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

  • 第22题:

    请选出下面正确的程序段( )。

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

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

  • 第23题:

    请读程序: main() {char*p; chars[80]; scanf("%s",s); p=s[0]; printf("%s",p); } 请判断上面程序()

    • A、错误:p=s[0];正确:p=*s;
    • B、错误:p=s[0];正确:p=s[];
    • C、错误:p=s[0];正确:p=s;
    • D、错误:p=s[0];正确:p=&s;

    正确答案:C