用c++解:输入5个字符串,按照升序输出。

要求5个字符串必须以指针数组形式存放

程序:#include <iostream>
using namespace std;
int main(void){
char *pstr[5];//指针数组
char *ptmp = new char[255];
for (int i = 0; i != 5; ++i){
*(pstr + i) = new char [255];//分配空间
cin >> *(pstr + i);//输入字符串
}
//排序: 升序
for (int i = 0; i != 4; ++i){
for (int j = i; j != 5; ++j){
if (strcmp(*(pstr + i), *(pstr + j)) < 0){
strcpy(ptmp, *(pstr + i));
strcpy(*(pstr + i), *(pstr + j));
strcpy(*(pstr + j), ptmp);
}
}
}
cout << "按升序输出为: " << endl;
//释放
delete [] ptmp;
//输出并释放
for (int i = 0; i != 5; ++i){
cout << *(pstr + i) << endl;
delete *(pstr + i);
}
system("PAUSE");
return 0;
}运行截图:说明一下:C++里面字符串排序默认以字母ASCII码进行大小比对, 并非按照字符串长短比对, 这点请楼主注意下如果需要长短比对, 楼主可以提出要求, 偶可以重新写过
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-20
#include<iostream>
#include<string>
using namespace std;int main()
{
char *str[5];
for(int i=0;i<5;i++)
str[i]=new char[100];
for(int i=0;i<5;i++)
cin>>str[i];
for(int i=0;i<4;i++)
{
int k=i;
for(int j=i+1;j<5;j++)
if(strcmp(str[k],str[j])>0)
k=j;
if(k!=i)
{
char *t=str[i];
str[i]=str[k];
str[k]=t;
}
}
for(int i=0;i<5;i++)
cout<<str[i]<<endl;
for(int i=0;i<5;i++)
delete str[i];
return 0;
}
相似回答