【1.题目】
11. 在主函数中输入10个等长的字符串。 用另一函数对它们排序。 然后在主函数 出这 10 个已排好序的字符串。 12. 用指针数组处理上一题目, 字符串不等长。
【2.代码】
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
main()
{
void display(char * *p);
void arrange(char * *p);
char * name[10]={"Apple","Orange","Peach","Pear","Paper","Appstore","Origin","banana","bandon","Fish"};
char * *p;
p=name;
cout<<"The Original array is: "<<endl;
display(p);
arrange(p);
cout<<"The arranged array is: "<<endl;
display(p);
return 0;
}
void display(char * *p)
{
int i;
for(i=1;i<11;i++)
cout<<i<<" "<<setw(6)<<setiosflags(ios::left)<<*p++<<endl;
}
void arrange(char * *p)
{
int i,j;
char *temp;//*p 为指针
for(i=1;i<11;i++)
for(j=i+1;j<10;j++)
{
if(strcmp(*(p+i),*(p+j))>0)
{
temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
}
【3.心得】1.*name[10]按照结合的方式是指针数组,就是数组的每一元素都是指针,就是说name[0]的类型是 指针,然后name=&name[0],所以是指针的指针; 2.格式的控制,有点遗忘,在此处加上格式控制的用法
3.strcmp的用法,结果直接写成了strcmp(*(p+j)>*(p+i)),用法有误
4.指针循环要注意结束的条件