不知道这么晚了还有木有然帮我看一下

#include  <string.h>

void  fun( char *s, int m1, int m2 )

{  char  t, *p;

   p=s + m1;  s= s+m2;

   while( s<p )

   {  t=*s;  *s=*p;  *p=t; 

      s++;   p--;

   }

}

main()

{   char  ss[10]="012345678";

    int  n=6;

    fun( ss,0,n-1 );

    fun( ss,9,n );

    fun( ss,0,9 );

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

}

程序运行后的输出结果是


A)  012345


B)  876543210


C)  876543


D)  012345678

没动这个结果怎么出来的  答案是A

kathria
浏览 1670回答 2
2回答

asd8532

首先理解fun的意义fun(s,m1,m2);//从s的m1位置到m2位置对调 fun( ss,0,n-1 ); //0<n-1所以fun的while为假,不执行  fun( ss,9,n );;//0 1 2 3 4 5 6 7 8 /0共10,9到6的位置对调变成0 1 2 3 4 5 /0 8 7 6  而/0是终止符号,所以输出到5的时候就停止了    fun( ss,0,9 );//0<9所以fun的while为假,不执行

望远

这里一共有10个字符,最后有一个&#039;\0&#039;,第一个和第三个fun函数因为不满足while条件直接跳出,只有第二个fun函数改变了字符串,它的作用是让第7-10个字符逆置,所以\0在第7个字符,输出的时候输出了012345六个字符。
打开App,查看更多内容
随时随地看视频慕课网APP