循环结构
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不要随意使用,容易导致结构混乱。(只在从最内层跳到最外层的时候使用)
第十行的scanf只会输入第一个出现的数,需要while里的scanf输入下一个输入的数。