琪琪怪怪 发表于 2021-5-1 14:40:34

指针 字符串逆序

设计一个函数void f(char *p),对p指向的字符串进行逆序,要求函数f()中不能定义任何数组,不能调用任何字符串处理函数。
在函数main()中,输入字符串,调用f(),最后输出逆序后的字符串。

输入示例:
abcd

输出示例:
dcba

肖-肖 发表于 2021-5-1 15:05:43

本帖最后由 肖-肖 于 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--;
    }
   
}

Afragrant 发表于 2021-5-1 18:37:54

#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]
查看完整版本: 指针 字符串逆序