指针 字符串逆序
设计一个函数void f(char *p),对p指向的字符串进行逆序,要求函数f()中不能定义任何数组,不能调用任何字符串处理函数。在函数main()中,输入字符串,调用f(),最后输出逆序后的字符串。
输入示例:
abcd
输出示例:
dcba 本帖最后由 肖-肖 于 2021-5-1 15:07 编辑
我是这么写的
/**设计一个函数void f(char *p),对p指向的字符串进行逆序,要求函数f()中不能定义任何数组,不能调用任何字符串处理函数。
在函数main()中,输入字符串,调用f(),最后输出逆序后的字符串。
输入示例:
abcd
输出示例:
dcba
*/
#include <stdio.h>
void f(char *p);
int main()
{
char s;
int i=0;
scanf("%s",s);
f(s);
while(s!='\0')
{
printf("%c",s);
i++;
}
}
//对字符串进行逆序
void f(char *p)
{
//i来看这个字符串的'\0'下标
int i=0,q=0,h,tmp;
while(p!='\0')
{
++i;
// ++p;
}
h=i-1;//h是最后字符下标
//temp是中间变量
while(q<=h)
{
tmp=p;
p=p;
p=tmp;
q++;
h--;
}
}
#include <stdio.h>
void f(char *p);
int main()
{
char s;
scanf("%s",s);
printf("%s\n",s);
//对字符串进行逆序
f(s);
printf("%s\n", s);
return 0;
}
void f(char *p)
{
int i = 0, j = 0;
while(*(p + i ) != '\0')
{
j = i++;
}
for(i = 0; i <= j ; i++, j--)
{
char temp = *(p + j);
*(p + j) = *(p + i);
*(p + i) = temp;
}
}
页:
[1]