c++中 怎样用指针数组将输入的长度不超过10的字符串按包含字符串的多少进行排序 5

 我来答
浪花飘零2000
2014-11-04 · TA获得超过630个赞
知道小有建树答主
回答量:579
采纳率:0%
帮助的人:544万
展开全部
不知道是不是这个意思,还是要求在一行中输入字符串分割后排序
按串长度排序
#include "stdafx.h"
#include <iostream>
using namespace std;

#define N 10
#include<iostream>
using namespace std;

void sort(char *ptr[N])//N个字符串排序
{
int i,j;
char tmp[10],*p;
p=tmp;
for(i=0;i<N-1;i++)
for(j=i;j<=N-1;j++)
if(strlen(ptr[i])>strlen(ptr[j]))
{
strcpy(p,ptr[i]);
strcpy(ptr[i],ptr[j]);
strcpy(ptr[j],p);
}
}

int main()
{
char str[N][10],*ptr[N];
int i;
for(i=0;i<N;i++)
ptr[i]=str[i];
for(i=0;i<N;i++)
cin>>ptr[i]; //从键盘输入十个字符串
sort(ptr);
cout<<"sequence:"<<endl;
for(i=0;i<N;i++)
cout<<str[i]<<endl;
return 0;
}

字符串分割后排序程序,按串大小从小到大排序
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

#define N 10
#include<iostream>
using namespace std;

void sort(char *ptr[N],int index)//index个字符串排序
{
int i,j;
char tmp[10],*p;
p=tmp;
for(i=0;i<index;i++)
for(j=i;j<=index;j++)
if(strcmp(ptr[i],ptr[j])>0)
{
strcpy(p,ptr[i]);
strcpy(ptr[i],ptr[j]);
strcpy(ptr[j],p);
}
}

int main()
{
char str[N][10],*ptr[N];
string s_str;
getline(cin,s_str);
int i=0,j=0,index=0;
do
{
if (s_str[i]==' ')
{
str[index][j]=0;
index++;
j=0;
i++;
}
else if (i<s_str.length())
{
str[index][j]=s_str[i];
i++;
j++;
}
else
{
str[index][j]=0;
break;
}

}while(1);

for(i=0;i<=index;i++)
ptr[i]=str[i];
sort(ptr,index);
cout<<"sequence:"<<endl;
for(i=0;i<=index;i++)
cout<<str[i]<<endl;
return 0;
}

若满意请及时采纳,谢谢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式