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

1循环语句

1.1循环语句主要包括三种:whiledo-whilefor

2while语句处理循环

2.1while语句基本形式:

While(表达式)

{循环体语句}

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

例子代码:

#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);
}

注:使用sumi时一定要赋初始值。

2.3while语句使用注意:

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

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

代码:

#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);
}

思考问题:求阶乘。

3do while语句处理循环

3.1do while语句基本形式:

do{循环体语句}

while(表达式)

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

例子代码:

#include "stdio.h"
main (){
 int  i,sum;
 i=2;
 sum=0;
 do                                     /*先执行循环*/
  {
   sum+=i;
   i+=2;
  }while(i<=100);                          /*判断条件*/
 printf ("sum=%d\n", sum );
}

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

4for语句处理循环

4.1基本语法形式:

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

循环体;

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

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

例子代码:

#include  "stdio.h"
main( )
{
int i,sum;
sum=0;
for( i=1; i<=100; i++)
  sum+=i;
printf("sum=%d",sum);
}

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

判断素数例子代码:

#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);
}


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内能被357整除的数。

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

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

例子代码:

#include <stdio.h>
main() { 
  int i,s=0;
  i=1;
  loop:if(i<=100){     /*标号,表示出goto语句转向的位置*/
      s+=i;
      i++;
      goto loop;
  }          
  printf("1+2+3+…100=%d\n",s);
}

在结构化程序设计中不提倡使用goto语句,但有时使用goto却比较方便,比如在一个多层的循环体中,要跳出到最外层的循环就要使用多个break,但使用goto直接就可以实现。

你可能感兴趣的:(c,语言,图形,math.h)