#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;
}
}
}
}
然后你一个一个读入人名,判断应该属于那一个数组,就放进去,最后按照这个数组顺序输出就可以了,就是正确的排序结果了。不过你需要一个辅助数组 string firstname[100]来存储这一百个姓,方便你去查询某个人姓对应的数组下标。
需要注意的一点:一个人名输入后,他的姓如果是单个字,那么取前面连个字节,如果是复姓,就根据长度来取1,注意一个汉字占两个ascii字节追问
感觉好困难啊
for(;xing[i]!=t;i++)
{
return i;
}
上面这句你想干嘛呢,错误出在这里
知道,你错在那里了,上面你只比较了name[0]了,要是输入的第一个性,不是赵","钱","孙","李"
直接return i,结束函数了,那下面的排序就没有执行了,你把上面注释掉就可以排序追问
应该怎么操作?
追答你都没说 你加上面那代码干嘛用的。。。
追问就是看看输入的名字是否有不符合四个姓的
追答我不是说了你的代码之比较了第一个输入的性
你这问题问题。。。叫你怎么回答啊,,,要达到什么效果,你把原题题目拿出来给我看一下。。。我真不知道你要干嘛了
我私信你行吗?还是qq?
追答我看到了,baiduhi里面
追问恩恩,麻烦你了
追答我怎么还没看到题目
本回答被提问者采纳谢谢啊