#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 關注
- 1540 瀏覽
添加回答
舉報
0/150
提交
取消