编写程序,输入10至20个城市名,按字母顺序输出城市名清单。

提示:

⑴利用字符串比较函数和数组排序算法实现。

⑵定义函数形参时,如果把二维数组定义为指针,调用时要用一级指针的地址。

编写程序,输入10至20个城市名,按字母顺序输出城市名清单:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define M 10
void input(char *city[],int n);
void sort(char *city[],int n);
int main(int argc, char **agrv){
char *city[M];
int i= 0;
input(city,M);
sort(city,M);
printf("城市按拼音排列输出如下:\n");
for(i=0;i<M;i++)
{
printf("%s\t",city[i]);
}
printf("\n");
return 0;
}
void input(char *city[],int n){
char str[20];
int i;
printf("请输入 %d 个城市的名字(请用拼音) :\n",M);
for(i=0; i < n; i++)
{
scanf("%s",str);
city[i] = (char *)malloc(sizeof(char)*(strlen(str)));
strcpy(city[i],str);
}
}
void sort(char *city[],int n){
char *tmp;
int i,j;
for(i=0;i<n;i++)
{
for(j=1;j<n-i;j++)
{
if(strcmp(city[j],city[j-1])<0)
{
tmp=city[j-1];
city[j-1]=city [j];
city[j]=tmp;
}
}
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-13
#include<iostream>
using namespace std;
#include<string>
void a(char (*p)[100],int n)
{char temp[100];
int i;
for(i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
if(strcmp(p[i],p[j])>0)
{strcpy(temp,p[i]);strcpy(p[i],p[j]);strcpy(p[j],temp);}
}
int main()
{
char city[20][100];
int i;
cout<<"input10~20 city name:";
int n;
cin >> n;
for(i=0;i<n;i++)
cin>>city[i];
a(city,n);
for(i=0;i<n;i++)
cout<<city[i]<<endl;
return 0;
}
第2个回答  2011-05-12
#include <iostream>
using namespace std;
int main()
{
int i,j,n;cout<<"有几座城市";
cin>>n;
char name[20][50];
for(i=0;i<n;i++)
{cout<<"input the name of"<<i+1<<" city:";
cin>>name[i];}
char *p[20]
}不会对你有帮助的本回答被提问者和网友采纳
第3个回答  2011-05-12
#include "stdio.h"

#include "stdlib.h"

typedef struct Sqlist

{

char *V;

int len;

}SQLIST;

SQLIST myList;

int n;

int init()

{

请自己填写

}

void build()

{

请自己填写

}

void display()

{

int i;

for(i=0;i<myList.len;i++)

printf("%c",myList.V[i]);

}

void main()

{

n=26;

if(!init())exit(0);

build();

display();

}
第4个回答  2011-05-26
北京科技大学的么?

相关了解……

你可能感兴趣的内容

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