还是一个关于类的问题!

weixin_45178578 2019-06-24 01:48:45
最近看到书上有这么一段让我觉得有误的代码,不知道是不是我自己想多了?求解答
class...
{

}
//所有成员数据和成员函数都声明和定义。
......
然后有这么一段代码(是求输入的N个字符串中,哪个字符串最短)
int shortest=0;
for(int i=0;i<5;i++) //比如说输入5个字符串
{
if(saying[i].length() < saying[shortest].length()) //length()函数返回字符串长度,saying[..]为类的对象
shortest=i;
}
书中就写了这么一些,但是我就觉得 shortest 值不一定就是最短字符串所在的数组元素的下标。
因为 saying[shortest].length() 一直在那不变,应该添加一句saying[shortest].length()=saying[i].length()

假如下面是类对象中的字符串长度:
saying[1] =5 < saying[0]=6
saying[2] =7
saying[3] =3
saying[4] =4 这里的会是 i=4 ,而实际最短的那个应该是 i=3

应该写成这样:
int shortest=0;
for(int i=0;i<5;i++)
{
if(saying[i].length() < saying[shortest].length())
saying[shortest].length()=saying[i].length() <---------添加这一句
shortest=i;
}
这样才能真正的求的,输入中最短的那个字符串
...全文
70 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
轻箬笠 2019-06-24
  • 打赏
  • 举报
回复
错误原因楼上都已经说了。一般这种简单的问题,写个demo跑一下更能加深记忆
Italink 2019-06-24
  • 打赏
  • 举报
回复
更新了shortest,saying[shortest].length()中的shortest不就变了吗?
那length就是最短字符串的长度
况且你这一句,不报错就是个奇迹
saying[shortest].length()=saying[i].length()
错误尽量多问编译器,纸上谈兵总容易出问题
android2008 2019-06-24
  • 打赏
  • 举报
回复
你想多了,书上是对的

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