C语言学习【C控制语句:循环】

C语言学习【C控制语句:循环】

while循环

/* 根据用户键入的整数求和 */#include "stdio.h"int main(void)
{long num;long sum = 0L;            /* 把sum初始化为0 */int status;printf("Please enter an integer to be summed");printf("(q to quit):");status = scanf("%ld", &num);while (status == 1)           /* == 的意思是 “等于” */{sum = sum + num;printf("please enter next integer (q to quit):");status = scanf("%ld", &num);}printf("Those integers sum to %ld.\n", sum);}

程序运行结果

Please enter an integer to be summed(q to quit):21
please enter next integer (q to quit):22
please enter next integer (q to quit):23 
please enter next integer (q to quit):w
Those integers sum to 66.

==运算符是C的相等运算符(equality operator).

while语句

while循环的通用形式如下:

while (expression)statement

statement部分可以是以分号结尾的简单语句,也可以是用花括号括起来的复合语句。
如果expression为真(或者更一般地说,非零),执行statement部分一次,然后再判断expression。

终止循环

/* 何时退出循环 */#include "stdio.h"int main(void)
{int n = 5;while (n < 7){printf("n = %d\n", n);n++;printf("Now n = %d\n", n);}printf("The loop has finished.\n");return 0;
}

程序运行结果

n = 5
Now n = 6
n = 6
Now n = 7
The loop has finished.

使用while时,要牢记一点:只有在测试条件后面的单独语句(简单语句或复合语句)才是循环部分。

/* 注意分号地位置 */#include "stdio.h"int main(void)
{int n = 0;while (n++ < 3); printf("n is %d\n", n);printf("That's all this program does.\n");return 0;
}

程序运行结果

n is 4
That's all this program does.

在该例中,测试条件后面地单独分号是空语句(null statement)

关系运算符和表达式比较大小

关系表达式relational expression
关系运算符relational operator

/* 浮点数比较 */#include "math.h"
#include "stdio.h"int main(void)
{const double ANSWER = 3.14159;double response;printf("What is the value of pi?\n");scanf("%lf", &response);while(fabs(response - ANSWER) > 0.0001){printf("Try again!\n");scanf("%lf", &response);}printf("Close enough!\n");return 0;
}

程序运行结果

What is the value of pi?
3.14
Try again!
3.1415926
Close enough!

上述程序一直会提示用户继续输入,除非用户输入的值与正确值之间相差小于0.0001.

什么是真

/* C语言中的真和假的值 */
#include "stdio.h"int main(void)
{int true_val, false_val;true_val = (10 > 2);           /* 关系为真 */false_val = (10 == 2);         /* 关系为假 */printf("true = %d, false = %d\n", true_val, false_val);
}

程序运行结果

true = 1, false = 0

对C语言,表达式为真的值是1,表达式为假的值是0

其他真值

/* 那些值为真 */#include "stdio.h"int main(void)
{int n = 3;while (n){printf("%2d is true\n", n--);}printf("%2d is false\n", n);n = -3;while (n){printf("%2d is true\n", n++);  }printf("%2d is false\n", n);return 0;
}

程序运行结果

 3 is true2 is true1 is true0 is false
-3 is true
-2 is true
-1 is true0 is false

也可以说,只要测试条件为非零,就会执行while循环。

新的_Bool类型

在C语言中,一直用int类型的变量表示真/假值C99专门针对这种类型的变量新增了_Bool类型,在编程中,表示真或假的变量被称为布尔变量(Boolean variable),所以_Bool是C语言中布尔变量的类型名。_Bool类型的变量只能存储1(真)0(假).

/* 使用_Bool类型的变量 variable */
#include "stdio.h"int main(void)
{long num;long sum = 0;_Bool input_is_good;printf("请输入一个整数求和");printf("(q to quit): ");input_is_good = (scanf("%ld", &num) == 1);while (input_is_good){sum = sum + num;printf("Please enter next integer (q to quit): ");input_is_good = (scanf("%ld", &num) == 1);}printf("Those integers sum to %ld.\n", sum);return 0;
}

程序运行结果

请输入一个整数求和(q to quit): 22
Please enter next integer (q to quit): 23
Please enter next integer (q to quit): 24
Please enter next integer (q to quit): q
Those integers sum to 69.

优先级和关系运算符

关系运算符的优先级比算数运算符(包括+和-)低,比赋值运算符高,例如
x > y + 2相当于x > (y + 2)
x = y > 2相当于x = (y > 2).
关系运算符比赋值运算符的优先级高,例如
x_bigger = x > y相当于x_bigger = ( x > y).

关系运算符之间有两种不同的优先级:
高优先级组<<=>>=
低优先级组==!=

与其他大多数运算符一样,关系运算符的结合律也是从左往右。

下图为部分运算符优先级表

小结:while语句

小结:关系运算符和表达式

不确定循环和计数循环

一些while循环是不确定循环(indefinite loop);
还有另一类是计数循环(counting loop).

/* 一个计数循环 */#include "stdio.h"int main(void)
{const int NUMBER = 22;int count = 1;               /* 初始化 */while (count <= NUMBER){printf("Be my Valentine!\n");count++;}return 0;
}

程序运行结果

Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/14146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于微信小程序的校园捐赠系统的设计与实现

校园捐赠系统是一种便捷的平台&#xff0c;为校园内的各种慈善活动提供支持和便利。通过该系统&#xff0c;学生、教职员工和校友可以方便地进行捐赠&#xff0c;并了解到相关的项目信息和捐助情况。本文将介绍一个基于Java后端和MySQL数据库的校园捐赠系统的设计与实现。 技术…

快速开发 Chrome插件

什么是 Chrome 插件 Chrome 插件程序是一种用于增强 Google Chrome 浏览器功能的小型软件应用程序。它们可以帮助用户自定义浏览体验、添加新功能、集成外部服务以及自动化任务等。扩展程序使用 HTML、CSS 和 JavaScript 编写&#xff0c;利用 Chrome 提供的 API 来与浏览器及…

18.分布式监控zabbix-proxy

zabbix proxy 使用场景: 监控远程区域设备监控本地网络不稳定区域当 zabbix 监控上千设备时,使用它来减轻 server 的压力简化分布式监控的维护 环境规划&#xff1a; zabbix-server&#xff1a;外网IP地址192.168.111.66 zabbix-proxy:外网IP地址192.168.111.11 内网IP地址…

AI工具推荐:提升工作效率与生活质量

有哪些好用&#xff0c;且国内可用的AI工具&#xff1f; 副本 在AI大发展的年代&#xff0c;还有人在工作、生活中没有使用过AI吗&#xff1f; 今天为大家推荐几款国内可用、好用的AI工具&#xff0c;不论是自媒体文案写作、打工人汇报PPT、还是论文、公文写作&#xff0c;总…

设计系统采购与安装:乙级资质申请的技术准备

在设计系统采购与安装方面&#xff0c;为乙级资质申请所做的技术准备涉及多个方面。以下是一些关键的技术准备事项&#xff1a; 明确技术需求&#xff1a;首先&#xff0c;需要明确乙级资质申请所需的技术系统类型和规格。这可能包括但不限于设计软件、工程管理系统、项目管理系…

【Linux】之【Get√】查看linux CPU 架构 ---- amd64、x86、x86_64、arm64

关于Linux软件下载时&#xff1a;amd64、x86、x86_64、arm64 的说明 archuanme -alscpu

【设计模式深度剖析】【2】【创建型】【工厂方法模式】

&#x1f448;️上一篇:单例模式 | 下一篇:抽象工厂模式&#x1f449;️ 目录 工厂方法模式概览工厂方法模式的定义英文原话直译 工厂方法模式的4个角色抽象工厂&#xff08;Creator&#xff09;角色具体工厂&#xff08;Concrete Creator&#xff09;角色抽象产品&#x…

关于光照模型

关于光照模型 早期学习笔记&#xff0c;转载自早期Excel。 存在大量格式错误、可读性非常低&#xff0c;建议等待作者修复后阅读、或者作为查找性材料使用。 中文名英文名/缩写说明长什么样兰伯特光照模型Lambert Lighting1.兰伯特反射(Lambert)是最常见的一种漫反射&#x…

iptables防火墙【其二 实验篇】

保存&#xff0c;还原规则 防火墙规则的备份和还原 导出&#xff08;备份&#xff09;所有表的规则 iptables-save > /opt/ipt.txt 导入&#xff08;还原&#xff09;规则 iptables-restore < /opt/ipt.txt 将iptables规则文件保存在 /etc/sysconfig/iptables 中&#xf…

