zoukankan      html  css  js  c++  java
  • 【C-循环结构】

    C语言提供了多种循环语句,可以组成各种不同形式的循环结构:

    • 用goto语句和if语句构成循环;
    • 用while语句;
    • 用do-while语句;
    • 用for语句;

    一、goto语句

    goto语句是一种无条件转移语句,与BASIC中的goto语句相似。goto 语句的使用格式为:
         goto  语句标号;

    其中标号是一个有效的标识符,这个标识符加上一个“:”一起出现在函数内某处,执行goto语句后,程序将跳转到该标号处并执行其后的语句。

    goto语句通常不用,主要因为它将使程序层次不清,且不易读,但在多层嵌套退出时,用goto语句则比较合理。

    二、while

    while语句的一般形式为:
        while(表达式) 语句
    其中表达式是循环条件,语句为循环体。
    while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。

    练习:统计从键盘输入一行字符的个数。

    1. #include <stdio.h>
    2. int main(void){
    3. int n=0;
    4. printf("input a string: ");
    5. while(getchar()!=' ') n++;
    6. printf("%d",n);
    7. return 0;
    8. }

    三、do...while

    do-while语句的一般形式为:
        do
            语句
        while(表达式);
    这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句。

    四、for

    在C语言中,for语句使用最为灵活,它完全可以取代 while 语句。它的一般形式为:
        for(表达式1; 表达式2; 表达式3)  语句
    它的执行过程如下:

    1. 先求解表达式1。
    2. 求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第3)步;若其值为假(0),则结束循环,转到第5)步。
    3. 求解表达式3。
    4. 转回上面第2)步继续执行。
    5. 循环结束,执行for语句下面的一个语句。

    注意:
    1) for循环中的“表达式1(循环变量赋初值)”、“表达式2(循环条件)”和“表达式3(循环变量增量)”都是选择项,即可以缺省,但分号(;)不能缺省。

    2) 省略了“表达式1(循环变量赋初值)”,表示不对循环控制变量赋初值。

    3) 省略了“表达式2(循环条件)”,则不做其它处理时便成为死循环。

    4) 省略了“表达式3(循环变量增量)”,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。

    5) 省略了“表达式1(循环变量赋初值)”和“表达式3(循环变量增量)”。

    6) 3个表达式都可以省略。例如:
        for( ; ; )  语句
    相当于:
        while(1)  语句

    7) 表达式1可以是设置循环变量的初值的赋值表达式,也可以是其他表达式。

    8) 表达式1和表达式3可以是一个简单表达式也可以是逗号表达式。

    9) 表达式2一般是关系表达式或逻辑表达式,但也可是数值表达式或字符表达式,只要其值非零,就执行循环体。

     

    五、break 跳出循环

    break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;

    当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起,即满足条件时便跳出循环。

    六、continue  结束本次循环

    ontinue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。continue语句只用在for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环。

     

    练习:求100至200间的全部素数。

    1. #include <stdio.h>
    2. #include <math.h>
    3. int main(void){
    4. int m,i,k,n=0;
    5. for(m=101;m<=200;m=m+2){
    6. k=sqrt(m); // m 的开方
    7. for(i=2;i<=k;i++)
    8. if(m%i==0) break;
    9. if(i>=k+1){
    10. printf("%d ",m);
    11. n=n+1;
    12. }
    13. }
    14. printf(" ");
    15. return 0;
    16. }

    练习2:用下面的公式求π:

    分析:首先,系数为正数的项的分母是4n-3(n为正数项的项数),为负数的项的分母为4n-1(n为负数项的项数),即分母的变化规律是1、3、5、7...的奇数数列,则第n项的分母为2n-1,第10000项的分母为2*10000-1。

    1. #include <stdio.h>
    2. #include <math.h>
    3. int main(void)
    4. {
    5.     double p=0,j=1;
    6.     int i;
    7.     for( i=1;i<10000;i++ //此处i为项数
    8.     {
    9.         j=pow(-1.0,i+1)/(2*i-1);  //pow(x,y)求x的y次幂
    10.         p+=j;
    11.         printf("%lf ",4*p);  //输出每一项的值
    12.     }
    13.     printf("%lf ",4*p);  //输出最终pi值
    14.     return 0;
    15. }

     

  • 相关阅读:
    haproxy报错解决
    haproxy安装
    gitlab配置webhook报错解决
    git_push报错
    DNS配置
    centos7 选定默认启动内核,及删除无用内核
    ansible安装、配置ssh、hosts、测试连接
    公司手机打卡app时间和百度时间差30秒解决
    所有编辑语言的共性内容元素
    php使用正则函数使用详解
  • 原文地址:https://www.cnblogs.com/zhuimengfire/p/4417175.html
Copyright © 2011-2022 走看看