#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
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/77523.html
標籤:C++
