提示:
⑴利用字符串比较函数和数组排序算法实现。
⑵定义函数形参时,如果把二维数组定义为指针,调用时要用一级指针的地址。
编写程序,输入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;
}
}
}
}
#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;
}
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]
}不会对你有帮助的本回答被提问者和网友采纳
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();
}
#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
北京科技大学的么?