亚马逊卖家账号注册复杂吗?需要什么辅助工具吗?

在当今数字化的商业世界中&#xff0c;亚马逊作为全球最大的电商平台之一&#xff0c;吸引着无数的卖家和买家。对于想要进入亚马逊销售市场的卖家来说&#xff0c;首先要完成的一项重要任务就是注册亚马逊卖家账号。本文将详细介绍亚马逊注册的步骤、所需时间&#xff0c;以及…

[深度学习]基于yolov8+bytetrack+pyqt5实现车辆进出流量统计+车辆实时测速实现

以前使用过yolov5deepsort实现过车辆进出流量统计车辆实时测速&#xff0c;可以看我往期视频&#xff0c;这回改成yolov8bytetrack实现&#xff0c;实时性更好&#xff0c;原理和原来一样。车流量进出统计车速测量优点&#xff1a; 使用目标检测算法考虑bbox抖动&#xff0c;解…

将富文本编辑器中的H标签处理成树形结构,支持无限层级

做富文本编辑器时&#xff0c;需要将文本里的标题整理成树形数据&#xff0c; // 这里是数据结构 const data [{"id": "hkyrq2ndc-36yttda0lme00","text": "阿萨德阿萨德阿萨","level": 1,"depth": 1,},{"…

Window Linux 权限提升

#基础点&#xff1a; 0、为什么我们要学习权限提升转移技术&#xff1a; 简单来说就是达到目的过程中需要用到它 心里要想着我是谁 我在哪 我要去哪里 1、具体有哪些权限需要我们了解掌握的&#xff1a; 后台权限&#xff0c;数据库权限&#xff0c;Web权限&#xff0c;用户权…

【VTKExamples::Texture】第六期 TextureThreshold

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例TextureThreshold,并解析接口vtkTexture,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~Y…

127.数据异构方案

文章目录 前言一、数据异构的常用方法1. 完整克隆2. MQ方式3. binlog方式 二、MQ与Binlog方案实现MQ方式binlog方式注意点 三、总结 前言 何谓数据异构&#xff1a;把数据按需&#xff08;数据结构、存取方式、存取形式&#xff09;异地构建存储。比如我们将DB里面的数据持久化…

云和恩墨海外首秀在吉隆坡召开的2024中国智能科技与文化展览会

作为中马建交50周年官方重点推荐的活动之一&#xff0c;2024中国智能科技与文化展览会&#xff08;第四届&#xff09;于5月20至21日在毗邻吉隆坡双子塔的吉隆坡国际会展中心举办。本次展览会获得马来西亚科学技术创新部、马来西亚通讯部、中国驻马来西亚大使馆和马来西亚中华总…

【Linux学习】进程地址空间与写时拷贝

文章目录 Linux进程内存布局图&#xff1a;内存布局的验证 进程地址空间写时拷贝 Linux进程内存布局图&#xff1a; 地址空间的范围&#xff0c;在32位机器上是2^32比特位,也就是[0,4G]。 内存布局的验证 代码验证内存布局&#xff1a; 验证代码&#xff1a; #include<s…

linux系统安全加固

目录 1、账户安全基本措施 1&#xff09;系统账户清理 2&#xff09;密码安全控制 3&#xff09;命令历史限制 2、用户切换及提权 1&#xff09;使用 su命令切换用户 2&#xff09;使用sudo机制提升权限 3、系统引导和安全登录控制 1&#xff09;开机安全控制 2&…

python数据处理与分析入门-Pandas数据可视化例子

相关内容 Matplotlib可视化练习 Pandas 数据可视化总结 柱状图 reviews[points].value_counts().sort_index().plot.bar()散点图 reviews[reviews[price] < 100].sample(100).plot.scatter(xprice, ypoints)蜂窝图 reviews[reviews[price] < 100].plot.hexbin(xprice…

Helm安装kafka3.7.0无持久化(KRaft 模式集群)

文章目录 2.1 Chart包方式安装kafka集群 5.开始安装2.2 命令行方式安装kafka集群 搭建 Kafka-UI三、kafka集群测试3.1 方式一3.2 方式二 四、kafka集群扩容4.1 方式一4.2 方式二 五、kafka集群删除 参考文档 [Helm实践---安装kafka集群 - 知乎 (zhihu.com)](https://zhuanlan.…