【发布时间】:2013-09-04 09:00:03
【问题描述】:
我一直在尝试使用这个 c++ 程序按字母顺序对 5 个名称进行排序:
#include <iostream>
#include <cstring>
#include <conio.h>
using namespace std;
int main()
{
char names[5][100];
int x,y,z;
char exchange[100];
cout << "Enter five names...\n";
for(x=1;x<=5;x++)
{
cout << x << ". ";
cin >> names[x-1];
}
getch();
for(x=0;x<=5-2;x++)
{
for(y=0;y<=5-2;y++)
{
for(z=0;z<=99;z++)
{
if(int(names[y][z])>int(names[y+1][z]))
{
strcpy(exchange,names[y]);
strcpy(names[y],names[y+1]);
strcpy(names[y+1],exchange);
break;
}
}
}
}
for(x=0;x<=5-1;x++)
cout << names[x];
return 0;
}
如果我分别输入 Earl、Don、Chris、Bill 和 Andy,我会得到:
AndyEarlDonChrisBill
谁能告诉我我的程序有什么问题?
【问题讨论】:
-
您是否考虑过使用
std::string及其std::string::compare 功能? -
@GregHewgill 更多类似查找
std::string -
坦率地说,你的程序与任何合理的字符串排序算法都没有明显的关系。
-
我很想知道你为什么要在 for 循环条件中从
5中减去2... -
您的代码很有趣(除了过于复杂之外):它包含不标准的
conio.h,并且似乎没有在您的代码中使用;它使用cstring库,这是一个相当低级的东西。如果您正在尝试学习 C++(而不是 C),那么学习 C++ 字符串库功能(<string>和相关的std::string类,正如其他人所提到的)会更容易。除非您有充分的理由使用数组,否则最好使用标准容器(例如<vector>中的std::vector)。所有这些代码是您自己编写的,还是您尝试改编在互联网上找到的东西?
标签: c++ string sorting alphabetical