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

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

利用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 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看