#include<iostream>#include<stdlib.h>#include<string.h>using namespace std;void input(char *city[],int n); void sort(char *city[],int n); int main(){ i ...
#include<iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
void input(char *city[],int n);
void sort(char *city[],int n);
int main()
{
int i= 0,m;
cout<<"輸入城市個數:"<<endl;
cin>>m;
char **city=new char *[m];//生成了指針city,指向數組city[m],city[i]分別指向各個城市的名稱
input(city,m); //輸入m個城市的名稱,以及指向首地址的指針
sort(city,m); //排序函數排序
cout<<"城市按拼音排列輸出如下:\n";
for(i=0;i<m;i++)
cout<<city[i]<<endl; //用數組方式解引和指針方式效果相同,即輸出*(city+i)和輸出city[i]的效果相同,都是輸出整個字元串
return 0;
}
void input(char *city[],int n) //input函數的形參接收city[i]數組的首地址,
{
char str[20];
int i;
cout<<"請輸入"<<n<<"個城市的名字(請用拼音):\n";
//start
for(i=0;i<n;i++)
{
cin>>str;
city[i]=(char*)malloc(sizeof(char)*(strlen(str)+1)); //動態申請數組,用city[i]指向,比如city[0]存放的是第一個城市名字
strcpy(city[i],str);
}
}
//start
//對city數組裡存放的城市名字排序,用strcmp函數
void sort(char *city[],int n)
{
char *temp;
int i,j;
for(i=0;i<n;i++)
{
for(j=1;j<n-1;j++)
{
if(strcmp(city[j],city[j-1])<0)
{
temp=city[j-1];
city[j-1]=city[j];
city[j]=temp;
}
}
}
//end
}