编程实现从键盘输入5个国名(每个国名最长80个字符),找出并输出按字典顺序排在最前面的国名 求改错c++

#include <iostream>
#include <string.h>
using namespace std;
int main()
{char string[80];
char str[5][80];
int i;
cout<<"Input five countries' names:\n"<<endl;
for(i=0;i<5;i++)
cin>>str[i];
if (strcmp(str[0],str[1])<0)
strcpy(string,str[0]);
else
strcpy(string,str[1]);
if(strcmp(str[2],string)<0)
strcpy(string,str[2]);
if(strcmp(str[3],string)<0)
strcpy(string,str[3]);
if(strcmp(str[4],string)<0)
strcpy(string,str[4]);
cout<<"The minimum is:%s\n"<<string<<endl;
return 0;
}

/*
Input five countries' names :
china
germen
iran
iraq
french
The minimum is : china
Press any key to continue
*/
#include <iostream>
#include <cstring>
using namespace std;

int main() {
char str[5][80];
int i,index = 0; // 假定索引为0排在最前面
cout<<"Input five countries' names :\n";
for(i = 0; i < 5; i++) cin >> str[i];
for(i = 1; i < 5; ++i) { // 索引为i和index两两比较
if(strcmp(str[index],str[i]) >= 0) // 如果索引index排在后面
index = i; // 就保存更考前者
}
cout << "The minimum is : " << str[index] << endl;
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-28
数组定义下标应为81个即char string[81],str[5][81];
cout<<"The minimum is:%s\n"<<string<<endl; //改成 cout<<"The minimum is:"<<string<<endl;
第2个回答  2013-03-28
这个就是简单的排序
随便一个排序方式即可,冒泡了,快速了,选择了。
只不过就是用strcmp代替>,用strcpy代替赋值而已追问

可是到了老师的平台上检测到很多错误,排序部分有问题么

追答

不排序这个题目也能做

思路
1、输入5个国名,这个简单,for循环搞定
2、把str[0]赋值给string。这个也不难,strcpy
3、比较,这个用for循环
for(i=1;i0)
strcpy(string,str[i]);
如果大于,那么拷贝str[i]到string中去
4、输出string,不用说了吧

具体代码,还用我写?
你非要排序也可,两层循环,和我说的一样,比较用strcmp,交换,用三个strcpy,和数字排序一样

第3个回答  2013-03-28
#include <string>
#include <iostream>

using namespace std;
int main()
{
std::string str[5];
std::string tmp;
cout<<"Input five countries' names:\n"<<endl;
for(i=0;i<5;i++)
cin>>str[i];

tmp=str[0];
for( int j=0; j<5; ++j)
if( tmp < str[j] )
tmp=str[j];

cout<<"The minimum is:%s\n"<<tmp<<endl;
return 0;
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网