C语言中的while循环语句

article/2025/9/11 15:09:40

日常生活中除了选择之外,还有很多循环做的事情,比如说三点一线的生活,日复一日的工作,每天都在重复着一样的事情,这就是循环,那么C语言中的循环语句是什么样的呢,开始今天的分享。

while循环

基本语法格式

while(表达式)
{语句;
}

还是使用一个代码来解释while循环的执行过程:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int i = 1;while (i<=10){printf("%d\n", i);i++;}return 0;
}

通过代码可以看到,表达式i<=10在i==1的情况下判断为真,所以循环体中的语句执行,最后打印出1-10,那么我们可以知道,当表达式为真时,while循环才会执行,当表达式为假,循环则不会执行。那么如果表达式是一个非0的数,循环会不会一直执行呢?

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{while (1){printf("a");}return 0;
}

通过运行结果可以看到,当表达式为1时,while循环会一直执行循环体,也就变成了一个死循环。

while循环中的break;

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int i = 1;while (i<=10){printf("%d\n", i);if (i==5){break;}i++;}return 0;
}

通过前面的代码我们知道这个代码是用于打印1-10,那么如果在i==5的时候加入break,会发生什么呢?

 可以看到当加入了break之后,当执行到i==5时,后面的循环并没有执行,那么可以理解为break语句的意思是终止循环。

while循环中的continue语句

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int i = 1;while (i<=10){if (i == 5){continue;}printf("%d\n", i);i++;}return 0;
}

 上面我们知道了break的作用,那么continue和break有什么区别呢,通过运行结果可以看到,当输出到4时,代码进入了一个死循环,而不是像break一样终止,这是为什么呢?我来解释一下,continue的意思为继续,当代码执行到continue时,会跳过本次循环而继续下一次,从代码中看到,当i==5时,循环跳过,那么i++不会执行,i的值就不会改变,那么i==5回到表达式判断5<10,进入循环,那么这个时候i==5就又会触发continue,然后i++又不能执行,就造成i的值一直为5,一直跳过,就成了一个死循环。

那么while循环的基本信息我们知道了,我们来实现一下下面两个问题。

第一:用户输入一个数字,求该数字所拥有的位数之和。

那么从题目中可以知道,一个数可能会有很多位数,所以只计算一次是不行的,就需要循环计算,并且,求位数之和就需要将数字每个位数分开进行相加,知道了这些,那我们来具体实现一下。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int numb;//定义一个int类型的整数int sum = 0;//定义一个int类型的变量用于接受位数之和printf("Please input\n");//让用户输入scanf("%d", &numb);//接受用户输入的整数while (numb!=0) {sum += numb % 10;//将整数的位数分离并加在sum中numb /= 10;//将已经计算过的位数去除}printf("该数的位数之和为%d\n", sum);//输出sum的值return 0;
}

写这种代码之前呢我们需要举例进去算一下,那么我就以123为例子,当输入的numb为123时,要计算1+2+3,要将每一位数分离,那么先将个位数分离,那么123/10的余数便是个位数3,这时我们就得到了个位数3,将3加进sum里面,那么3已经加完了,就要将3去掉,那么123/10的商为12便将3去掉,重复执行这个结果,当最后只剩1时,1/10为0,所以循环结束,那么如果位数不止为3位呢,即使这个数为n位,将最高位/10也一定为0,那么当计算到最高位时,相加已经完成,所以最高位/10为0便是循环条件,如果分离出来的数值/10不为0,说明至少有两位以上的数值没有分开,所以循环条件为numb==0。

 第二个,这个代码非常的好玩并且有意思,要输出下面的图片

 那么这个代码要怎么写呢,我们可以看到,最开始输出*号,然后每一次输出用一个字符代替*号,最后输出一个I  Love  You。那么我们可以将*好和字符串各自定义为一个字符类型的数组,每一次输出时将数组1的最左值用数组2的最左值替换,同样最右边也是一样。那么数组中的值通过下标调用,下标从0开始,每替换一次下标要加1,知道了这些,我们就可以实现代码。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{char arr1[] = "I  Love  You";char arr2[] = "************";int left = 0;//int right = sizeof(arr1) / sizeof(arr1[0]) - 2;//[a,b,c,\0]int right = strlen(arr2)-1;//右下标printf("%s\n", arr2);printf("\n");while (left<right){arr2[left] = arr1[left];arr2[right] = arr1[right];left++;right--;printf("%s\n", arr2);printf("\n");}return 0;
}

