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

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

利用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 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog