字符串倒序输出 递归和正常写法
字符串倒序输出,我们第一个想到的就是位置互换,将字符串的第一个位置,与字符串的最后一个位置互换,然后字符串的第二个位置,与倒数第二个位置互换,以此类推,到了中间,左边的位置大于右边的时候,那么这个循环就终止了
循环条件(left < right);
循环语句(在这里也用到了swap)
tmp = string[left];
string[left] = string[right];
string[right] = tmp;
left++;
right++;
不用strlen这个库函数的时候,需要用到自己创建的函数,可以用上字符串的判断条件,末尾是'\0'
用上while循环,*string != '\0' string是一个指针,*string就是第一个数
在while循环里面,string++,随着地址一步一步的慢慢增多,这个字符串上面的所有字符也一个一个的被略过,用count这个变量来输出这个过程。
代码
#include <stdio.h>
int my_strlen(char* string)
{int count = 0;while (*string != '\0'){count++;string++;}return count;
}void reverse_string(char *string)
{int left = 0;int right = my_stlen(string) - 1;//字符串下标从0开始while(left < right)//这个表达式对了,才能进入循环{char tmp = string[left];string[left] = string[right];string[right] = string[left];left++;right--;}
}int main()
{char arr1[] = "abcdef";printf("%s", arr1);reverse_string(arr1);//arr1是一个地址,所以在reverse_string这个函数形参要用到char * 类型的形参printf("%s", arr1);return 0;
}
下面我们使用递归方法
因为交换每次只能最前面一个和最后面一个交换,也只有这两个可以通过0和strlen()- 1轻松获取,中间的这一大坨东西是一直留在那个里面的。
那么我们也可以写出这个迭代函数,就是把第一个和最后一个交换了,用迭代函数处理中间那一串字符串,每次迭代函数都是对那一串字符串进行取值
第一步:先把第一个位置上面的值给取下来,放到临时变量里面,tmp = string[0]
第二部:把最后一个数放在第一个的位置上,string[my_strlen - 1] = string[0]
第三步:(关键的一步),不是把临时变量放到最后一个的空位里面,而是为那中间的那一串字符串设立一个'\0' 字符串的结束标志
最后我们再把 那个临时变量放到那个地方上去
迭代还需要一个判断条件,就是中间的那一串东西没有字符了然后就输出
void reverse_string(char * str)
{char tmp = str[0];str[0] = str[strlen(str) - 1);//str[strlen(str) - 1] = '\0';if (strlen(str + 1) >= 2){reverse_string(str + 1);}str[strlen(str) - 1 = tmp;
}//也可以这样写
void reverse_string(char* str)
{char tmp = *str;int len = my_strlen(str);*str = *(str + len - 1);*(str + len - 1) = '\0';if (my_strlen(str + 1) >= 2){reverse_string(str + 1);}*(str + len - 1) = tmp;
}//就是用上了*这个符号
字符串倒序输出 递归和正常写法相关推荐
- string字符串内容倒叙_Java实现字符串倒序输出的常用方法小结
本文实例汇总了Java实现字符串倒序输出的常用方法,分享给大家供大家参考.具体方法如下: 1. 最容易想到的估计就是利用String类的toCharArray(),再倒序输出数组的方法了. 实现代码如 ...
- C++ 递归算法将输入的字符串倒序输出
C++ 递归算法将输入的字符串倒序输出 直接上代码. #include <iostream> #include<string> using namespace std; //使 ...
- python解决字符串倒序输出
#python解决字符串倒序输出 def string_reverse(m):num=len(m)a=[]for i in range(num):a.append(m[num-1-i])#从最后一位的 ...
- 汇编程序:将字符串倒序输出
[任务] 程序功能:从键盘上输入一个字符串,以$结束,将字符串倒序输出(字符串不超过80个字符). 输入样例:abcd#1234 efg$ 输出样例:gfe 321#dcba 算法要求:逐个输入字符( ...
- 从键盘输入一个已确定长度的字符串。然后将这个字符串倒序输出
字符:tnndwhynotdrinkit(催逝员警告) VS无法运行,会报错a[n]中必须为常量 ------------------------------------------ 代码: #i ...
- Java实现字符串倒序输出
Java实现字符串倒序输出 package Strin;//文件夹名称import java.util.Scanner;//导入的Scanner包public class Demo {//类的名称pu ...
- C语言基础:使字符串倒序输出
C语言基础:使字符串倒序输出 1. 用字符指针作形参 例1: void reverse1(char *s) {char* p=s+strlen(s)-1;char t;while(s<p){t= ...
- 新手入门之字符串倒序输出
今天我们来讲字符串倒序输出 字符串,string,这个大家应该很熟悉吧,当我们要怎么把它倒序输出呢,话不多说,看代码! #include <iostream> #include <s ...
- 递归实现字符串倒序输出
package com.yc.algorithm.recursion;import java.util.Scanner;/*** 递归实现反转字符串* @author yc*/ public clas ...
最新文章
- python 开发板 i2s_嵌入式小系统I2S接口调试总结
- Hadoop MapReduce的模式、算法和用例
- 蒂姆·库克:给好人留的后门同时也是给坏人留的
- alertmanager 告警恢复_Prometheus配置企业微信告警
- 华为荣耀鸿蒙系统升级名单,华为鸿蒙系统正式版首批升级名单公布:这8款机型用户有福了...
- (转载)PHP 判断常量,变量和函数是否存在
- 12.程序员的自我修养---系统调用与API
- PHP Cookbook读书笔记 – 第13章Web自动化
- 10句话快速提高项目经理的领导力
- [受限玻尔兹曼机] 原理、求解过程推导、深度信念网络
- 「玩物得志 App」:一家典型的云原生企业,如何在创业早期数次“弯道超车”? | 云原生Talk...
- 生物信息学python脚本_使用Python/Biopython/Clustalw的生物信息学脚本,使用stdout迭代蛋白质目录...
- 什么是监管数据?什么是监管信息系统?监管数据安全管理办法说了什么?
- 计算机主机箱内部各部件,电脑主机箱内的部件组装图解
- Flyme patchrom项目笔记
- 关于word2016保存失败
- excel高级功能-分级显示
- 针对各组的意见,除评论员外的四个人的反思和改进
- 京东砸3亿激励一线员工:要么花钱抢人才,要么省钱养废材!
- [EJB:011008]Unable to bind EJB Home Interface to the JNDI name: BusinessDelegateBean.