不废话,直接上歌:《Eternal Love》——by 菅原纱由理,适合两个人去听,安安静静的听
烟花求婚,了解一下?
关于循环学习心得(for)
这就不叫小明出来了。所以呢,直接上实例说说自己的体会,算水一期吧。
最近的练习题里,有一道这么设题:“使用循环计算1-2+3-4+5-6+…-100的值?”,条件是“for”、“while”、“do-while”任选。
附源码:
①while:
#include <stdio.h>
int main()
{
int sum = 0;
int i = 1;
int flag = 1;
while(i<=100)
{
i++;
sum += i*flag;
flag = -flag;
}
printf("sum=%d\n",sum);
return 0;
}
②do-while:
#include <stdio.h>
int main()
{
int sum = 0;
int i = 1;
int flag = 1;
do
{
i++;
sum += i*flag;
flag = -flag;
}while(i<=100);
printf("sum=%d\n",sum);
return 0;
}
③for:
#include <stdio.h>
int main()
{
int sum = 0;
int i = 1;
int flag = 1;
for(i=1;i<=100;i++)
{
sum += i*flag;
flag = -flag;
}
printf("sum=%d\n",sum);
return 0;
}
对于同一道题而言,三种解决方法均能通过。显然地讲,“for”从本质上和“while”及其类似的。
但是也有些许不同:
- “for”后边“()”里的表达式是可以有省略的。而且,“ for(;条件;) ”是等价于“ while(条件) ”的。
- 对于同一目的的循环而言,“for”循环条件的不一决定着不一样的循环次数。
-
从某种程度上讲,“for”循环更像是计数器。在条件未达到时,不停地通过改变自变量的数值进行循环作业。
因此,常常会有这样的小贴士:
- 如果有固定的次数,用 for
- 如果必须执行一次,用 do-while
- 其他情况下,用 while
赞成第二条,剩下看缘分吧(●'◡'●)(●'◡'●)(●'◡'●)(●'◡'●)(●'◡'●)(●'◡'●)(●'◡'●)(●'◡'●)(●'◡'●)
以为这样就完了?!不可能,水一期也不是白水的。
最后简单谈谈对break和continue的理解
不得不说,这两个语句的出现的的确确十分有用。
break:在遇到它时跳出该循环。对于某些看似没上限的条件,却又需要在中间的某一个确定的值停下来时,“if”判断加“break”的操作确实很有用。先由“if”判断是不是到达需要的目标值,若达到,直接“break”跳出该循环,完成整个程序动作。
continue:在遇到它时跳过次循环这一轮剩下的语句进入下一轮。这就好比正常训练的球员一样,当有突发事情发生时,果断放弃训练这个循环,在处理完后进入下一轮接着进行该训练循环。
不过嘞,切记,break和continue只能对它所在的那层循环起到相应的控制作用,嵌套循环需要格外注意!
附源码实例:
#include <stdio.h>
int main()
{
int x;
int one, two, five;
scanf("%d", &x);
for ( one = 1; one < x*10; one++ ) {
for ( two = 1; two < x*10/2; two++ ) {
for ( five = 1; five < x*10/5; five++ ) {
if ( one + two*2 + five*5 == x*10 ) {
printf("可以用%d个1角加%d个2角加%d个5角得到%d元\n",
one, two, five, x);
break;
}
}
}
}
return 0;
}
#include <stdio.h>
int main()
{
int x;
int one, two, five;
int exit = 0;
scanf("%d", &x);
for ( one = 1; one < x*10; one++ ) {
for ( two = 1; two < x*10/2; two++ ) {
for ( five = 1; five < x*10/5; five++ ) {
if ( one + two*2 + five*5 == x*10 ) {
printf("可以用%d个1角加%d个2角加%d个5角得到%d元\n",
one, two, five, x);
exit = 1;
break;
}
}
if ( exit == 1 ) break;
}
if ( exit == 1 ) break;
}
return 0;
}
前一个是break仅对最里面的“for”有效,但是不能跳出全部的循环。
后一个是经过改进后,只要得到相应的值,可以跳出全部循环的改进版。
最后的最后,简谈“goto”,据说其臭名远扬?名声咋样我确实不知道,不过我的理解就是,哆啦A梦的任意门放的数量多了,自己都不知道哪个门是通往哪儿的啦