C++实现字符串删除字符后逆序输出

 更新时间:2020年05月28日 10:03:01   作者:Alex山南水北  
这篇文章主要为大家详细介绍了C++实现字符串删除字符后逆序输出,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C++实现字符串删除字符后逆序输出的具体代码,供大家参考,具体内容如下

输入若干个字符串,和一个英文字符ch。 要求删除每个字符串中的字符ch(区分大小写),得到新的字符串,然后将新的字符串按照字典逆序排序后输出
(每个字符串的长度不超过30个字符,字符串总数不超过30)

输入:

3
abcddc
sxwcdez
ncvccvd
c

输出:

sxwdez
nvvd
abdd

C++实现:(适用于初学者)

#include <iostream>
#include <cstring>

using namespace std;

void sort_array(char s[][30], int n);

void removing(char s[][30], int n, char ch);

int main() {
  int n, i;
  char s[30][30] = {0};
  char ch;
  cout << "input the number of strings:" << endl;
  cin >> n;
  cin.get();//注意要把/n从输入流中去除
  for (i = 0; i < n; ++i) {
    cout << "input the NO." << i + 1 << " string:" << endl;
    cin.getline(s[i], 30);
  }
  cout << "input ch:" << endl;
  ch = cin.get();
  removing(s, n, ch);
  sort_array(s, n);
  for (i = 0; i < n; ++i) {
    cout << s[i] << endl;//二维字符串数组可以通过这种方式直接输出
  }
  return 0;
}

void sort_array(char s[][30], int n) {
  int i, j, k, temp;
  for (j = 0; j < n - 1; ++j) {
    bool sort_flag = false;
    //相当于一个冒泡排序,这里排序使用了strcmp
    for (i = 0; i < n - j - 1; ++i) {
      char str_temp[30] = {0};
      temp = strcmp(s[i], s[i + 1]);
      if (temp >= 0)continue;
      if (temp < 0) {
        for (k = 0; k < 30; ++k) {
          str_temp[k] = s[i][k];
        }
        for (k = 0; k < 30; ++k) {
          s[i][k] = s[i + 1][k];
        }
        for (k = 0; k < 30; ++k) {
          s[i + 1][k] = str_temp[k];
        }
        sort_flag = true;
      }
    }
    if (!sort_flag) {
      break;
    }
  }
}

void removing(char s[][30], int n, char ch) {
  bool flag = false;
  int i, j, k;
  for (i = 0; i < n; ++i) {
    for (j = 0; s[i][j] != '\0'; ++j) {
      if (s[i][j] == ch) {
        flag = true;
        //去除字符后把后面的往前面移动一位
        for (k = j; s[i][k] != '\0'; ++k) {
          s[i][k] = s[i][k + 1];
        }
      } else { flag = false; }
      if (flag) { j -= 1; }
    }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C++基于EasyX实现简单扫雷游戏

    C++基于EasyX实现简单扫雷游戏

    这篇文章主要为大家详细介绍了C++基于EasyX实现简单扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • 关于C++数组中重复的数字

    关于C++数组中重复的数字

    这篇文章主要介绍得是关于C++数组中重复的数字,文章以问题描述得形式,对问题展开分析用不同得方法去解决问题并附上方法得详细代码,需要的朋友可以参考以下文章得具体内容
    2021-11-11
  • C++Vector容器常用函数接口详解

    C++Vector容器常用函数接口详解

    最近我学习了C++中的STL库中的vector容器,对于常用容器,我们不仅要会使用其常用的函数接口,我们还有明白这些接口在其底层是如何实现的。所以特意整理出来一篇博客供我们学习
    2022-08-08
  • C语言实现解析csv格式文件的示例代码

    C语言实现解析csv格式文件的示例代码

    CSV,有时也称为字符分隔值,其文件以纯文本形式存储表格数据(数字和文本),本文为大家整理了C语言解析csv文件的方法,需要的可以参考一下
    2023-06-06
  • C语言中的断言函数assert详解

    C语言中的断言函数assert详解

    assert 是一个非常有用的工具,可以帮助开发人员在早期发现和纠正程序中的逻辑错误,在调试阶段通过断言可以验证程序中的假设条件是否成立,提高代码的可靠性和可维护性,这篇文章主要介绍了C语言中的断言函数assert,需要的朋友可以参考下
    2024-07-07
  • Qt之实现圆形进度条的示例代码

    Qt之实现圆形进度条的示例代码

    在平时做页面开发时,有些时候会用到圆形进度条,本文主要介绍了Qt之实现圆形进度条的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • 一文带你掌握C语言中的文件操作

    一文带你掌握C语言中的文件操作

    文件通常是驻留在外部介质(如磁盘等)上的,在使用时才调入内存中来,本文主要来和大家介绍一下C语言中的文件操作,有需要的可以了解下
    2024-02-02
  • C语言实现文件读写操作的几种常用方法

    C语言实现文件读写操作的几种常用方法

    C语言提供了一系列文件操作函数,使得我们可以通过程序对文件进行读写操作,本文主要介绍了C语言实现文件读写操作的几种常用方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • C++类与对象的重点知识点详细分析

    C++类与对象的重点知识点详细分析

    类和对象是两种以计算机为载体的计算机语言的合称。对象是对客观事物的抽象,类是对对象的抽象。类是一种抽象的数据类型;变量就是可以变化的量,存储在内存中—个可以拥有在某个范围内的可变存储区域
    2023-02-02
  • C语言实现链队列基本操作

    C语言实现链队列基本操作

    这篇文章主要为大家详细介绍了C语言实现链队列基本操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09

最新评论