更多“有以下程序 main( ) { char str[ ]="xyz",*ps=str; while(*ps) ps++; for(ps--;ps-str>=0 ”相关问题
  • 第1题:

    有以下程序main(){ char str[]="xyz",*ps=str; while(*ps) ps++; for(ps--; ps-str>=0; ps--) puts(ps);} 程序的运行结果是A.yz B.z C.z D.x xyz yz yz xy xyz xyz


    正确答案:B
    本题主要考查循环结构和字符串的存储结构。在C语言中,为了方便确定字符串的长度,编译系统在字符串后增加了一个结束标识‘\0’,即ASCII码的0。
    在程序中,首先定义了一个字符型数组str,并赋初值,然后定义一个同类型的指针变量ps,并使ps指向字符数组str。
    在while循环中,循环结束的条件是*ps的值为0,由于循环开始前,指针变量ps是指向数组的第一个元素,即*ps等价于str[0],值为x,其ASCII码值不为0,循环继续,使ps指向数组的第二个元素,很明显,结果不为0,第三个元素也不为0,而第四个元素才为0,循环结束,此时ps指向数组中的结束标识符。
    在for循环中,首先将指针变量ps做自减运算,即使指针变量ps执行数组的最后一个元素值,即第三个元素z,然后用输出函数puts输出,该输出函数的功能是输出字符串或字符数组到终端上,一次只能输出一个字符串,输出时,遇到字符串结束标志符结束,并自动换行。
    第一次for循环时,由于ps指向z,输出的结果为z,换行。
    第二次for循环时,由于ps指向y,那么输出的结果为yz,换行。
    第二次for循环时,由于ps指向x,那么输出的结果为xyz,换行。
    因此,本题的正确答案是B。

     

  • 第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 str[] ="xyz", *ps=str; while (*ps) ps++: for (ps-- ;ps-str>=0 ;ps--) puts(ps); } 执行后输出结果是

    A.yz xyz

    B.z yz

    C.z yz xyz

    D.x xy xyz


    正确答案:C
    解析:本题考核的知识点是字符型指针变量的使用.执行while循环,使指针变量Ps指向字符串“xyz”的字符串结束标志,然后执行for循环,先执行“ps--”,使ps指向字符“z”,故puts(ps)输出结果为“z”;再次执行“ps--”,使ps指向字符“y”,故puts(ps)输出结果为“y2”;再次执行“ps--”,使Ps指向字符’xt,故puts(ps)输出结果为“xyz”,退出循环.所以,C选项为所选。

  • 第4题:

    以下程序 includeincludemain(){char*pl="abc",*p2="ABC",str[50]="xyz";

    以下程序 #include<stdio.h> #include<string.h> main() { char*pl="abc",*p2="ABC",str[50]="xyz"; strcpy(str+2,strcat(p1,p2)); printf("%s\n",str); } 的输出是________。

    A.xyzabcABC

    B.zabcABC

    C.yzabcABC

    D.xyabcABC


    正确答案:D
    解析:strcat(p1,p2)将字符串abcABC放到了*p1所指向的存储单元中;strcpy在本题将abcABC复制到str+2所指向的存储单元中,即覆盖原str数组中的字符z及其后的所有字符,故str的值为“xyabcABC”。

  • 第5题:

    有以下程序 main() { char atr[]="xyz",*ps=str; while(*ps)ps++; for(ps--;ps-str>=0;ps--) puts(ps); } 执行后输出结果是

    A.yz xyz

    B.x yz

    C.z yz xyz

    D.x xy xyz


    正确答案:C
    解析:执行while循环,使指针变量ps指向字符串“xyz”的字符串结束标志,然后执行for循环,先执行“ps--”,使ps指向字符“z”,故puts(ps)输出结果为“z”;再次执行“ps--”,使ps指向字符“y”,故puts(ps)输出结果为“yz”;再次执行“ps--”,使ps指向字符“x”,故puts(ps)输出结果为“xyz”,退出循环。