# include void f(char *s,char *t){ char k; k=*s; *s=*t; *t=k

1个回答

  • 我试过了!VC++

    %s错误,%c,为e

    你如果用sizeof(str)可能结果是10.但是strlen是按照' '作为结束标志的,所以计算肯定是7.结果只会是e.

    当然必须printf("%cn",*p);因为p是字符.

    p=str+strlen(str)/2+1;

    strlen(str)/2+1=4,p就指向了str[4]=‘e’.p-2指向p[2]='c'.

    然后在f函数中递归调用

    首先:e,c互换.str变成了:abedcfg,然后s++到d,t--指向d,

    不变,再一次s++到c,t--指向e,

    交换变成abcdefg,再一次s++到f,t--指向b,

    交换变成afcdebg,再一次s++到g,t--指向a,

    交换变成gbcdefa,再一次s++到' ',t--指向前一个空间,

    *s相当于==0,函数退出

    所以最后,str变成了gbcdefa