最近帮他们做了一个简单的c++的题目,以前做过,当时是借鉴的别人的代码,现在也忘得差不多了,不过思路还有,现在正好可以再温习一下。

题目要求如下:

  先输入你要输入的字符串的个数。然后换行输入该组字符串。每个字符串以回车结束,每个字符串不多于一百个字符。 如果在输入过程中输入的一个字符串为“stop”,也结束输入。 然后将这输入的该组字符串按每个字符串的长度,由小到大排序,按排序结果输出字符串。如果存在多个字符串长度相同,则按照原始输入顺序输出。
  输入格式:
  字符串的个数,以及该组字符串。每个字符串以‘\n’结束。如果输入字符串为“stop”,也结束输入.
  输出格式:
  可能有多组测试数据,对于每组数据, 将输入的所有字符串按长度由小到大排序输出(如果有“stop”,不输出“stop”)。
  输入样例:
  4
  faeruhyytrjh tjytj
  hsrthts   hjnshtgfhs
  stop
  3
  htrskbns
  bsartanjsf tyjndyt
  nsr jj jtey
  输出样例:
  faeruhyytrjh tjytj
  hsrthts   hjnshtgfhs
  htrskbns
  nsr jj jtey
  bsartanjsf tyjndyt

好,下面先把代码贴出来

#include<iostream>

using namespace std;

void sort(string *a, int n);//sort函数进行排序  字串指针a 字串数量n 

int main(){
int n,i,j = ;
string b;
begin:
while(scanf("%d",&n)!=' '){
getchar(); //获取输入的n的值 注意它是读取单一字符的
string *p = NULL;//初始化指针
p=new string[n];//为指针分配动态空间
for(i = ;i < n; ++i){
//b = "\n"; 在下次使用时清除缓存
getline(cin,b);
if(b != "stop"){
p[j] = b;
j++;
}else{
break;
}
}
sort(p,j);
cout<<" "<<endl;
for(i = ;i < j;++i){
cout<<p[i]<<endl;
}
}
goto begin;
return ; } /**
*排序采用冒泡排序法
*/
void sort(string *a,int n){
int i,j;
string b;
for(i = ;i < n;++i){
for(j = ;j < n-i;++j){
if(a[j].size()>a[j + ].size()){//size 获取字串长度(大小)
b=a[j];
a[j]=a[j + ];
a[j + ]=b;
}
}
} }

这道题的思路其实不是很难,就是在实际操作的时候会遇到一些问题。

  1、首先,在输入的时候,可以循环用cin输入,但是不可以用gets,因为gets无法以空格为结束来终止输入。

  2、自我感觉使用快排会更快一点,但是鉴于现在输入的数据量的关系,冒泡排序也还可以。

  3、在这段代码里我用到了getline,这就是比较偷懒的行为,建议不要过多使用它,多使用cin.getline,会更加灵活多变。

字符串排序--string类的使用的更多相关文章

  1. 全面深入介绍C++字符串:string类

    http://blog.csdn.net/liuliming3000/article/details/1809385 1 从C到C++ string类 2 string类的构造函数 3 string类 ...

  2. 数据结构和算法 – 4.字符串、 String 类和 StringBuilder 类

    4.1.String类的应用 class String类应用 { static void Main(string[] args) { string astring = "Now is The ...

  3. 字符串格式化-String类format方法

    常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象. format()方法有两种重载形式. 显示不同转换符实现不同数据类型到字符串的转换,如图所示: 测 ...

  4. C++字符串和string类介绍

    一.C风格字符串 ◆ 1.字符串是用字符型数组存储的,字符串要求其尾部以'\0'作为结束标志.如:    char string[ ]="C++ programming language&q ...

  5. Java字符串(String类)

    定义方法: 1.String demo = "test"; 2.String demo = new String(); 3.String demo = new String(&qu ...

  6. C 风格字符串、string 类要点总结

    1. C风格字符串 1.1 其它 头文件<cstring> 特殊性质:C风格字符串以空字符\0结尾 1.2 读取一行的区别 1.2.1 cin.getline(array1,n,char) ...

  7. JAVA里的字符串,String 类简单介绍

    http://www.360doc.com/content/14/1107/23/17130779_423471141.shtml

  8. 第7章.字符串、String类和StringBuilder类

    参考链接: https://www.runoob.com/csharp/csharp-string.html https://www.cnblogs.com/cang12138/p/7323709.h ...

  9. [Java初探04]__字符串(String类)相关

    前言 接下来将暂时将重心偏移向实际操作,不在将大量时间花费在详细的知识点整理上,将会简略知识总结笔记的记录,加强实际练习的时间,实例练习篇也不再同步进行,我会将部分我觉得重要的源码更新在每节知识点后面 ...

随机推荐

  1. 20175120彭宇辰 《Java程序设计》第九周学习总结

    教材内容总结 一.mysql数据库管理系统(windows) 1.官网下载安装解压mysql社区版 2.启动mysql 用cmd进入mysql解压包,输入 mysqld --initialize-in ...

  2. 爬虫基础之urllib库

    urllib库的基本使用 urlopen() # 导入urllib库 import urllib # 往指定url发送请求,返回一个响应对象 response = urllib.request.url ...

  3. hello1实例的分析

    JSF简介一. 什么是 JSF:JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架.它提供了一种以组件为中心来开发 Java Web 用户界面的方法 ...

  4. 批量镜像locator(比如表情模板)

    #外挂   镜像loc     前缀  lf  镜像给   rt   选中其中一个会镜像另一个 myPrefix='lf_'myMdf='rt_' myselectLoc=mc.ls(sl=1)for ...

  5. 学习笔记CB014:TensorFlow seq2seq模型步步进阶

    神经网络.<Make Your Own Neural Network>,用非常通俗易懂描述讲解人工神经网络原理用代码实现,试验效果非常好. 循环神经网络和LSTM.Christopher ...

  6. Python 限制线程的最大数量(Semaphore)

    import threadingimport time sem = threading.Semaphore(4) # 限制线程的最大数量为4个 def gothread(): with sem: # ...

  7. WiFi万能钥匙 for Macv1.1.0中文版

    wifi万能钥匙 for Mac是一款运行在Mac平台上的免费WiFi热点软件,Mac分享无线流量.管理WiFi连接的必备神器.WiFi万能钥匙Mac版内置千万Wi-Fi热点数据,随时随地轻松接入无线 ...

  8. day-08文件的操作

    三种字符串 1.普通字符串:u‘以字符作为输出单位’ print(u'abc') # 用于显示 2.二进制字符串:b‘二进制字符串以字节作为输出单位’ print(b'abc') # 用于传输 3.原 ...

  9. docker WARNING: IPv4 forwarding is disabled. 解决方法

    WARNING: IPv4 forwarding is disabled. Networking will not work. 在宿主机添加如下信息 echo net.ipv4.ip_forward= ...

  10. Zabbix server的配置文件没有真正生效

    现状 Zabbix server端迁移之后,一直卡,卡的不行的卡,一直以为是网络的原因,实在忍受不下去了,还是得排查排查   在界面上一直显示这条,但是我的zabbix_server确实是启动的,但是 ...