当前位置:编程学习 > C/C++ >>

C语言学习笔记(七)--循环程序设计

 

1循环语句

 

1.1循环语句主要包括三种:while、do-while、for。

 

2while语句处理循环

 

2.1while语句基本形式:

 

While(表达式)

 

{循环体语句}

 

2.2执行流程:首先计算while表达式的值,当非零时执行循环体内的语句,执行完之后继续判断while表达式的值,如果非零,继续执行循环体,直到表达式值为零时,跳出循环,执行后续的语句。

 

例子代码:

 

 

<span style="font-size:18px;">#include "stdio.h" 

main (){ 

 int  i,sum; 

 i=1;  

 sum=0; 

 while ( i<=100 )       /* 累加的数i 小于或等于终止数n就循环累加,否则结束循环*/ 

{ sum=sum+i; 

       i++; 

     } 

  printf ("sum=%d\n",sum); 

}</span> 

注:使用sum和i时一定要赋初始值。

 

2.3while语句使用注意:

 

循环体要是多条语句必须使用符合语句形式;在循环体表达式中一定要有控制循环趋向结束的语句,否则循环将无限进行;循环体可为空;

 

2.4while实例:a+aa+aaa+....

 

代码:

 

 

<span style="font-size:18px;">#include  "stdio.h" 

main( ) 

  int a,x; 

  long  sum=0,n=1,tn ; 

  scanf("%d%d",&a,&x); 

  tn=a; 

  while(n<=x)                /*n超过x则中止*/ 

  {sum+=tn; 

  tn=tn*10+x; 

  n++; 

  }  

  printf("result is %ld",sum); 

}</span> 

思考问题:求阶乘。

 

3do while语句处理循环

 

3.1do while语句基本形式:

 

do{循环体语句}

 

while(表达式);

 

3.2执行流程:先执行do后面的循环体,然后计算while里的表达式值,当值非零时继续执行do的循环体,当值为零时,跳出循环。

 

例子代码:

 

 

<span style="font-size:18px;">#include "stdio.h" 

main (){ 

 int  i,sum; 

 i=2; 

 sum=0; 

 do                                     /*先执行循环*/ 

  { 

   sum+=i; 

   i+=2; 

  }while(i<=100);                          /*判断条件*/ 

 printf ("sum=%d\n", sum ); 

}</span> 

3.3while和do while的区别:就是while首先要判断while的表达式是否成立再执行循环体,而do while是无论while的表达式是否成立,都会先执行一次do的循环体。

 

4for语句处理循环

 

4.1基本语法形式:

 

for(表达式1;表达式2;表达式3)

 

循环体;

 

注:for是c语言关键字,括号里的3个表达式可以是任意的表达式,当循环体内有多条语句时,注意使用复合语句。

 

4.2先计算表达式1,表达式1只执行一次,一般是赋值语句,用于初始化变量;然后求解表达式2,若值为零,则退出循环,若非零,则执行循环体;接着执行表达式3,然后继续判断表达式2,再执行循环体,直到表达式2不成立。

 

例子代码:

 

 

<span style="font-size:18px;">#include  "stdio.h" 

main( ) 

int i,sum; 

sum=0;  

for( i=1; i<=100; i++) 

  sum+=i; 

printf("sum=%d",sum); 

}</span> 

4.3for语句的特点:表达式1、2、3都可以省略,但“;”分号不能省略;表达式可以是任意形式的表达式;循环体可以为空;for的括号里可以使用多个控制循环的变量。

 

判断素数例子代码:

 

 

<span style="font-size:18px;">#include "stdio.h" 

#include "math.h"     

main() 

{ int n,m,flag; 

  flag=1;                /*flag变量为旗帜变量,值为1则n为素数,否则不是素数。初值为1*/ 

  printf("\n enter n:");         /*输入n*/ 

  scanf("%d",&n); 

  for(m=2;m<n&&flag;m++)         /*判断n能否被2~n-1之间的数整除*/ 

    if(n%m==0) 

        flag=0;                      /*n不是素数*/   

  if(flag==1)                       /*若flag的值没有变化,则为素数*/ 

    printf("\n%d is a prime number.",n); 

  else 

    printf("\n %d is not a prime number.",n); 

}</span> 

 

 

 

4.4思考问题:

 

1.求阶乘。

 

2.输出斐波那契数列。

 

3.输出水仙花数。

 

4.输出如下图形:

 

*****

 

 ****

 

  ***

 

   **

 

    *

 

5流程控制语句

 

有时我们在执行循环的过程中,可能需要在中途中断循环或者跳过本次循环,这时我们就需要使用流程控制语句。

 

5.1break:在switch语句中我们常使用break用来跳出switch分支,其实break同样也可以使用在循环语句中用来跳出循环。在循环中使用break让循环语句可以有多个出口,使程序变的更加灵活。

 

break语句可以使循环在未达到结束条件时提前跳出循环。

 

例子代码:

 

for(i=0;i<10;i++){

 

printf("%d",i);

 

if(i==0) break;

 

}

 

思考问题:使用break语句修改判断素数问题。

 

5.2continue:在循环过程中使用continue可以根据条件判断是否执行本次循环,使用continue之后,后面的代码就不再执行,直接执行下次循环。但是不像break既可以用在分支也可以用在循环中,continue只能用在循环结构中。

 

例子代码:

 

for(i=0;i<10;i++){

 

if(i==0) continue; /*当i==0时不执行循环*/

 

printf("%d",i);

 

}

 

思考练习:使用continue实现求1000内能被3、5、7整除的数。

 

5.3goto:也叫无条件转向语句.

 

它的一般格式为:goto 标号;

 

例子代码:

 

 

<span style="font-size:18px;">#include &

补充:软件开发 , C语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,