好菜的大学生 2020-04-02 11:23 采纳率: 25%
浏览 2100
已采纳

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

利用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比较大

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 请教某软件缓存Ts文件破解合并mp4的方法
  • ¥15 求小游戏炸弹人中关于敌人的C++代码
  • ¥15 拿到这个服务器最高权限有偿
  • ¥50 来个抓app跳转支付宝转链接的
  • ¥15 remotes安装提示没有description文件
  • ¥15 AttributeError: 'NoneType' object has no attribute 'drop_duplicates'报错
  • ¥15 以下代码,运行结果报错
  • ¥15 Vivado仿真数据出错
  • ¥15 银河麒麟不支持vant等前端框架怎么办?
  • ¥15 vue3的子组件在父页面调用不显示不生效问题