肚子饿了233 发表于 2020-12-22 08:24:11

c语言作业题!

#include<string.h>
#include<stdio.h>
void f(char*s,char*t)
{char k;
k=*s;
*s=*t;
*t=k;

s++;t--;

if(*s);f(s,t);
}
main()
{char str="abcdefg",*p;
p=str+strlen(str)/2+1;
f(p,p-2);
printf("%s\n",str);
}

希望哪位大神看见了能指出详细的解题过程!!!

风过无痕1989 发表于 2020-12-22 10:00:25

#include<string.h>
#include<stdio.h>
void f(char*s, char*t)
{
        char k;                         // 定义一个临时变量
        k = *s;                         // 将接收到p 的地址赋给k
        *s = *t;                        // 将接收到p-2的地址赋给*s
        *t = k;                         // 将临时变量保存的地址赋给*t,完成p、p-2的地址交换
        s++;
        t--;
        if (*s)                         // 此个多了一个分号,导致无输出的错误
        f(s, t);                        // 以*s不为结束标志'\0'为条件,递归调用函数
}

int main()
{
        char str = "abcdefg", *p;
        p = str + strlen(str) / 2 + 1;   // 定义指针,p指向字符e,p - 2 指向字符c
        f(p, p - 2);                     // 以 p, p - 2为实参,调用函数
        printf("%s\n", str);             // 输出字符数组
}
页: [1]
查看完整版本: c语言作业题!