输入n个字符串然后从小到大排序
#include<iostream>#include<string>usingnamespacestd;voidmain(){stringt,c,b,d;cout<<"p...
#include <iostream>
#include <string>
using namespace std;
void main( )
{string t,c,b,d;
cout<<"please input n: "<<endl;
int i,n,k,j;
cin>>n;
cout<<"please input strings: ";
char a[30][30];
for(i=0;i<n;i++)
cin>>a[i];
cout<<endl;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
{c=a[j];b=a[k];d=a[i];
if(c<b) k=j;
t=b;b=d;d=t;}}
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;}
这个是我码的代码,然后输入什么输出就是什么……我知道我是错在排序那部分不能用数组来直接比较排序,但是字符串怎么排序……应该怎么改,麻烦解释一下然后说一下排序部分应该怎么改。我用的是选择排序法排的虽然排错了…………
还有,用C++语言吧C语言那些什么printf不懂,还有不要直接用现成的排序函数我还没学呢……
诶有人帮帮忙么………… 展开
#include <string>
using namespace std;
void main( )
{string t,c,b,d;
cout<<"please input n: "<<endl;
int i,n,k,j;
cin>>n;
cout<<"please input strings: ";
char a[30][30];
for(i=0;i<n;i++)
cin>>a[i];
cout<<endl;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
{c=a[j];b=a[k];d=a[i];
if(c<b) k=j;
t=b;b=d;d=t;}}
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;}
这个是我码的代码,然后输入什么输出就是什么……我知道我是错在排序那部分不能用数组来直接比较排序,但是字符串怎么排序……应该怎么改,麻烦解释一下然后说一下排序部分应该怎么改。我用的是选择排序法排的虽然排错了…………
还有,用C++语言吧C语言那些什么printf不懂,还有不要直接用现成的排序函数我还没学呢……
诶有人帮帮忙么………… 展开
1个回答
展开全部
字符串比大小:
int strcmp(s1,s2)//s1、s2两个字符串
说明:
当s1<s2时,返回值<0
当s1==s2时,返回值=0
当s1>s2时,返回值>0
头文件:string.h
希望能帮到你!
int strcmp(s1,s2)//s1、s2两个字符串
说明:
当s1<s2时,返回值<0
当s1==s2时,返回值=0
当s1>s2时,返回值>0
头文件:string.h
希望能帮到你!
追问
什么意思?那应该怎么改?
追答
#include <iostream>
#include <string>
using namespace std;
void main( )
{
cout<<"please input n: "<<endl;
int i,j,n;
cin>>n;
cout<<"please input strings: ";
char a[30][30];
char temp[30];
int inde;
for(i=0;i<n;i++)
cin>>a[i];
cout<<endl;
for (i=0;i<n;i++)
{
inde = i;
strcpy(temp,a[i]);
for (j=i;j<n;j++)
{
if (strcmp(a[j],temp)>0)
{
inde = j;
strcpy(temp,a[j]);
}
}
strcpy(a[inde],a[i]);
strcpy(a[i],temp);
}
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询