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的特判语句。
在这里插入图片描述

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值