参考答案和解析
正确答案:D
更多“已知:char s[4]=〞cba〞;char *p; 执行语句列p=s;printf(〞%c/n〞,*p+1);后,其输出为()。A、cB、bC、aD、d”相关问题
  • 第1题:

    有以下程序:

    void funl(char*p)

    { char*q;

    q=P;

    while(*q!='\O')

    {(*q)++;q++;}

    }

    main

    { char a[]={"Program"),*P;

    p=&a[3];funl(p);

    printf("%s\n",a);

    }

    程序执行后的输出结果是( )。

    A.Prohsbn

    B.Prphsbn

    C.Progsbn

    D.Program


    正确答案:A
    本题中使用了函数的调用,由{unl函数中的while循环可知,循环的作用是为了把q所指向的内容增加l,而从主函数传到函数时是从下标为3开始传,因此当调用函数执行完后,传过去的字符串为'hsbn',前面不变。

  • 第2题:

    以下程序运行后的输出结果是( )。

    include

    char*ss(char*s)

    {char*p,t;

    P=s+1;t=*s;

    while(*p){ *(P-1)=*P;P++;}

    *(P-1)=t;

    return s;

    }

    main()

    {char*p,str[10]="abcdefgh";

    p=ss(str);

    printf("%s\n",p);

    }


    正确答案:bcdefgha
    bcdefgha

  • 第3题:

    有以下程序 main() { char*s[]={"BBC","CNN","NDS"},*p; p=s[1]; printf("%c,%s\n",*(p+1),p); }执行后输出结果是______。

    A.C,BBC

    B.N,BBC

    C.C,CNN

    D.N,CNN


    正确答案:D

  • 第4题:

    有以下程序: include main( ) {char s[ ] ="159" , * p;p=s;printf( "% c", * p + +

    有以下程序: #include <stdio.h> main( ) { char s[ ] ="159" , * p; p=s; printf( "% c", * p + + ); printf("%~", * p++);}程序运行后的输出结果是( )。

    A.15

    B.16

    C.12

    D.59


    正确答案:A
    解析:语句p=s将指针变量p指向字符数组s,第一次输出时,由于++和*为同一优先级,而结合方向为自右向左,所以,*p++相于*(p++)。但又因为“++”在p的右侧,所以,先输出*p,得到s[0]的值,然后P++,P指向s[1],故第二次输出时,输出s[1]的值,所以输出结果为15。

  • 第5题:

    下列程序的执行结果是______。 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即为字符串长度。

  • 第6题:

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

  • 第7题:

    下面程序的输出结果是( )。 char s()="ABCD",*p; main() { for(p=s;p<s+4;p++)printf("%s\n",p); )

    A.ABCD BCD CD D

    B.A B C D

    C.D C B A

    D.ABCD ABC AB A


    正确答案:A
    解析:p为指针型变量。第一次循环,p=s,p的值为字符数组s的首地址,输出字符串"ABCD"。p++,第二次循环,p的值为字符数组s的首地址加1,输出字符串"BCD"。p++,第三次循环,p的值为字符数组s的首地址加2,输出字符串"CD"。p++,第4次循环,p的值为字符数组s的首地址加3,输出字符串'D"。

  • 第8题:

    当执行下.面的程序时,其输出结果为 ______。 union st { int a; char b; } main() { union st s; char* p=(char *)&s; s.a=0x3132; s.b=0x33; printf("%c",*p); }

    A.1

    B.2

    C.3

    D.不确定


    正确答案:C
    解析:共用体类型结构的特点是使几个不同的变量共占同一段内存,但在每一瞬时只能存放其中一种,而不是同时存放几种,共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用。因此本题起作用的是成员b的值,所以程序打印输出3。

  • 第9题:

    设有如下函数定义,则输出结果为_______。 char*fun(char*str) { char*p=str; while(*p) {if(*p>'d')continue; p++; } return p; } main() { printf("%s\n",fun("welcome!")); }

    A.welcome

    B.come!

    C.w

    D.程序进入死循环


    正确答案:D
    解析:continue语句的作用是用于结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。由于'w'>'d',执行continue语句,结束本次循环(即跳过p++;语句),还是继续比较'w'>'d',程序进入死循环。

  • 第10题:

    有以下程序:void swap (char *x,char *y){char t; t=*x,*x=*y;*y=t;}main(){char* s1="abc",*s2="123"; swap(s1,s2); printf("%s,%s\n",s1,s2);}程序执行后的输出结果是( )。

    A.123,abc

    B.abc,123

    C.1bc,a23

    D.321,cba


    正确答案:C
    解析:首先看swap()函数,函数中定义了一个临时字符变量t,然后将形参指针x所指内容存入t,再将形参指针y所指内容存入到x所指内容中,最后将临时变量t的内容存入到y所指内容中。所以该函数实现的是:交换两个字符指针所指向的内容。在主函数中,首先定义了两个字符指针s1和s2,同时用字符串"abc"和"123”来初始化它们,此时它们指向的是两个字符串的第1个字符。所以,在调用完swap()函数后,彼此交换了两个字符串的第1个字符,最后输出结果为1bc,a23。故应该选择C。

  • 第11题:

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


    正确答案:b

  • 第12题:

    单选题
    已知:char s[4]=〞cba〞;char *p; 执行语句列p=s;printf(〞%c/n〞,*p+1);后,其输出为()。
    A

    c

    B

    b

    C

    a

    D

    d


    正确答案: B
    解析: 暂无解析

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

    下面程序的输出是______。 char s[]="ABCD"; main() { char *p; for(p=s;p<s+4;p++) printf("%s\n",p); }

    A.ABCD BCD CD D

    B.A B C D

    C.D C B A

    D.ABCD ABC AB A


    正确答案:A
    解析:在第—次执行for循环时,字符数组的首地址赋给了指针变量p,使得指针变量p指向了s的首地址,输出p所指向的字符串;第二次执行for循环时,p值增加1,p指向了s的第二个元素输出BCD:第三次输出CD:第四次输出D;直到p指向字符串的结束字符“\0”,for循环终止执行。

  • 第15题:

    有以下程序: include void f(char *s,char *t) {char k; k=*s; +s=*t;

    有以下程序: #include<string.h> void f(char *s,char *t) {char k; k=*s; +s=*t; *t=k; S++; t--; if(*s) f(s,t); } main() {char.str[10]="abcdefg",*p; p=str+strlen(str) /2+1; f(p,p-2); printf("%s\n",str); } 程序运行后的输出结果是 ______。

    A.abcdefg

    B.gfedcba

    C.gbcdefa

    D.abedcfg


    正确答案:B
    解析:本程序的作是将字符串str倒序。语句“p=str+strlen(str)/2+1;”用于将指针变量p指向e字符所在的存储单元,p-2指向了c字符所在的存储单元,在函数f中将这两个存储单元的内容交换,并使得f函数中指向c字符的指针变量s加1。指向c字符的指针变量t减1,然后继续将s和t指向的存储单元的内容进行交换,直到s指向的存储单元的内容为空为止。所以本题程序输出的结果是字符串“abcdefg”的倒序形式“gfedcba”。

  • 第16题:

    有以下程序: void swap(char*x,char*y) {cbar t; t=*x; *x=*y; *y=t; } main() {char*s1="abc",*s2="123"; swap(s1,s2);printf("%s,%s\n",s1,s2); } 程序执行后的输出结果是( )。

    A.123,abc

    B.abc,123

    C.1bc,a23

    D.321,cba


    正确答案:C
    解析:函数swap()实现的功能为交换字符指针x和y首位的数值。

  • 第17题:

    下列程序的输出结果是( )。 char*point(char*pt): main { char b[4]={a,c,s,f),*pt=b; pt=point(pt); printf("%c\n",*pt); } point(char*p) { p+=3; return p; }

    A.s

    B.c

    C.f

    D.a


    正确答案:C
    本题考查函数的调用及参数传递,当执行函数point时,刚开始指针P指向“a”,经过+3,指针p指向“f”,所以最后的输出结果是f。

  • 第18题:

    下面程序的输出是______。 fun(char *s,int p1,int p2) { char c; while(p1<p2) { c=s[p1];s[p1]=s[p2];s[p2]=c;p1++;p2--;} } main() { char a[]="ABCDEFG",k,*p; fun(a,0,2);fun(a,4,6); printf("%s\n ",a); }

    A.ABCDEFG

    B.DEFGABC

    C.GFEDCBA

    D.CBADGFE


    正确答案:D
    解析:本题主要通过while循环对满足条件的元素进行交换。

  • 第19题:

    以下程序运行后,输出结果是()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

  • 第20题:

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

  • 第21题:

    若有如下程序: 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符合题意。

  • 第22题:

    设char*p=“abcde”,则printf(“%s”,p)的输出结果为( )。

    A.c

    B.cde

    C.b

    D.abcde


    正确答案:D

  • 第23题:

    下面语句正确的是()

    • A、int*p;*p=20
    • B、char*s=”abcdef”;printf(“%s/n”,s)
    • C、charstr[]=”abcd”;str++
    • D、charstr[]={‘a’,’b’,’c’};printf(“%s”,str)

    正确答案:B