zoukankan      html  css  js  c++  java
  • 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直接就可以实现。

  • 相关阅读:
    【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 15—Anomaly Detection异常检测
    【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 14—Dimensionality Reduction 降维
    【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 13—Clustering 聚类
    【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 12—Support Vector Machines 支持向量机
    【原】机器学习公开课 目录(课程笔记、测验习题答案、编程作业源码)...持续更新...
    【原】Coursera—Andrew Ng机器学习—Week 11 习题—Photo OCR
    【原】Coursera—Andrew Ng机器学习—Week 10 习题—大规模机器学习
    【原】Coursera—Andrew Ng机器学习—Week 9 习题—异常检测
    【原】Coursera—Andrew Ng机器学习—Week 8 习题—聚类 和 降维
    【原】Coursera—Andrew Ng机器学习—Week 7 习题—支持向量机SVM
  • 原文地址:https://www.cnblogs.com/SunnyYue/p/3970280.html
Copyright © 2011-2022 走看看