鱼C论坛

 找回密码
 立即注册
查看: 2607|回复: 2

指针 字符串逆序

[复制链接]
发表于 2021-5-1 14:40:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

输入示例:
abcd

输出示例:
dcba
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[20];
    int i=0;
    scanf("%s",s);
    f(s);
    while(s[i]!='\0')
    {
        printf("%c  ",s[i]);
        i++;
    }
}
//对字符串进行逆序
void f(char *p)
{
    //i来看这个字符串的'\0'下标
    int i=0,q=0,h,tmp;
    while(p[i]!='\0')
    {
        ++i;
       // ++p;
    }
    h=i-1;//h是最后字符下标
    //temp是中间变量
    while(q<=h)
    {
        tmp=p[q];
        p[q]=p[h];
        p[h]=tmp;
        q++;
        h--;
    }
    
}
hd11.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-1 18:37:54 | 显示全部楼层
#include <stdio.h>

void f(char *p);

int main()
{
    char s[100];
    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;
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 13:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表