c++封装函数版本(无话可说版,啥也不是版)

int main() {string s;getline(cin, s);reverse(s.begin(), s.end());cout << s;return 0;}

指针倒序输出版本

1.首先来了解一下顺序输出的逻辑

int main() {char a[20];cin.get(a, 20);int n = strlen(a) / sizeof(char);cout << "n:" << n << endl;char *p = a;//&a[n];while (*p != '\0') {cout << *p << endl;*p++;//地址加1*p++也是地址加一,从右到左的结合型}}

char *p = a;//&a[n];//一个指针指向数组的首地址
    while (*p != '\0')//当指针没有指向字符串的结束符号'\0'时,进入循环,指针自加

2,类似地再了解一下倒序输出的逻辑。

int main() {char a[20];cin.get(a, 20);int n = strlen(a) / sizeof(char);cout << "n:" << n << endl;char *p = a;//&a[n];p = p + n;while (p != a) {*p--;//地址加1*p++也是地址加一,从右到左的结合型cout << *p << endl;}
}

求出指针指向数组的末地址应当是p+n-1(n为数组元素个数),但是在循环体判断条件中,指针指向首地址时就结束了不会打印第一个字母。所以我们用上一个地址,先自减再打印。用元素2的地址自减打印元素1,依次类体。所以第一个为p = p + n,为结束符号的地址;

然后把每一个元素放入一个新的数组中就打印出来了。如下

int main() {char a[20], b[20];cin.get(a, 20);int n = strlen(a) / sizeof(char);cout << "n:" << n << endl;char *p = a;//&a[n];p = p + n ;while (p != a) {*p--;//地址加1*p++也是地址加一,从右到左的结合型cout << *p << endl;static int i = 0;b[i++] = *p;}cout << b << endl;

借盆交换(声明新变量来存储)倒序输出版本

元素的个数不影响,只要保证对称抽两头的数据交换了就可以了。

于是需要一个指针指向s首地址,一个指针e指向末地址。只要满足s<e。s的内容与e的内容就交换。并且s自加,e自减。

a,b交换的逻辑:

t=a;a=b;b=t;


void reverse1(char *s) {char *p = s + strlen(s) - 1;//末地址char t;while (s < p) {//遍历t = *p;*p = *s;*s = t; //交换p--;s++;}
}int main(void) {char str[128];scanf("%s", str);reverse1(str);printf("%s\n", str);return 0;
}

这里还可以这样写

int main() {int n;//输入个数cin >> n;int temp = 0;int a[n];for (int i = 0; i < n; i++) {cin >> a[i];}for (int i = 0; i <= n / 2; i++) {cout << i << endl;temp = a[i];a[i] = a[n - i - 1];a[n - i - 1] = temp;}for (int i = 0; i < n; i++) {cout << a[i];}}

字符串倒序输出的逻辑相关推荐

  1. python解决字符串倒序输出

    #python解决字符串倒序输出 def string_reverse(m):num=len(m)a=[]for i in range(num):a.append(m[num-1-i])#从最后一位的 ...

  2. 汇编程序:将字符串倒序输出

    [任务] 程序功能:从键盘上输入一个字符串,以$结束,将字符串倒序输出(字符串不超过80个字符). 输入样例:abcd#1234 efg$ 输出样例:gfe 321#dcba 算法要求:逐个输入字符( ...

  3. 从键盘输入一个已确定长度的字符串。然后将这个字符串倒序输出

    字符:tnndwhynotdrinkit(催逝员警告) VS无法运行,会报错a[n]中必须为常量 ------------------------------------------ 代码: ​ #i ...

  4. 字符串倒序输出 递归和正常写法

    字符串倒序输出,我们第一个想到的就是位置互换,将字符串的第一个位置,与字符串的最后一个位置互换,然后字符串的第二个位置,与倒数第二个位置互换,以此类推,到了中间,左边的位置大于右边的时候,那么这个循环 ...

  5. string字符串内容倒叙_Java实现字符串倒序输出的常用方法小结

    本文实例汇总了Java实现字符串倒序输出的常用方法,分享给大家供大家参考.具体方法如下: 1. 最容易想到的估计就是利用String类的toCharArray(),再倒序输出数组的方法了. 实现代码如 ...

  6. C++ 递归算法将输入的字符串倒序输出

    C++ 递归算法将输入的字符串倒序输出 直接上代码. #include <iostream> #include<string> using namespace std; //使 ...

  7. Java实现字符串倒序输出

    Java实现字符串倒序输出 package Strin;//文件夹名称import java.util.Scanner;//导入的Scanner包public class Demo {//类的名称pu ...

  8. C语言基础:使字符串倒序输出

    C语言基础:使字符串倒序输出 1. 用字符指针作形参 例1: void reverse1(char *s) {char* p=s+strlen(s)-1;char t;while(s<p){t= ...

  9. 新手入门之字符串倒序输出

    今天我们来讲字符串倒序输出 字符串,string,这个大家应该很熟悉吧,当我们要怎么把它倒序输出呢,话不多说,看代码! #include <iostream> #include <s ...

最新文章

  1. 高效的scrum敏捷研发工具--Leangoo
  2. EOS账户和钱包综合指南
  3. oracle导入时提示IMP-00010:不是有效的导出文件,头部验证失败
  4. linux 软件 web管理系统,如何快速安装Webmin(linux系统web管理配置工具)
  5. 斯坦福大学CS229数学基础(线性代数、概率论)中文翻译版.pdf
  6. cmake构建器最新Windows/MACOS/LINUX版本分享
  7. 安卓能硬改的手机机型_【每日新闻】小米11部分镜头参数爆料;华为重新采购手机零部件 重启4G手机生产...
  8. Linux Systemcall By INT 0x80、Llinux Kernel Debug Based On Sourcecode
  9. C#如何将两个List集合合并
  10. R开发环境(Eclipse+StatET)
  11. 机器人控制算法----模糊控制
  12. 马尔科夫模型 Markov Model
  13. 箱线图2种画法-直接给出各个四分位值或者数据集
  14. STM32学习笔记——HC05
  15. RF天线设计的一些概念
  16. sqllabs详解与知识点汇总(内含代码审计)
  17. 照片怎么无损放大尺寸,三种方法无损放大照片
  18. P6800- 配件识真假
  19. 利用Javascript生成txt文本文件
  20. MT【129】常数变易法

热门文章

  1. [Android多媒体二]调用系统录音机录音并存储到指定位置,适配安卓 7.0
  2. ▷Scratch课堂丨在Scratch上制作雪花飞舞效果
  3. 32.java_注解(Annotation)
  4. 38城基本公共服务满意度出炉 拉萨厦门宁波居前三
  5. 王者荣耀什么时候出新的服务器苹果微信,iOS全面封杀热更新?开发者:对微信、王者荣耀等应用并无影响...
  6. 如何把视频格式转换mp4格式?试试嗨格式视频转换器
  7. 2021年三大运营商流量卡现状,你选对了吗?
  8. 渲染引擎分析 - 鸿蒙(OpenHarmony) JS UI 源码阅读笔记
  9. WIFI信道同频干扰
  10. Mahout中关于MultiLayer Perceptron模块的源码解析