最近帮他们做了一个简单的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. AI之旅(5):正则化与牛顿方法

    前置知识   导数,矩阵的逆 知识地图   正则化是通过为参数支付代价的方式,降低系统复杂度的方法.牛顿方法是一种适用于逻辑回归的求解方法,相比梯度上升法具有迭代次数少,消耗资源多的特点. 过拟合与欠 ...

  2. Springboot框架,实现请求数据解密,响应数据加密的功能。

    一.简要说明: 在做这个功能的时候,参考了很多文章,也试了用过滤器解决.但总体来说还是很麻烦,所以换了另一种解决方案.直接实现RequestBodyAdvice和ResponseBodyAdvice两 ...

  3. jq ajax数据交互

    get 与 post 的区别 了解和使用 get和post是HTTP与服务器交互的方式, 说到方式,其实总共有四种:put,delete,post,get. 他们的作用分别是对服务器资源的增,删,改, ...

  4. js数组遍历方法总结

    数组遍历方法 1.for循环 使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显. 1 2 3 for(j = 0,len=arr.length; j < le ...

  5. mnist的格式说明,以及在python3.x和python 2.x读取mnist数据集的不同

    有一个关于mnist的一个事例可以参考,我觉得写的很好:http://www.cnblogs.com/x1957/archive/2012/06/02/2531503.html #!/usr/bin/ ...

  6. Oracle创建用户角色

    正在维护一个CS结构的应用,每次创建应用的用户时都需要创建对应的数据库schema,并且需要赋予其相应的对象权限和角色.操作很不方便,所以专门创建了一个角色,过程如下: 1.创建角色 SQL> ...

  7. LeetCode——翻转数字

    第七题,Reverse Integer.(https://leetcode.com/problems/reverse-integer/description/) 注意事项:翻转之后,数据有可能会超过I ...

  8. C++——volatile关键字的学习

    首先声明一点,本文是关于volatile关键字的学习,学习内容主要是来自一些大牛的网络博客. 一篇是何登成先生的C/C++ Volatile关键词深度剖析(http://hedengcheng.com ...

  9. 结合数据结构来看看Java的String类

    数据结构中定义字符串是由零个或多个字符组成的有限序列,有限,指出字符串的长度是一个有限的数值:所谓的序列,说明串的相邻字符之间具有前驱和后继的关系.字符串一般记为s="a1a2...an&q ...

  10. 【C#】stream图像转byte的问题

    Image xx = Image.FromStream(linkList[ii].stream); byte[] bytes = new Byte[linkList[ii].stream.Length ...