• 听翁恺讲C语言4-循环结构


    循环结构

                                       2019/12/3 17:53:46             
    
    a、while循环:

    while的结构和if十分类似,可以通过if来类比while。区别就是if为一次性的而while则要重复的去运行。

    while后的大括号中的被称为循环体。循环体内要有改变条件的机会。否则会成为死循环。

    b、do-while循环:

    特点:进入循环的时候不做检查,而是在执行完一轮循环体后再检查循环的条件是否满足。 -do

    ​ {

    ​ <循环体语句>

    ​ } while (<循环条件> );(注意此处的;特别容易忘记)

     eg: do—while语句                
     do                
     {                  
     		x /=10;                  
     		n++;                
    } 
    while ( x>0);
    

    普通while循环语句:

     x /=10;                
     n++;                
     while ( x > 0)                
     {                  
     	x /=10;                  
     	n++;                
     printf("x=%d,n=%d
    ", x, n);                
     }
    

    c、随机数:

    每次rand()召唤就得到一个随机的整数。 注:(c语言标准库的函数)

    d、for循环

    for( 初始动作(语句); 循环继续的条件(语句);每轮要做的事情(语句) )

    {

    语句

    }(完全等价与while循环)

    ·、循环次数:for ( i=0(初始动作); i<n(条件); i++(每轮的动作)) 此时的循环次数是n次,而结束以后,i的值为n。而i为n时循环就已经结束。

    ·、for语句中的没一个表达式都是可以省略的。

    for(;条件;)==while(条件)

    e、三种循环的区别。

    while:先判断循环的条件再做循环。(其它都用while)

    do-while:先做循环再判断循环的条件。(必须执行一次就用do-while)

    for:与while等价(有固定次数用)。

    f、break与continue:

    break与continue(中止循环)都只能够对它所在的那一层循环做

    break:跳出循环 continue:跳过循环,剩下的语句进入下一轮。

    g、如何跳出嵌套循环:

    用 break / goto

    eg:

    int x;                  
    int one, two, five;              
    scanf("%d",&x);                 
    int exit = 0;               
    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元
    ",one, two, five, x);   
            		 exit = 1;                              
             	 break;                        
          	}                     
       	}                     
       		if( exit ==1 ) break;    
    	}                      
       		if( exit ==1 ) break;  
    }
    

    eg:

    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元
    ",one, two, five, x); 
                goto out;                          
             }                          
          }                        
       }                       
    }                       
    out:
    

    注:但是goto不要随意使用,容易导致结构混乱。(只在从最内层跳到最外层的时候使用)

    image-20200309120119073第十行的scanf只会输入第一个出现的数,需要while里的scanf输入下一个输入的数。

  • 相关阅读:
    Information retrieval (IR class2)
    HTML随笔
    Evaluating Automatically Generated timelines from the Web (paper1)
    Kali 2020.1版本安装
    SystemTap
    Linux之IDIDID
    调试&内核探针
    Return-to-dl-resolve
    转载!
    一张图系列之函数重定位
  • 原文地址:https://www.cnblogs.com/wpoem/p/12447972.html
Copyright © 2020-2023  润新知