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);
}
希望哪位大神看见了能指出详细的解题过程!!! #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]