在主函数中输入10个不等长的字符串。用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串。

#include<iostream>
using namespace std;
int main()
{
void sort(char *s[]);
int i;
char *p[10],str[10][30];
for(i=0;i<10;i++)
p[i]=str[i];
cout<<"input 10 string:"<<endl;
for(i=0;i<10;i++)
cin>>p[i];
sort(p);
cout<<"now the sequence is:"<<endl;
for(i=0;i<10;i++)
cout<<p[i]<<endl;
return 0;
}
void sort(char *s[])
{
int i,j;
char *temp;//这里定义一个指针temp
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(strcmp(*(s+j),*(s+j+1))>0)
{temp=*(s+j);//但是在这里为什么temp变成地址,为什么*(s+j)还是指针,不是地址对地址的吗,符号的运用真是搞不懂。大家可以解释一下吗。
*(s+j)=*(s+j+1);
*(s+j+1)=temp;
}
}

指针是根据地址记录值的
temp=*(s+j);
*(s+j)=*(s+j+1);
*(s+j+1)=temp;
这三句话就是
*(s+j) 和 *(s+j+1)两个地址所记录的值互换了一下
温馨提示:答案为网友推荐,仅供参考
相似回答