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

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

利用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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