C语言程序设计——程序流程控制方法(二)

循环结构

while语句

while(表达式){代码块;
}do{代码块;
}while(表达式)

while语句分为do-while和while两种,区别在于循环之前是不是先执行一次循环的内容,可以类似于++i和i++的关系,本质上来讲是相同的。当表达式为真时,则会执行一次代码块,然后继续进行循环条件判断,重复此过程,一直到表达式为假,则跳出循环
在循环读入的写法有频繁的使用while语句,也可以看出while语句的适用场景,就是适合没有确切循环次数的循环

使用while循环实现程序,输出1--100#include<stdio.h>
int main(){int i = 1;do{printf("%d ", i);if(i % 10 == 0){printf("\n")}}while(i++ < 100)
}

在这里插入图片描述

FOR语句

for(初始化;循环条件;执行后操作){代码块;
}

for循环相较于while循环最大的区别就是,他是有明确的循环次数的循环语句,可以注意到for循环中的有三条控制语句,其中可以省略任意数量的语句,都可使程序运行。

适用for循环实现程序,输出1--100#include<stdio.h>
int main(){for(int i = 0; i <= 100; i++){printf("%d ",i);if(i % 10 == 0){printf("\n");}}
}

break和continue

break:程序运行到此行代码时终止循环;
continue:程序运行到慈航代码时跳过这次循环,进行下一次循环判断

短路原则

在刚才我们提到了i++与++i,我们用代码简单演示一下,二者的区别。
在这里插入图片描述
在这里插入图片描述
可以看到不论i++还是++i都是进行了加1的操作,但区别是i++是先进行对变量的访问,然后才是进行加1操作,而++i则是先进行加1操作,之后进行变量访问。

了解二者区别之后我们再看下面的判断语句与输出情况
在这里插入图片描述
按照正常情况下应该是if语句中在条件判断先进行判断,而后因为a是先访问变量是0,而后加1,b是先加1然后访问变量,a = 0, b = 1,所以应该打印F,然后a = 1, b = 1;在这里插入图片描述
但是我们可以看到输出结果与我们预想的结果有出入,b打印出了0,也就是说++b的操作并没有被运行。这就是短路原则。我们再把逻辑"与"换成“逻辑非”看一下运行结果
在这里插入图片描述可以看到这一次依旧是没有执行++b的操作

短路原则
当用逻辑与链接多个表达式,若当前判断已经可以确定结果,则不再运行后面的代码
逻辑与:当出现的情况出现,则不运行后面的代码
逻辑非:当出现的情况出现,则不运行后面的代码

短路原则一个简单的应用就是可以解决输出格式问题,我们在一些网站刷题的时候,多个输出的时候需要用空格间隔,但是最后一个输出后面不能有空格,这种情况我们往往会用特判的方式来解决。现在我们可以用短路原则来解决这个问题。在代码,为了观察方便我把空格换成了逗号。
在这里插入图片描述

判断奇数个数

那么根据以上内容简单写一个程序,用来判断奇数个数

思路
根据我们输入的整数,让电脑随机生成指定个数的随机数(1~100)然后,然后对每一个随机数进行逐一判断,最后返回奇数的个数。最后应输出生成的随机数中间应该用空格隔开,然后再打印出判断结果即随机数中奇数的数量

首先是随机数,我们需要引入一个头文件<stdlib.h>里面的rand()函数可以生成一个随机数,但是它是一个伪随机数,所以我们还需要一个种子,引入一个<time.h>,以时间作为种子,这样可以保证它不断的变化。生成一个1~100的随机数,则对rand()对100取余即可

然后我们可以用if来进行特判,定义一个count变量接收,如果为奇数则加1,然后我们可以优化一下,用当前随机数ans&1来代替if的特判语句。
在这里插入图片描述

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

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

相关文章

超详细的 pytest 钩子函数 之初始钩子和引导钩子来啦

