C++代码实现降序排列问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 10:58:59
void danci_paixu()
{
char a[6][30];
cout<<"请输入六个英文单词:"<<endl;
for(int i=0;i<6;i++)
cin>>a[i];
char b[30];
int e;
for(int k=0;k<6;k++)
{
for(int l=k+1;l<6;l++)
{
e=1;
for(int n=0;n<30;n++)
{
if(a[k][n]>a[l][n]&&e==1)
{
e++;
for(int m=0;m<30;m++)
{
b[m]=a[k][m];
a[k][m]=a[l][m];
a[l][m]=b[m];
}
}
}
}
}
cout<<"降序排列后:"<<endl;
for(i=0;i<6;i++)
{
for(k=0;k<30;k++)
{
if(a[i][k]=='\0')
break;
cout<<a[i][k];
}
cout<<endl;
}cout<<endl;
}
谁能帮我看下这段C++代码要实现降序排列哪出问题了,谢谢啊!!
我已经找到问题所在了,是少了一个选择条件,我是学生,刚学C++不久,还不会对字符串整体比较的操作,虽然解决了不过还是要谢谢你啊!!
void danci_paixu()
{
char a[6][30];

你的代码错误在排序这一段:
for(int k=0;k<6;k++)//应该是k<5
{
for(int l=k+1;l<6;l++)
{
e=1;
for(int n=0;n<30;n++)
{
if(a[k][n]>a[l][n]&&e==1)
{
e++;
for(int m=0;m<30;m++)
{
b[m]=a[k][m];
a[k][m]=a[l][m];
a[l][m]=b[m];
}
}
}
}
}
看得出,你是想用选择法排序,但具体错在哪,我也没看出来

为什么要把字符串给一个一个地拆了呢?
你要排的是字符串不是字符啊
对字符串整体进行操作不是更方便吗?

在Windows XP + VC++6.0下正常运行

#include<iostream>
#include<cstdio>
using namespace std;

void danci_paixu()
{
char a[6][30];
cout<<"请输入六个英文单词:"<<endl;
for(int i=0;i<6;i++)
cin>>a[i];
char b[30];
int e;
for(int k=0;k<5;k++)
{
e=k;
for(int l=k+1;l<6;l++)
{
if(strcmp(a[l],a[e])<0)
e=l;
if(e!=i)
{
strcpy(b,a[k]);
strcpy