#include<iostream.h>
#include<string.h>
int sort(char *book[],int num)
{
int i,j;
char *temp;
for(j=1;j<=num-1;j++)
for(i=0;i<num-1-j;i++)
if(strcmp(book[i],book[i+1])>0)
{
temp=book[i];
book[i]=book[i+1];
book[i+1]=temp;
}
return 0;
}
int main()
{
int i,n;
char *book[10];
char a[10];
cout<<"请输入字符串数量:";
cin>>n;
cout<<"请输入字符串:"<<endl;
for(i=0;i<n;i++)
{
cin>>a;
book[i]=a;
}
sort(book,n);
for(i=0;i<n;i++)
cout<<book[i]<<endl;
return 0;
}
1 回答
已采纳
onemoo
TA贡献883条经验 获得超454个赞
book是一个存char指针的数组,a就是一个char数组。那么在main的for循环中:
cin>>a; // 将输入的字符串存入a
book[i]=a; // 把a的地址存入book[i],问题就在这里,book中的元素都是指向a的!
问题就在于:你设计的book并没有真正存入输入的字符串,其中只是保存了几个指向字符串的指针,而且还都是指向同一个字符数组的。 所以book中体现的所有字符串都是你最后输入的那个。
后面sort函数中对字符串的比较也没有意义了。
- 1 回答
- 0 关注
- 1499 浏览
添加回答
举报
0/150
提交
取消