三、C语言中的分支与循环—while循环 (5)

本章分支结构的学习内容如下:

三、C语言中的分支与循环---if语句 (1)

三、C语言中的分支与循环---关系操作符 (2)

三、C语言中的分支与循环---条件操作符 与逻辑操作符(3)

三、C语言中的分支与循环---switch语句(4)分支结构 完


本章循环结构的学习内容如下:

三、C语言中的分支与循环---while循环 (5)

三、C语言中的分支与循环---for循环 (6)

三、C语言中的分支与循环---do-while循环 (7)

三、C语言中的分支与循环---break和continue语句(8)循环结构 完


现在我们开始循环结构的学习:

1.while循环基本语法

在C语言中,`while` 循环是一种基本的循环结构,用于重复执行一段代码,直到给定的条件变为假(即非零)。其基本语法如下:

cs 复制代码
while (condition) {
    // 循环体
}

这里的 `condition` 是一个布尔表达式。如果 `condition` 的结果为真(非零),则执行循环体内的代码。执行完循环体后,程序再次检查 `condition`,如此反复,直到 `condition` 为假(零)。

注意循环体内超过一条语句需要打花括号{}

2. while与if的比较

  • 相似之处:while 和 if 都是基于条件判断的。它们都检查一个布尔表达式,以决定是否执行某些代码。

  • 不同之处:if语句只会根据条件执行一次代码块。而 while 循环会不断重复执行代码块,直到条件不再满足。

while循环的执行流程

  1. 条件检查 :首先评估 condition
  2. 循环体执行 :如果 condition 为真,执行循环体内的代码。
  3. 重复检查 :执行完循环体后,再次检查 condition
  4. 循环结束 :如果 condition 为假,退出循环。

3.代码示例

1)打印从1到10的数字

先观察这个循环的逻辑,我们找到什么时候结束这个循环,也就是当这个整数大于10 时该循环不再执行,所以我们将条件写为while(i<=10){},让 i 初始化为1 ,每次打印一个值后让i+1。

cs 复制代码
#include <stdio.h>

int main() {
    int i = 1;
    while (i <= 10) {
        printf("%d\n", i);
        i++;//++后置,先使用,后自增
//还可以写成++i或者i = i+1或者i+=1
    }
    return 0;
}

2)简单计数器:使用while循环创建一个从1数到指定数字(如100)的计数器

这个是之前打印1-10的原理一模一样,可以添加进某些代码里,这个变量i 可以起到一个计数的作用

cs 复制代码
#include <stdio.h>

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

3)100以内偶数打印

cs 复制代码
#include <stdio.h>

int main() {
    int i = 1;
    while (i <= 100) {
        if (i % 2 == 0) {
            printf("%d\n", i);
        }
        i++;
    }
    return 0;
}

4)计算从1到100的所有数字的总和

cs 复制代码
#include <stdio.h>

int main() {
    int i = 1;
    int sum = 0;
    while (i <= 100) {
        sum += i;//将每个i累计起来
        i++;
    }
    printf("%d\n", sum);
    return 0;
}

4.题目练习

输⼊⼀个正的整数,逆序打印这个整数的每⼀位
例如:
输⼊:1234,输出:4 3 2 1
输⼊:521,输出:1 2 5

题目分析

  1. 要想得到n的最低位,可以使用n%10的运算,得到的余数就是最低位,如:1234%10得到4
  2. 要想去掉n的最低位,找出倒数第⼆位,则使用 n=n/10 操作就可以去掉最低位的,如:
    n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第⼆位3。
  3. 循环1和2两个步骤,在n变成0之前,就能到所有的位。
cs 复制代码
//输⼊⼀个正的整数,逆序打印这个整数的每⼀位
#include <stdio.h>
int main()
{
	int i = 0;
	int a = 0;
	scanf("%d", &i);
	while (i > 0) {
		a = i % 10;
		printf("%d ", a);
		i=i/10;
	}
	return 0;
}

这种比较简洁,可以自己思考怎样理顺逻辑,写出代码

cs 复制代码
#include <stdio.h>
int main()
{
 int n = 0;
 scanf("%d", &n);
 while(n)
 {
 printf("%d ", n%10);
 n /= 10;
 }
 return 0;
}
相关推荐
西猫雷婶3 分钟前
python学opencv|读取图像(二十二)使用cv2.polylines()绘制多边形
开发语言·python·opencv
温轻舟6 分钟前
前端开发 -- 自定义鼠标指针样式
开发语言·前端·javascript·css·html·温轻舟
xiaocaibao77722 分钟前
编程语言的软件工程
开发语言·后端·golang
Ocean☾29 分钟前
C语言-基因序列转换独热码(one-hot code)
c语言·开发语言
2401_8582861129 分钟前
117.【C语言】数据结构之排序(选择排序)
c语言·开发语言·数据结构·笔记·算法·排序算法
捕鲸叉30 分钟前
C++软件设计模式之类型模式和对象型模式
开发语言·c++·设计模式
魔道不误砍柴功32 分钟前
Java 中反射的高级用法:窥探 Java 世界的魔法之门
java·开发语言·python
2401_8576176243 分钟前
“无缝购物体验”:跨平台网上购物商城的设计与实现
java·开发语言·前端·安全·架构·php
觅远44 分钟前
python+reportlab创建PDF文件
开发语言·python·pdf
我曾经是个程序员1 小时前
C#File文件基础操作大全
开发语言·c#