//若干个字符串按字母顺序由大到小输出
//指针数组,指针数组格式:int *p[ ]
代码如下:
#include <iostream> #include <string> using namespace std; int main() { void sort(char *name[ ],int n); //函数声明 void print(char *name[ ],int n); char *name[ ]={"BASIC","FORTRAN","C++","Pascal","COBOL"};//定义指针数组 int n=5; sort(name,n); //函数调用 print(name,n); return 0; } void sort(char *name[ ],int n) //sort函数是对字符串排序(选择排序法),形参name是指针数组名,接受实参数组name的首元素地址 { char *temp; int i,j,k; for(i=0;i<n-1;i++) { k=i; //k指示关键字的最小位置记录 for(j=i+1;j<n;j++) if(strcmp(name[k],name[j])>0)k=j; if(k!=j) { temp=name[i];name[i]=name[k];name[k]=temp;//name[k]和name[j]是第k个和第j个字符串的起始地址 } } } void print(char *name[ ],int n) //name[0]和name[4]分别是各字符串(按从大到小顺序排好的字符串)的首地址 { int i; for(i=0;i<n;i++) cout<<name[i]<<endl; }
注解:在main函数中定义指针数组name。它有5个元素,其初值分别是个字符串的起始地址。
print函数也可以写成以下形式:
void print(char *name[], int n)
{
int i=0;
char *p;
p=name[0];
while(i<n)
{
p=*(name+i++);
cout<<p<<endl;
}
}
其中,“*(name+i++)”表示先求*(name+i)的值,即name[i]的地址。将它赋给p,然后i加1.最后输出以p地址开始的字符串。
版权声明:本文是我原创文章,大家可以随意转载哦!!
原文地址:http://blog.csdn.net/jrz1900/article/details/47313891