TypechoJoeTheme

日志随记

统计
登录
用户名
密码

扫码登录
/
注册
用户名

此用户名将作为登录时所用的账号

邮箱

XG.孤梦

随风而动,随遇而安......

C语言循环结构-学习九

XG.孤梦博 主大佬
2022-01-30
/
0 评论
/
774 阅读
/
872 个字
/
百度已收录
01/30
本文最后更新于 2022年08月13日,已超过 614天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

循环结构

  • 特点:在给定条件成立时,反复执行某程序段,直到条件不成立为止。

while语句

  • 一般形式:
    while(表达式){
        语句;
    }

流程图

  • 注意:

    • 在循环体中应有使循环趋向于结束的语句,否则程序会陷入死循环,无限执行语句。
    • 程序陷入死循环,结束用atrl+break
    • 循环体中如果包含一个以上的语句,要用{}括起来!

例子

在控制台输出1-30

#include <stdio.h>

void main() {
    int i = 1;

    while (i <= 30)
    {
        printf("%d,", i);
        i++;
    }
}

求sum = 1+2+3+...+100

解题思路

  • 令sum表示被加数(初始值为0)
  • 令i表示加数((初始值为1)
  • 进行100次加法后结束,或者加数大于100时结束
  • sum中存放计算结果
#include <stdio.h>

void main() {
    int sum = 0;
    int i = 1;

    while (i <= 100)
    {
        sum = sum + i;
        i++;
    }
    printf("%d\n", sum);
}


do while语句

先执行循环体,再判断, do...while 循环会确保至少执行一次循环

  • 一般形式:
    do{
        语句;
    }
    while (表达式);

例子

求sum = 1+2+3+...+100,用do...while实现

#include <stdio.h>

void main() {
    int sum = 0;
    int i = 1;

    do{
        sum = sum + i;
        i++;
    } while (i <= 100);

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


for循环

  • 一般形式
for ( 表达式1; 表达式2; 表达式3)
{
   语句;
}

流程图

  • 首先会执行 表达式1 语句,且只会执行一次。这一步允许声明并初始化任何循环控制变量。也可以不在这里写任何语句,只要有一个分号出现即可。
  • 接下来会判断 表达式2 语句如果为真,则执行循环主体。如果为假,则不执行循环主体,会执行 for 循环后面的下一条语句。
  • 执行完 for 循环主体后,控制流会跳回上面的 表达式3 语句。该语句允许更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。
  • 条件再次被判断。如果为真,则执行循环,这个过程会不断重复。在条件变为假时,for 循环终止。
  • for和while可以完成同样的循环功能,但for更为简洁和高效。

例子

求sum = 1+2+3+...+100,用for实现

#include <stdio.h>

void main() {
    int sum = 0;

    for (int i = 1; i <= 100;i++) {
        sum = sum + i;
    }
    printf("%d\n", sum);
}

  • 一个或两个或三个表达式均可以省略,但 表达式后面的“;” 不能缺省
  • 为了程序正常运行,省略表达式1(循环变量赋初值)表达式3(循环变量增量)
  • 表达式2一般是关系表达式或逻辑表达式,但也可是数值表达式或字符表达式,只要其值非零,就执行循环体。

省略了表达式1

#include <stdio.h>

void main() {
    int sum = 0;
    int i = 1;
    for (; i <= 100;i++) {
        sum = sum + i;
    }
    printf("%d\n", sum);
}

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

#include <stdio.h>

void main() {
    int sum = 0;
    for (int i = 1;;i++) {
        sum = sum + i;
    }
    printf("%d\n", sum);
}

省略了表达式3

#include <stdio.h>

void main() {
    int sum = 0;
    
    for (int i = 1;i <= 100;) {
        sum = sum + i;
                i++;
    }
    printf("%d\n", sum);
}

goto语句

一般形式:

goto 语句标号;  //语句标号由字母、数字和下划线组成,不能使用整数
...
语句标号: 语句;

流程图

例子

求sum = 1+2+3+...+100,用goto和if实现

#include <stdio.h>

void main() {
    int sum = 0;
    int i = 1;

    loop: if (i <= 100) {
        sum = sum + i;
        i++;
        goto loop;
    }
    printf("%d\n", sum);
}

四种循环结构的区别

  1. 四种循环都可以用来处理同一个问题,一般可以互相代替。一般不提倡用goto型循环。
  2. while和do-while循环,循环体中应包含使循环趋于结束的语句。for语句功能更强,凡是用while循环能完成的,用for循环都能实现
  3. while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成,而for语句可以在表达式1中实现循环变量的初始化。
  4. while循环、do-while循环和for循环,都可以用break语句跳出循环,用continue语句结束本次循环

例子

  • 思路:

    • 设置变量高度h,折叠次数n
    • 循环终止条件 h > 8848000
    • 折叠的算法 h = pow(2,n); n=n+1; (pow是计算次方的函数)

假设一张纸足够大并且可以无限折叠,这张纸的厚度是1mm,那么这张纸折叠多少次可以到达珠穆朗玛峰的高度(8848m)?

// while循环
#include <stdio.h>
#include <math.h>

void main() {
    int h = 0, n = 0;

    while (h <= 8848000)
    {
        h = pow(2, n);
        n++;
    }
    printf("%d\n", n - 1);
}

// for循环
#include <stdio.h>
#include <math.h>

void main() {
    int n, h=0;

    for (n=0;h <= 8848000;n++)
    {
        h = pow(2, n);
    }
    printf("%d\n", n - 1);
}


学习笔记C语言
朗读
赞(0)
赞赏
感谢您的支持,我会继续努力哒!
版权属于:

日志随记

本文链接:

https://www.xggm.top/archives/280.html(转载时请注明本文出处及文章链接)

评论 (0)
 
XG.孤梦博 主大佬

随风而动,随遇而安......


访问 109684 ℃
51 文章数
115 评论量

标签云

登录
X
用户名
密码