这个程序错在哪里?(c++)

来源:百度知道 编辑:UC知道 时间:2024/05/31 21:28:37
//3个字符串求最大者。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
void max_string(char str[][30],int i); //函数声明。
int i;
char country_name[3][30];
for(i=0;i<3;i++)
cin>>country_name[i];
max_string(country_name,3);
return 0;
}
void max_string(char str[][30],int n)
{
int i;
char string[30];
strcpy(string,str[0]);
for(i=0;i<n;i++)
if(strcmp(str[i],string)>0)
strcpy(string,str[i]);
cout<<endl<<"最大字符串是:"<<string<<endl;
}
怎么总是输出最短的字符串?高手帮个忙啊,谢谢了!

strcmp()函数是比较ASCII的值~~~

你用纯数字的话就是正确的。。。

但你用字母当字符串的算。。

你先输入后面的字母比前面的字母的ASCII码的值要大所以会像你所有的输出了短的

例如:
输入:abcd
bcd
ef
你的这个程序会输出ef

因为e的ASCII的值大。。
strcmp是一个一个比较的
如果第一个字符大了~~就比另一个大~~~

懂了不???

不懂给我发消息。。。

如果是要比较字符串长度,用strlen()这个函数;
原型:extern int strlen(char *s);
说明:返回s的长度,不包括结束符NULL

strcmp()比较字符串大小不是按长度算的,是按ASCII码表顺序算的,只要一一比较有不等的,则不考虑后面的串直接返回。