关于for循环的代码
我在一本书上面看到了下面这段代码,关于for循环的,我有一些不懂的地方请教大家,代码如下:
#include <iostream>
#include <string>
int main()
{
using namespace std;
string word= "?ate ";
for(char ch= 'a ';word!= "mate ";ch++)
{
cout < <word < <endl;
word[0]=ch;
}
cout < < "After loop ends,word is " < <word < <endl;
return 0;
}
代码中为什么要有一句word[0]=ch这句代码了?for循环中不就告诉了程序一开始就从‘a’开始循环到‘m’结束吗?
另外,头文件为什么不是#include <cstring> 而是#include <string> 了?
请大家教教我,谢谢。
[解决办法]
word[0]=ch;用于将最终匹配的m这个字母赋给word[0]
如果没有这一句循环将无法结束
因为结束条件是word == mate
ch 从字母a开始,逐渐递增b,c,d
当为m时word 为mate 匹配结束
[解决办法]
简单点说就是循环字母表知道找到m这个字母
因为word原先为 "?ate "
就是要匹配第一个字母
[解决办法]
答楼主:
word!= "mate ";是for循环的终止条件,word[0]=ch;把word字串的首字节换成ch字符变量所指示的字符。整个意思串起来就是显示word字串直到word等于mate为止(每次用ch递增替换word字串的首字符)。
[解决办法]
for循环中不就告诉了程序一开始就从‘a’开始循环到‘m’结束吗?
好像没有说吧
结束条件是word== "mate "
通过改变c的字符值来改变word以使word满足等于mate从而退出循环的条件
因此最后一句是必需的.
[解决办法]
代码中为什么要有一句word[0]=ch这句代码了?for循环中不就告诉了程序一开始就从‘a’开始循环到‘m’结束吗?
---------
你可以想下,没有word[0]=ch这句,word的值在循环内一直没被修改,循环会停止么
你用的是C++的string,所以是#include <string>
#include <cstring> 是C里使用字符串函数需要的头文件
[解决办法]
如没用 word[0]=ch;...
word就一直等于 "?ate "
导致死循环.