听翁恺讲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输入下一个输入的数。

原文地址:https://www.cnblogs.com/wpoem/p/12447972.html