那么每次替换数值时,左标都会加1,右标都会减1,总会有一次两者相等,那便是最后一个字符替换,所以循环条件为left<right。

以上就是今天的所有内容,那么屏幕前的你们对while循环是否也有一定的理解了呢。


http://chatgpt.dhexx.cn/article/tBHIXNib.shtml

相关文章

用例描述总结

参考文章&#xff1a; 1、https://blog.csdn.net/shanxing2/article/details/5774245 2、https://blog.csdn.net/ZZh1301051836/article/details/71514575 3、用例规约&#xff1a;https://blog.csdn.net/happyunbound/article/details/8119691 一、思路 根据自己的系统&#…

01_描述功能_用例图(Use Case Diagram)

目录 1. 简介 2. 作用 3. 元素 4. 关系 4.1. 关联 4.2. 泛化 4.3. 依赖 1. 简介 用例图是由角色和用例组成动态视图。 2. 作用 用例图是系统的蓝图&#xff0c;传达系统的设计意图。描述系统的功能&#xff0c;简明扼要地表达系统做什么。描述角色与角色、角色与用例、…

用例分析

自从1992年 Ivar Jacobson 发表了关于如何使用用例&#xff0c;从系统用户的角度来提取软件需求的方法的论文之后&#xff0c;这种方法已经逐渐流行起来。但是有一个最常见的问题是&#xff1a;当我得到了用例之后&#xff0c;如何才能把他们用代码实现出来&#xff1f;本文由两…

课程注册管理系统(用例图及用例描述)

案例名称:课程注册管理系统 案例系统描述&#xff1a; 为某学校的教务管理部门开发一个课程注册管理系统。 该校实施学分制&#xff0c;每学期开学前&#xff0c;教务管理人员利用该系统输入本学期开设的全部课程及相关信息&#xff0c;提供课程总表(所有课程的任课教师、每…

描述测试用例及例子

一&#xff0e;概念 1.什么是测试用例&#xff1f; 在测试过程中很重要的一类文档&#xff0c;它是测试工作的核心、是一组在测试时输入输出的标准、是软件需求的具体对照。 2.测试用例的作用&#xff1a; 检验软件是否满足客户需求、体现一个测试人员的工作量、展现测试用例的…

测试用例详解用例模板

目录 一、测试用例概述1.1 什么是用例&#xff1f;1.2 什么是测试用例&#xff1f;1.3 测试用例设计和编写的作用1.4 测试用例编写注意事项 二、测试用例模板2.1 Excel格式2.2 XMind格式2.3 字段说明 一、测试用例概述 1.1 什么是用例&#xff1f; 用例&#xff1a;用户使用的…

可复用测试用例描述要素

测试用例的输入、操作、预期结果和评估标准、前提条件是测试用例不可少的要素&#xff0c;但对于可复用测试用例而言&#xff0c;这是不够的。本文在文献规定的测试用例要素基础上&#xff0c;增加了新的内容。从而从多个角度完整地对可复用测试用例进行了描述&#xff0c;为可…

用例图说明

用例的概念 用例是一系列描述用户使用系统实某种目的时成功或失败的场景的集合&#xff0c;它使用文字表示&#xff0c;而不是图表用例和场景的关系&#xff1f;什么是主场景或 happy path&#xff1f; 一个场景是一系列用户和系统间动作和会话的合集&#xff0c;是用例的一个实…

用例图详解

对于用例图来说我们需要了解的是什么叫用例图,构成用例图的要素,用例图有哪些重要的元素,各个用例之间的关系。当然最重要的是如何根据需求创建用例图。具体的创建通过一个简单的学生管理的例子说明创建的过程和例子。   我的所有例子都是是使用Rose这个软件来画的,现在…

