好菜的大学生
2020-04-02 11:23
采纳率: 71.4%
浏览 1.4k

比较三个字符串的大小并输出:

利用3×20的二维字符数组存放3个字符串,找出其中最大的字符串并输出。
输入格式:

在3行分别输入3个字符串,在字符串中不要出现换行符,空格,制表符
输出格式:

在两行中按照“The largest string is:(换行)最大字符串”的顺序输出。
输入样例:

as
qwer
zxc

输出样例:

The largest string is:
zxc

难道最大的字符串不应该是qwer吗?为什么会是zxc呢

#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;
int main(){
   string str[3];
   string s;
   int i;
   for(i=0;i<3;i++)
   {
    getline(cin,str[i]);
   }

     for(i=0;i<2;i++)
   { 
     if(str[i]<str[i+1])
       s=str[i+1];
    }

   cout<<"The largest string is:" <<endl;
   cout<<s;

    return 0;
}

我用这样的代码输出的还真是zxc

#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;
int main(){
   string str[3];
   string max;
   int i,length1,length2;
   for(i=0;i<3;i++)
   {
    getline(cin,str[i]);
   }
     for(i=0;i<2;i++)
   { 
       length1=str[i].length();
       length2=str[i+1].length();
     if(length1<length2)
       max=str[i+1];
    }
   cout<<"The largest string is:" <<endl;
   cout<<max;

    return 0;
}

但是我换成length的话就变成了qwer是最大字符串了,
能帮我解答一下为什么用string比较和用length比较会出现两种不一样的结果吗

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 小学狗喵喵叫 2020-04-02 11:30
    已采纳

    string是从前往后比较每一位字符的大小,qwer和zxc就是先比较q和z,z比较大,所以zxc比较大,不用继续比较后面了,
    length是比较字符串的长度,qwer长度是4,zxc长度是3,qwer比较大

    点赞 打赏 评论

相关推荐 更多相似问题