有时用二维数组不太方便的时候,或者数据较大时,可能会超时,解决的办法就是用指针数组,但在百度,谷歌.......等,对指针数组的输入都没有详细的介绍,今天我就给大家介绍,指针数组的输入和输出,以及注意事项。
下面我们以一道国名排序来给大家介绍。
题目:输入一个整数n,n为国家个数,接下来输入n个国家,国家是字符串。要求按字母顺序输出。
实现代码:
//国家排名
#include<stdio.h>
#include<string.h>
int main()
{
char a[210][22]; //因为指针数组本质上是指针,所以用二维数组来存储指针,也就是让指针指向这个二维数组,不要让它成为野指针
char *b[200],*c; //定义一个指针数组和指针,指针c用于后面的比较大小时交换的中间变量;
int n,i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
b[i]=a[i]; //指针数组是很多个指针,在这儿有200个,循环让每个指针指向二维数组的首地址,
getchar(); //getchar 是吃掉输入n之后又输入的回车。
for(i=0;i<n;i++)
gets(b[i]); //b[i]在这是地址,循环写入国家名。
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(strcmp(b[i],b[j])>0)
{
c=b[i]; //进行比较
b[i]=b[j];
b[j]=c;
}
}
}
for(i=0;i<n;i++)
printf("%s\n",b[i]); //按顺序打印
return 0;
}
/*
4
Japan
Korea
France //这是我自己用的一组测试数据
China
*/