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直接就可以实现。

  • 相关阅读:
    C指针典例
    20150310 块设备驱动程序
    python连接redis
    利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
    将一个正整数分解质因数。例如输入90,打印出90=2*3*3*5
    python 中输入一个字符串,判断这个字符串中有多少个字符、数字、空格、特殊字符
    学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用利用条件运算符的嵌套来完成此题:C表示。
    nginx在基于域名访问的时候是下载的界面
    mysql数据库二进制初始化出现:170425 17:47:04 [ERROR] /application/mysql//bin/mysqld: unknown option '--skip-locking' 170425 17:47:04 [ERROR] Aborting 解决办法
    赛马问题
  • 原文地址:https://www.cnblogs.com/SunnyYue/p/3970280.html
Copyright © 2011-2022 走看看