下面程序的输出是______。 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.ABCDEFGB.DEFGABCC.GFEDCBAD.CBADGFE

题目

下面程序的输出是______。 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


相似考题
更多“下面程序的输出是______。fun(char *s,int p1,int p2){char c; while(p1<p2) { c=s[p1];s[p1]=s[p ”相关问题
  • 第1题:

    有以下程序

    #include<stdio.h>

    #include<string.h>

    void fun(char *w,int m)

    { char s,*p1,*p2;

    p1=w;p2=w+m-1;

    while(p1<p2){s=*p1;*p1=*p2;*p2=s;p1++;p2--;}

    }

    main()

    { char a[]="123456";

    fun(a,strlen(a));puts(a);

    }

    程序运行后的输出结果是

    A.654321

    B.116611

    C.161616

    D.123456


    正确答案:A
    解析:strlen函数的作用是计算字符串的长度,不包括'\0'在内。所以形参m的值为6,根据fun函数中pl和p2的赋值一个指向第一个字符'1',一个指向最后一个字符'6'。然后比较大小,且根据条件互换,直到条件为假跳出循环。第一次循环后为623451,第二次653421,第三次654321。即fun函数实现将一个字符串逆序存放。所以答案为A)。

  • 第2题:

    下面程序的输出结果是includeincludemain(){char*p1="abc",*p2="ABC",str[

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

    A.xyzabcABC

    B.zabcABC

    C.xyabcABC

    D.yzabcABC


    正确答案:C
    解析:本题考查的重点是拷贝字符串——使用strcpy()函数,该函数的调用方式是:strcpy(字符数组,字符串),其中“字符串”可以是字符串常量,也可以是字符数组。函数的功能是:将“字符串”完整地复制到“字符数组”中,字符数组中原有的内容被覆盖。使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志“\0”一起复制;②不能用赋值运算符“=”将一个字符串直接赋值给一个字符数组,只能用strcpy()函数处理。另外,本题还考查连接字符串的strcat()函数,其调用方式是:strcat(字符数组,字符串)。功能是把“字符串”连接到“字符数组”中的字符串尾端,并存储于“字符数组”中。“字符数组”中原来的结束标志,被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修改。使用该函数时注意:①由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题;②连接前两个字符串都有结束标志“\0”,连接后“字符数组”中存储的字符串的结束标志“\0”被舍弃,只在目标串的最后保留一个“\0”。

  • 第3题:

    2、以下程序输出的结果是() #include " stdio.h" #include "string.h" void fun (char *w, int m ) { char s, *p1 , *p2 ; p1=w; p2=w+m-1; while(p1<p2) { s=*p1++; *p1=*p2-- ; *p2=s; } } main() { char a[ ]="1234567"; fun (a , strlen(a) ); puts(a); }

    A.7654321

    B.1711717

    C.1711771

    D.7177171


    28 a*=16+(b++)-(++c)等价于a=a*(16+(b++)-(++c)),b++的值为3,++c的值为5,这里要注意前缀++和后缀++的用法。

  • 第4题:

    下面程序的输出结果是includeincludemain(){char *p1="abc",*p2="ABC",str

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

    A.xyzabcABC

    B.zabcABC

    C.xyabcABC

    D.yzabcABC


    正确答案:C
    解析:本题考查的重点是拷贝字符串——使用strcpy()函数,该函数的调用方式是:strcpy(字符数组,字符串)其中“字符串”可以是字符串常量,也可以是字符数组。函数的功能是:将“字符串”完整地复制到“字符数组”中,字符数组中原有内容被覆盖。使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志‘\0’一起复制。②不能用赋值运算符“=”将一个字符串直接赋值给一个字符数组,只能用strcpy()函数来处理。另外,本题还考查连接字符串的strcat()函数,其调用方式是:strcat(字符数组,字符串)功能是把“字符串”连接到“字符数组”中的字符串尾端,并存储于“字符数组”中。“字符数组”中原来的结束标志,被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修改。使用该函数时注意:①由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题。③连接前两个字符串都有结束标志‘\0’,连接后“字符数组”中存储的字符串的结束标志‘\0’被舍弃,只在目标串的最后保留一个‘\0’。

  • 第5题:

    试题35

    有以下程序

    #include <stdio.h>

    #include <string.h>

    void fun(char *w,int m)

    { char s, *p1, *p2;

    p1=w; p2=w+m-1;

    while(p1<p2){s=*p1; *p1=*p2; *p2=s; p1++; p2- -;}

    }

    main()

    { char a[]=”123456”;

    fun(a, strlen(a)); puts(a);

    }

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

    A.654321

    B.116611

    C.161616

    D.123456


    正确答案:A
    试题35分析
    while(p1<p2){s=*p1; *p1=*p2; *p2=s; p1++; p2- -;}的作用是将字符串中的字符进行首尾交换,即相当于将原来的字符串倒序输出。
    试题35答案
    A