作业帮 > 综合 > 作业

关于 C++ 的 for 循环里的语句块 {...}

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/08 01:18:50
关于 C++ 的 for 循环里的语句块 {...}
“for (...; .; ...) {...}”和“for (...; .; ...) ...;”
 
我写了个这个:

 
出了循环,n 的值并不是 0
 

“for (...; .; ...) {...}”中的“{...}”有什么特别之处?
我想得到的是一个针对我的提问的准确的回答
恩..应该是叫复合语句而不是语句块...
第二张图是我思考第一张图的根据,看来我需要表明这个,然后我想要得到的是关于以下的解答:
我这个思考根据有没有问题?
或者是“for (...; .; ...) {...}”中的“{...}”有什么特别之处?
我觉得我没必要说道这层面上来,不然有“装X”的意味
你的程序是将1元分成若干个1分、2分和5分的组合,也就是方程
x+2y+5z=100
的解的个数,然后就从大到小开始依次循环,先是5分的,再到2分的,你之所以能这样是因为有1分的存在,无论你2y+5z之后剩下多少都可以用100-(2y+5z)个1分来凑,所以你这里面的for循环只要负责一直计数就可以了.
你在第一个for循环里面定义的变量在后面的{}范围内都是可见的,for语句本身只对后面的一条语句起作用(循环体),用了{}是为了将多条语句形成一条块语句,表明for语句的范围,所以没什么特别的
再问: 你不需要分析我凑钱的思路,这是我自己设计出来的,我当然考虑了更多问题 然后我看了你的“你在第一个for循环里面定义的变量在后面的{}范围内都是可见的...所以没什么特别的”,觉得你应该看看我的整个问题
再答: 你如果是在纠结第二段程序中x的使用问题的话,那只能说你对于变量的了解还不够。。。还有第一段程序中循环结束n怎么可能还是0啊?
再问: 你已经知道了问题,那就解释一下吧,如果难解释的话,我就把“你对于变量的了解还不够”作为根据去思考了
再答: 每个变量都有作用域和生存周期,作用域决定了这个变量的可见性,比如第一段程序中的n,自从定义 int n = 0;定义了n之后,n就开始了生存周期,在此之后的代码就能看到n了,也就是为什么n不为0的原因,在main函数结束时,变量被销毁,生存周期结束。。。。 第二段代码,{}外面定义的x在整个main函数可见,而{}内的x只在定义后可见,在第一次输出的时候,{}内的x还没有定义,因此输出之前的x,第二次输出的时候由于此时{}内定义了x,此时会屏蔽外面的x,所以会输出100,{}结束之后,{}内定义的x被销毁,此时再使用x则一律是前面的x
再问: 哦,对,关键在于块里的 int x = 100,虽然看着那个代码我脑子里想的却是一个新的代码,失误 (不小心点到评论里去了,谢谢解答)