C语言二维数组,选择排序问题,求教!

有一字符数组n[][10]={“book”,”well”,“hello”,“yellow”,”cell”,“swap”,“atomic”,“thanks”,“love”,... 有一字符数组n[ ][10] ={“book”, ”well”, “hello”, “yellow”,”cell”,“swap”, “atomic”, “thanks”,“love”, “detail”},利用选择排序然后再进行从小到大排序。
void Sortstring1(char n[][10],int str)

{

for (int i = 0; i < str-1; i++)

{

for (int j = i+1; j < str; j++)

{

int r = strcmp(n[j], n[j+1]);

if (r > 0)

{

char temp[10] = {"\0"};

strcpy(temp, n[j]);

strcpy(n[j], n[j+1]);

strcpy(n[j+1], temp);

}

}

}

}

int main(int argc, char * argv[]) {
printf("\n\n选择排序");

char n[ ][10] ={"book", "well", "hello", "yellow","cell","swap", "atomic", "thanks","love", "detail"};

Sortstring1(n, 10);

for (int i = 0; i < 10; i++)

{

printf("%s ",n[i]);

}

return 0;
不知道哪里出错了,打印出来的字符串不能按照要求排序 还是乱序的。。。。求教
展开
 我来答
ling_demort
2015-07-31 · TA获得超过3224个赞
知道小有建树答主
回答量:1512
采纳率:100%
帮助的人:1322万
展开全部
你的循环写的有问题,
从第二个开始两两相比,大的往下,
然后第三个开始两两相比大的往下,
这样不会是从小到大,
应该是反过来,从后往前
for (int j = i+1; j < str; j++)

{

int r = strcmp(n[j], n[j+1]);
你第一个就跳过了连比较也不比?
追问
是哦,才发现,感谢大神,可惜前面已经点了采纳意见了,sorry,非常感谢,你这个方法更容易懂一点,更直观
kaixingui2012
推荐于2016-08-26 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6437万
展开全部
for (int i = 0; i < str-1; i++)

{

for (int j = 0; j < str-i-1; j++) //这句改成这样才对
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式