前几篇文章介绍了 pytest 点的基本使用&#xff0c;学完前面几篇的内容基本上就可以满足工作中编写用例和进行自动化测试的需求。从这篇文章开始会陆续给大家介绍 pytest 中的钩子函数&#xff0c;插件开发等等。 仔细去看过 pytest 文档的小伙伴&#xff0c;应该都有发现 pyte…

【数据结构 | 希尔排序法】

希尔排序法 思路ShellSort 思路 希尔排序法又称缩小增量法。希尔排序法的基本思想是&#xff1a;先选定一个整数&#xff0c;把待排序文件中所有记录分成个组&#xff0c;所有距离为的记录分在同一组内&#xff0c;并对每一组内的记录进行排序。然后&#xff0c;取&#xff0c…

ospf-gre隧道小练习

全网可达,R5路由表没有其他路由器的路由条目 注:每个路由器都添加了自己的环回,如R1就是1.1.1.1 R1可以分别ping通与R2,R3,R4之间的隧道 R1路由表上有所有路由器环回的路由条目 R5路由表上没有其他路由器的路由条目 实现代码: 首先将各个接口IP配好 边上3个路由器:[R6][R7][R…

ES API 批量操作 Bulk API

bulk 是 elasticsearch 提供的一种批量增删改的操作API。 bulk 对 JSON串 有着严格的要求。每个JSON串 不能换行 &#xff0c;只能放在同一行&#xff0c;同时&#xff0c; 相邻的JSON串之间必须要有换行 &#xff08;Linux下是\n&#xff1b;Window下是\r\n&#xff09;。bul…

【谭浩强C程序设计 学习辅导第3章】最简单的C程序设计——顺序程序设计(含详细源码)

文章目录 一、 顺序程序设计题的解题思路及注意事项解题思路注意事项 二、源码讲解第3章源码文件构成&#xff1a;main.c 文件内容说明chap3.c源码实现chap3.h声明头文件测试结果展示源码链接 说明&#xff1a;本学习辅导题适用于谭浩强教辅第四版。 一、 顺序程序设计题的解题…

Programming Abstractions in C阅读笔记:p246-p247

《Programming Abstractions in C》学习第68天&#xff0c;p246-p247总结&#xff0c;总计2页。 一、技术总结 本章通过“the game of nim(尼姆游戏)”&#xff0c;这类以现实生活中事物作为例子进行讲解的情况&#xff0c;往往对学习者要求比较高&#xff0c;需要学习者具备…

<软考高项备考>《论文专题 - 65 质量管理(4) 》

4 过程3-管理质量 4.1 问题 4W1H过程做什么为了评估绩效&#xff0c;确保项目输出完整、正确且满足客户期望&#xff0c;而监督和记录质量管理活动执行结果的过程作用&#xff1a;①核实项目可交付成果和工作已经达到主要干系人的质量要求&#xff0c;可供最终验收;②确定项目…

C# 静态代码织入AOP组件之肉夹馍

写在前面 关于肉夹馍组件的官方介绍说明&#xff1a; Rougamo是一个静态代码织入的AOP组件&#xff0c;同为AOP组件较为常用的有Castle、Autofac、AspectCore等&#xff0c;与这些组件不同的是&#xff0c;这些组件基本都是通过动态代理IoC的方式实现AOP&#xff0c;是运行时…

【Web】CTFSHOW PHP特性刷题记录(全)

知其然知其所以然&#xff0c;尽量把每种特性都详细讲明白。 目录 web89 web90 web91 web92 web93 web94 web95 web96 web97 web98 web99 web100 web101 web102 web103 web104 web105 web106 web107 web108 web109 web110 web111 web112 web113 web…

高级分布式系统-第12讲 分布式控制经典理论

控制器基础 分布式控制系统的设计&#xff0c;是指在给定系统性能指标的条件下&#xff0c;设计出控制器的控制规律和相应的数字控制算法。 PID控制器 根据偏差的比例&#xff08;Proportional&#xff09;、积分&#xff08;Integral&#xff09;、微分&#xff08;Derivati…

工作压力测试

每个职场人都会遇到工作压力&#xff0c;在企业人力资源管理的角度来看&#xff0c;没有工作压力是人力资源的低效&#xff0c;适当的工作压力可以促使员工不断进取&#xff0c;然而每个人的抗压能力是不同的&#xff0c;同样的工作量和工作难度&#xff0c;不同的人在面对相同…

漏洞复现--GitLab 任意用户密码重置漏洞(CVE-2023-7028)

免责声明&#xff1a; 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

class_4:car类

#include <iostream> using namespace std; class Car{ public://成员数据string color; //颜色string brand; //品牌string type; //车型int year; //年限//其实也是成员数据&#xff0c;指针变量&#xff0c;指向函数的变量&#xff0c;并非真正的成员函数void (*…

Win10(CPU)+ Anaconda3 + python3.9安装pytorch

1. 安装Anaconda3 1.1 下载Anaconda3 可以在官网下载Anaconda3-2022.05-Windows-x86_64.exe&#xff0c;这个版本对应的是python3.9。 1.2 安装Anaconda3 此步骤比较简单&#xff0c;双击.exe文件&#xff0c;一步一步执行即可&#xff0c;有不确定的可以自行百度&#xff…

C++ 对象模型 | 关于对象

一、C 对象模型 1、对象内存布局 在C中&#xff0c;有两种数据成员&#xff1a;static和nonstatic&#xff0c;以及三种成员方法static、nonstatic、virtual&#xff0c;下面从虚函数、非虚函数、静态成员变量、非静态成员变量等维度来分析&#xff0c;类对象的内存布局。例如…

聚道云软件连接器助力知名企业,提升合同管理效率

一、客户介绍 某服饰股份有限公司是一家集服装设计、生产、销售及品牌建设于一体的企业。该公司的产品线涵盖男装、女装、童装等多个领域&#xff0c;设计风格时尚、简约、大方&#xff0c;深受消费者喜爱。公司注重产品研发&#xff0c;不断推陈出新&#xff0c;紧跟时尚潮流…

【linux笔记】vim

【linux笔记】vim 启动和退出 启动 vi退出 q强制退出 q&#xff01;编辑模式 vi foo.txt创建一个文件&#xff0c;启动后&#xff0c;是命令模式&#xff0c;是不能编辑的&#xff0c;键盘上的按键对应不同的命令。 插入模式 按键盘上的i&#xff0c;进入插入模式 保…

Redis(概述、应用场景、线程模式、数据持久化、数据一致、事务、集群、哨兵、key过期策略、缓存穿透、击穿、雪崩)

目录 Redis概述 应用场景 Redis的线程模式 数据持久化 1.Rdb&#xff08;Redis DataBase&#xff09; 2.Aof&#xff08;Append Only File&#xff09; mysql与redis保持数据一致 redis事务 主从复制&#xff08;Redis集群) 哨兵模式 key过期策略 缓存穿透、击穿、…

【大厂秘籍】 - Java多线程面试题

Java多线程面试题 友情提示&#xff0c;看完此文&#xff0c;在Java多线程这块&#xff0c;基本上可以吊打面试官了 线程和进程的区别 进程是资源分配的最小单位&#xff0c;线程是CPU调度的最小单位 线程是进程的子集&#xff0c;一个进程可以有很多线程&#xff0c;每条线…

UDS 诊断通讯

UDS有哪些车型支持 UDS(统一诊断服务)协议被广泛应用于汽车行业中,支持多种车型。具体来说,UDS协议被用于汽车电子控制单元(ECU)之间的通讯,以实现故障诊断、标定、编程和监控等功能。 支持UDS协议的车型包括但不限于以下几种: 奥迪(Audi)车型:包括A3、A4、A5、A6…