栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

SWUST OJ171字符串的倒序

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SWUST OJ171字符串的倒序

题目描述:

 这里我们采用两种办法来解决这道题:

第一种使用常规的C语言库函数和while循环的方式来解决一下。

首先分析一下此题,如果用strlen的方法来写的话,交换顺序会非常容易。

源代码: 

#include

#include
void reverse_string(char*str)
{
    int len = strlen(str);
    int left = 0;
    int right = len - 1;
    while (left < right)
    {
        char tmp = str[left];
        str[left] = str[right];
        str[right] = tmp;
        left++;
        right--;
    }
}
int main()
{
    char arr[50] = { 0 };
    scanf("%s", arr);
    //数组名是首元素的地址
    //首元素就是char类型,即char*
    reverse_string(arr);
    printf("%sn", arr);//期望结果是fedcba
    return 0;
}

方法二:

如果使用递归,不能使用C语言的库函数时,那么我们语言自定义一个strlen.

自定义一个类似于strlen函数的功能也非常容易,我们就需要使用一个计数器,用while循环加count的形式来测出字符串长度。

此代码非常的精巧,这里我们需要注意一个东西,在用tmp临时放置a变量时,将f放入a的位置后,我们不能直接将a变量直接放入f中,这样会造成判断出错,所以f的位置应该放入。然后需要注意的一点是,在判断是否继续调用的时候,每次测量长度都应该将str+1,然后再将字符串测量长度。

源代码:

#include

int my_strlen(char*str)
{
    int count = 0;
    while (*str !='')
    {
        count++;
        str++;
    }
    return count;
}
void reverse_string(char*str)
{
    int len = my_strlen(str);
    char tmp = str[0];
    str[0] = str[len - 1];
    str[len - 1] = '';
    if (my_strlen(str + 1) >= 2)
    {
        reverse_string(str + 1);
    }
    str[len - 1] = tmp;

}
int main()
{
    char arr[50] = {0};
    scanf("%s", arr);
    //数组名是首元素的地址
    //首元素就是char类型,即char*
    reverse_string(arr);
    printf("%sn", arr);//期望结果是fedcba
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/458172.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号