介个程序,有点纠结,帮忙看下吧...谢谢~~~~[em06]
#include<iostream> using namespace std;
int shuz(int a[],int length);
int main()
{
bool quit=false;
int i;
while(true)
{
int choice;
cout<<"请输入您的选择 :"<<endl;
cout<<"1.按数值大小进行排序"<<'\t'<<"2.按字符串大小进行排序"<<'\t'<<"3.quit"<<endl;
cin>>choice;
switch(choice)
{
case 1:
cout<<"您选择了按数值大小进行排序的选项"<<endl<<"请输入要排序的数字:"<<endl;
const int N=6;
int data[N];
for(i=0;i<N;i++)
cin>>data[i];
cout<<endl<<endl;
shuz(data,N);
break;
case 2: //关键在case 2 :按字符串大小排序,下面是我的实现方法,
cout<<"您选择了按字符串大小进行排序的选项"<<endl<<"请输入要排序的数字:"<<endl; //貌似真的不能实现好像,额..好纠结,帮忙看看错在哪里
const int M=6; //主要是思路,如何进行比较啊,是数字进行排序啊是
int data[M];
for(i=0;i<M;i++)
cin>>data[i];
cout<<<<endl<<endl;
for(i=0;i<M;i++)
for(j=0;j<M-i-1;j++)
{
if(strcmp(data[j],data[j+1])>0)
{
temp=data[j];
data[j]=data[j+1];
data[j+1]=temp;
}
}
cout<<"进行排序后:"<<endl;
for(i=0;i<M;i++)
cout<<data[i]<<'\t';
cout<<endl<<endl;
break;
case 3:
quit=true;
break;
default:
cout<<"输入有误"<<endl;
break;
}
if(quit==true)
break;
}
system("pause");
return 0;
}
int shuz(int a[],int length)
{
int i,j,temp;
for(i=0;i<length;i++)
cout<<a[i]<<'\t';
cout<<endl<<endl;
for(i=0;i<length-1;i++)
for(j=0;j<length-i-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
cout<<"进行排序后:"<<endl;
for(i=0;i<length;i++)
cout<<a[i]<<'\t';
}
[ 本帖最后由 lianjiecuowu 于 2011-6-14 17:29 编辑 ]