求C++大神检查问题,关于百家姓排序的,运行后并未编排,直接输出了

#include<iostream>
#include<string>
using namespace std;
void input(string *name,int n);
int sort(string *name,int n);
void output(string *name,int n);
void main()
{
int n;
string name[255];
cout<<"请输入姓名个数:"<<endl;
cin>>n;
cout<<"请输入姓名:"<<endl;
input(name,n);
sort(name,n);
cout<<"after sort"<<endl;
output(name,n);
}
void input(string *name,int n)
{
for(int i=0;i<n;i++)
{
cin>>name[i];
}
}
void output(string *name,int n)
{
for(int i=0;i<n;i++)
{
cout<<name[i]<<endl;
}
}
int sort(string *name,int n)
{
int i=0;
string t;
string temp;
t=name[0];
string xing[4]={"赵","钱","孙","李"};
for(;xing[i]!=t;i++)
{
return i;
}
for(;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if((name[i][0])>(name[j][0]))
{
temp=name[i];
name[i]=name[j];
name[j]=temp;
}
}
}
}

第1个回答  2013-06-26
真想做百家姓排序也不难,你只要把输入的人名存入一个string *name[100](实际可能更大)的二维数组里面就可以了,name[i]这个一位数组代表姓为百家姓中第i的人的数组。
然后你一个一个读入人名,判断应该属于那一个数组,就放进去,最后按照这个数组顺序输出就可以了,就是正确的排序结果了。不过你需要一个辅助数组 string firstname[100]来存储这一百个姓,方便你去查询某个人姓对应的数组下标。
需要注意的一点:一个人名输入后,他的姓如果是单个字,那么取前面连个字节,如果是复姓,就根据长度来取1,注意一个汉字占两个ascii字节追问

感觉好困难啊

第2个回答  2013-06-26
string xing[4]={"赵","钱","孙","李"};
for(;xing[i]!=t;i++)
{
return i;
}
上面这句你想干嘛呢,错误出在这里

知道,你错在那里了,上面你只比较了name[0]了,要是输入的第一个性,不是赵","钱","孙","李"
直接return i,结束函数了,那下面的排序就没有执行了,你把上面注释掉就可以排序追问

应该怎么操作?

追答

你都没说 你加上面那代码干嘛用的。。。

追问

就是看看输入的名字是否有不符合四个姓的

追答

我不是说了你的代码之比较了第一个输入的性

你这问题问题。。。叫你怎么回答啊,,,要达到什么效果,你把原题题目拿出来给我看一下。。。我真不知道你要干嘛了

追问

我私信你行吗?还是qq?

追答

我看到了,baiduhi里面

追问

恩恩,麻烦你了

追答

我怎么还没看到题目

本回答被提问者采纳
第3个回答  2013-06-26
很明显啊!你应该弄N个vector数组,如果发现其xing和谁匹配,就往数组里面扔就可以了。追问

谢谢啊

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网