uml用例如何描述

來源&#xff1a;http://space.itpub.net/118838/viewspace-483405 一、难点&#xff1a; 写 好用例就必须理解以下三个概念&#xff1a; --范围 scope&#xff1a;真正被讨论的系统是什么&#xff1f; --主执行者 primary actor&#xff1a; 谁有要实现的目标&#xff1f;…

怎样做需求分析:用例说明

当我们进行业务流程分析时&#xff0c;只空对空而不落到纸面上是不可以的。过去&#xff0c;在面向过程的时代&#xff0c;我们绘制DFD图、流程图&#xff0c;以及编写流程说明来描绘这一部分分析&#xff1b;而现在&#xff0c;在面向对象的时代&#xff0c;我们则是绘制行动图…

需求分析之——用例图

用例图(Use Case Diagram)是由软件需求分析到最终实现的第一步&#xff0c;它描述人们如何使用一个系统。用例视图显示谁是相关的用户、用户希望系统提供什么样的服务&#xff0c;以及用户需要为系统提供的服务&#xff0c;以便使系统的用户更容易理解这些元素的用途&#xff0…

用例图解释说明文档

用例图(Use Case Diagram)是由软件需求分析到最终实现的第一步&#xff0c;它描述人们如何使用一个系统。用例视图显示谁是相关的用户、用户希望系统提供什么样的服务&#xff0c;以及用户需要为系统提供的服务&#xff0c;以便使系统的用户更容易理解这些元素的用途&#xff0…

用例图介绍

用例图 用例图(Use Case Diagram)是由软件需求分析到最终实现的第一步&#xff0c;它描述人们如何使用一个系统。用例视图显示谁是相关的用户、用户希望系统提供什么样的服务&#xff0c;以及用户需要为系统提供的服务&#xff0c;以便使系统的用户更容易理解这些元素的用途&am…

软件实训-用例图2.0 + 简单用例描述

顶层用例图&#xff1a; 小提示&#xff1a; 用例A include 用例B&#xff1a;用例A的实现需要用例B的参与。 用例A extend 用例B&#xff1a; 用例A可以独立实现&#xff0c;但存在触发条件执行用例B。 用例A generalization 用例B&#xff1a;用例A是用例B的抽象化&#xff…

用例图、用例描述

一&#xff0e;UML简介 UML&#xff08;统一建模语言&#xff0c;Unified Modeling Language&#xff09;是一种定义良好、易于表达、功能强大且普遍适用的可视化建模语言。它融入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支 持面向对象的分析与设计&#xf…

用例图及用例描述

一&#xff0e;UML简介 UML&#xff08;统一建模语言&#xff0c;Unified Modeling Language&#xff09;是一种定义良好、易于表达、功能强大且普遍适用的可视化建模语言。它融入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支 持面向对象的分析与设计&#xff…

用例图——如何描述用例

一 用例图 1 用例间的关系 包含、扩展、泛化。 三者都属于依赖关系。 2 箭头方向 (1) 包含关系&#xff0c;基用例依赖它所包含的用例&#xff0c;箭头指向包含用例。 (2) 扩展关系&#xff1a;扩展用例依赖基用例&#xff0c;它由基用例触发出来的&#xff0c;箭头指向基用…

用例描述

用例图只是简单地用图描述了一下系统&#xff0c;但对于每个用例&#xff0c;我们还需要有详细的说明&#xff0c;这样就可以让别人对这个系统有一个更加详细的了解&#xff0c;这时我们就需要写用例描述。对于用例描述的内容&#xff0c;一般没有硬性规定的格式&#xff0c;但…

用例图与用例描述

用例图 用例图包含三部分&#xff1a;用例use case 、参与者actor和关系relationship 用例图是被称为参与者的外部用户所能观察到的系统功能的模型图 用例图列出系统中的用例和系统外的参与者&#xff0c;并显示哪个参与者参与了哪个用例的执行 用例图多用于静态建模阶段(主…