首页 > 其他分享 >C练习——字符串逆序

C练习——字符串逆序

时间:2023-12-19 09:12:24浏览次数:30  
标签:arr int 练习 str 字符串 left 逆序

将“abcdefg”逆序

注意题意是将字符串逆序,会对字符串本身进行操作,而不是单纯逆序打印

方法一:非递归

#include <stdio.h>
#include <string.h>
// 将“abcdefg”逆序
// 注意题意是将字符串逆序,会对字符串本身进行操作,而不是单纯逆序打印

void reverse(char arr[])
{
    int sz = strlen(arr);    //计算字符串长度,注意sizeof要在主函数内且会多计算一个‘\0’

    int left = 0;
    int right = sz -1;            // 设置左右起点

    int temp = 0;                // 交换中间量

    for (left = 0; left < right; left++)
    {
        temp = arr[left];
        arr[left] = arr[right];
        arr[right] = temp;
        right -= 1;
    }
}
int main()
{
    char arr[] = "abcdefg";
    reverse(arr);         // 逆序函数
    printf("%s\n", arr); //打印字符串数组
}

 

 

 方法二:递归实现

#include <stdio.h>
// 递归法
void reverse(char *str)   // 这样的形参传参和之前的本质一样,便于理解
{
    int tmp = *str;    //1 将a赋值给临时变量
    int len= strlen(str);    //计算字符串长度,注意sizeof要在主函数内且会多计算一个‘\0’
    *str = *(str + len - 1); // 2 将g赋值给原来a的内存
    *(str + len - 1) = '\0'; // 3 原来g的位置放 '\0',得到新字符串“gbcdef”

    if (strlen(str + 1) >= 2)  // 4 开始递归
        reverse(str + 1);
    *(str + len - 1) = tmp; // 5 将临时变量里的值拿来放到最后的'\0'
}

int main()
{
    char arr[] = "abcdefg";
    reverse(arr);         // 逆序函数
    printf("%s\n", arr); //打印字符串数组
}

 

 

 

标签:arr,int,练习,str,字符串,left,逆序
From: https://www.cnblogs.com/xiaowanglong/p/17912183.html

相关文章

  • 代码随想录--字符串
    344.反转字符串https://leetcode.cn/problems/reverse-string/classSolution{public:voidreverseString(vector<char>&s){intsize=s.size();for(intj=size-1,i=0;i<size/2;j--,i++){swap(s[i],......
  • 课8正则练习
    1、显示/proc/meminfo文件中以大小s开头的行(要求:使用两种方法)[root@srehost~]#cat/proc/meminfo|egrep-o"^(s|S).*"SwapCached:0kBSwapTotal:8257532kBSwapFree:8257532kBShmem:11044kBSlab:128976kBSReclaima......
  • 递归的练习
    递归递归的介绍以编程的角度来看,递归指的是方法定义中调用方法本身的现象把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算递归的基本使用1.不死神兔问题:有1对兔子,从出生后的第3个月起每个......
  • Pwn 练习随笔
    pwn练习随笔1. [SWPUCTF2021新生赛]nc签到 打开附件发现是py源码。 importosart='''(("####@@!!$$))`#####@@!$$`))(('####@!!$:((,####@!!$:)).###@!!$:`##@@!$:`#@!!$!@#`#@!$:......
  • Java工具库中字符串判空方法知多少?各有什么区别?
    SpringFramework库在SpringBoot项目中,通常情况下,你不需要额外引入依赖来使用SpringFramework库中的常用工具方法,这是因为SpringBoot的起步依赖已经包含了SpringFramework的核心库,其中包括org.springframework.util包。这个用起来就很方便。在这里面有两个常用的方法:StringUtil......
  • 【代码注释即解题思路】1796. 字符串中第二大的数字
    一、题目描述给你一个混合字符串s,请你返回s中第二大的数字,如果不存在第二大的数字,请你返回-1。混合字符串由小写英文字母和数字组成。示例1:输入:s="dfa12321afd"输出:2解释:出现在s中的数字包括[1,2,3]。第二大的数字是2。示例2:输入:s="abc1111"输出:-1解释:......
  • 【C语言】puts()字符串输出函数 | 自动换行
    ......
  • C练习——判断闰年
    闰年的判断规则如下:(1)若某个年份能被 4 整除但不能被 100 整除,则是闰年。(2)若某个年份能被 400 整除,则也是闰年。逻辑转化,(4&& !100)||400打印1000~2000年之间的闰年#include<stdio.h>//判读是否为闰年,是1,否-1//逻辑,(4&&!100)||400intis_leap(intx){......
  • 2023-12/18数据结构练习
    给定一系列整型关键字和素数P,用除留余数法定义的散列函数H(Key)=Key将关键字映射到长度为P的散列表中。用线性探测法解决冲突。1#include<stdio.h>2inta[1009],b[1009];3intmain(){4intn,p;5scanf("%d%d",&n,&p);6intx,i,j;7for(i=0;i......
  • 【每日练习】将字符串翻转到单调递增、使字符串平衡的最少删除次数
    将字符串翻转到单调递增https://leetcode.cn/problems/flip-string-to-monotone-increasing/如果一个二进制字符串,是以一些0(可能没有0)后面跟着一些1(也可能没有1)的形式组成的,那么该字符串是单调递增的。给你一个二进制字符串s,你可以将任何0翻转为1或者将1翻转为0......