参考答案和解析
正确答案:B
解析:此题中先定义一个指针变量ps,并将s的首地址赋给此指针变量,*ps+4相当于先从指针变量ps指向的地址中取出相应数据“a”后,对此数据加4,a的ASCⅡ码为32,32+4=36,对应于字符e,所以答案选B。
更多“有以下程序 main() {char s[]={"aeiou"},*ps; ps=s; printf("%c\n",* ”相关问题
  • 第1题:

    有以下程序:include main( ){chars[] ="Yes\n/No",*ps=s;puts(ps +4); * (pa +4) =0;p

    有以下程序: #include <stdio.h> main( ) { chars[] ="Yes\n/No",*ps=s; puts(ps +4); * (pa +4) =0; puts(s); }程序运行后的输出结果是( )。

    A.n/No Yes /No

    B./No Yes

    C./NO Yes /No

    D.n/No Yes


    正确答案:B
    解析:用puts函数输出的字符串中可以包含转义字符,遇到转义字符,自动跳过去。例如本题中ps+4指的是'/'的地址,并不是'\n'的地址,所以puts(ps+4)输出的是/NO。C规定以字符'\0',作为字符串结束标志,以便系统据此判断字符串是否结束。本题执行*(Ps+4)=0之后,再执行puts(s),就相当于输出字符串Yes后遇到结束标志。

  • 第2题:

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

    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

  • 第3题:

    以下程序运行后的输出结果是( ) main() { char s[]="1234", *ps; for(ps=s;ps<s+3;ps++)printf("%c",ps); printf("\n"); }

    A.123

    B.112123

    C.1234

    D.乱码


    正确答案:D

  • 第4题:

    有以下程序: main() { char s[]="Yes\n/No",*ps=s; puts(ps+4); *(ps+4)=0; puts(s); } 程序运行后的输出结果是(选项D中的第一行是空行)( )。

    A.n/No Yes /No

    B./No Yes

    C.n/No Yes /No

    D./No Yes


    正确答案:B
    解析:主函数中定义了一个字符数组s并赋初值,一个字符串指针变量ps并让它指向s。程序中p+4的地址为数组第5个元素的地址,而调用put(str_adr)函数时,将从str_adr这一地址开始,依次输出存储单元中的字符,遇到第一个\0时结束输出,并自动输出一个换行符。所以put(p+4)将输出n/No,put(s)将从s第一个元素开始输出到第3个元素结束(因为执行*(p+4)=0语句后s中的第5个元素的值为0,而s中的第4个元素为\,puts将遇到\0,结束输出),即输出yes。所以,4个选项中选项B符合题意。

  • 第5题:

    有以下程序; main() {char s[]={"aaiou"},*ps; ps=s; printf("%c\n",*ps+4); } 程序运行后的输出结果是( )。

    A.a

    B.e

    C.u

    D.元素s[4]的地址


    正确答案:B
    解析:程序首先定义了一个字符数组s,然后让字符指针ps指向该数组的首地址。最后按字符形式输出*ps+4的值,即s[0]+4的值,'a'+4='e'。故应该选择B。