和编译结果不一样的代码,请帮忙看下.

来源:百度知道 编辑:UC知道 时间:2024/05/16 05:43:47
#include<iostream>
using namespace std;
int main()
{int n=5;
char *name[]={"China","Computer","Classer","Wolker","Beautiful"};
void max(char *noon[],int n);
void output(char *neen[],int n);

max(name,n);
output(name,n);
return 0;
}
void max(char *noon[],int n)
{int i,j;
char *temp;
for(i=0;i<n-1;i++) //为什么不是按字符串长度从小到大排列?是语句写错了吗?
{for(j=i+1;j<n;j++)
if(strcmp(noon[i],noon[j])>0)
{
temp=noon[i];noon[i]=noon[j];noon[j]=temp;
}

}
}
void output(char *neen[],int n)
{int i;
for(i=0;i<n;i++)
cout<<neen[i]<<endl;
}

输出的不是按字符串长度排列.为什么?代码有错吗?请帮忙更正下,谢谢
strcmp不是比较两个字符串长度的函数吗?那怎么样才能比较两个数的长度呢?

这个不是比较字符串长短的代码,而是比较字符串大小的代码。所以代码没有错。
字符串的大小是按照在字典里出现的顺序来决定的。
在后面出现的就大。比如说:
"b">"abcdefg"
并不说长的字符串就大。
----------------------------------------------------
strcmp不是比较两个字符串长度的函数,是比较两个字符串大小的函数。要想比较两个字符串长度,可以先用strlen函数求出字符串的长度再进行比较。