7-6 字符串长度排序--string类的使用 总结

7-6 字符串排序--string类的使用(30 分)

先输入你要输入的字符串的个数。然后换行输入该组字符串。每个字符串以回车结束,每个字符串不多于一百个字符。 如果在输入过程中输入的一个字符串为“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

提示:

根据输入的字符串个数来动态分配存储空间(采用new()函数)。每个字符串会少于100个字符。 测试数据有多组,注意使用while()循环输入。


分析:这题就是考的就是字符串长度排序问题,排序很简单,关键是“有多组测试数据”这个就很烦了,网上查到是用“EOF”的,思想应该是:测试数据是一个文本,末尾有EFO(-1)表示结束,通过对EOF的检测,来判断输入结束。一般网上做题,有多组数据输入的时候可能用EOF控制循环输入比较好。但是,自己输入多组测试数据的时候,死循环和它的效果是一样的。

  都写成函数了,复用性比较高,不过是老师写的,这里面要学的挺多的,还有很多不熟悉

  排序以后直接调用库函数的快速排序吧,(新补充一下:sort函数也很好用,就三个参数,貌似比qsort简单一点)

  调用方式:

 
     
  • #include
  • qsort(待排序数组首地址 ,  数组中待排序元素数量  , 各元素的占用空间大小  , 指向函数的指针);
  • https://www.cnblogs.com/sjy123/p/3287817.html 这里面有关于快速排列的详细介绍,写的挺好,以后用到,再看吧                  
#include
#include
using namespace std;


int cmp(const void*a,const void*b)
{
    return *(int*)a-*(int*)b;///升序
}


int main()
{
    int i;
    int a[10]={10,9,8,7,6,5,4,3,2,1};
    qsort(a,10,sizeof(int),cmp);
    for(i=0;i<10;i++)
        cout<

#include 
#include 

using namespace std;

string  *inputstring(int &number) ;
void sortstring(string *strArray, int number) ;
void printstring(string *strArray, int number) ;
void freeStrArray(char **strArray, int number) ;


int main()
{
    int n1, n2 ;
    string *strArray1 ;
    while(1)
    {
        strArray1 = inputstring(n1) ;
        sortstring(strArray1, n1) ;
        //cout << endl << "Sorted string is:" << endl ;
        printstring(strArray1, n1) ;

    }

    delete[] strArray1 ;

    return 0;
}


string *inputstring(int &number)
{
    string *strArray ;
    char  strTmp[100], ch ;
    int i ;
    cin >> number ;
    cin.get(ch) ;
    strArray = new string [number] ;
    for(i=0 ; istrArray[j].length())
            {
                pstrTmp = strArray[i] ;
                strArray[i] = strArray[j] ;
                strArray[j] = pstrTmp ;
            }
        }
    }
}

void printstring(string *strArray, int number)
{
    for(int i=0 ; i


你可能感兴趣的:(7-6 字符串长度排序--string类的使用 总结)