暑假C语言学习心得——05

不废话,直接上歌:《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”及其类似的。

但是也有些许不同:

  1. “for”后边“()”里的表达式是可以有省略的。而且,“ for(;条件;) ”是等价于“ while(条件) ”的。
  2. 对于同一目的的循环而言,“for”循环条件的不一决定着不一样的循环次数。
  3. 从某种程度上讲,“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梦的任意门放的数量多了,自己都不知道哪个门是通往哪儿的啦

           最后,各位的点赞、投币、收藏、分享、关注就是我更新的动力,谢谢!

猜你喜欢

转载自blog.csdn.net/Issac_X10A/article/details/81590755
今日推荐