循环结构
while语句
while(表达式){
代码块;
}
do{
代码块;
}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循环实现程序,输出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
短路原则
在刚才我们提到了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的操作
短路原则一个简单的应用就是可以解决输出格式问题,我们在一些网站刷题的时候,多个输出的时候需要用空格间隔,但是最后一个输出后面不能有空格,这种情况我们往往会用特判的方式来解决。现在我们可以用短路原则来解决这个问题。在代码,为了观察方便我把空格换成了逗号。
判断奇数个数
那么根据以上内容简单写一个程序,用来判断奇数个数
首先是随机数,我们需要引入一个头文件<stdlib.h>里面的rand()函数可以生成一个随机数,但是它是一个伪随机数,所以我们还需要一个种子,引入一个<time.h>,以时间作为种子,这样可以保证它不断的变化。生成一个1~100的随机数,则对rand()对100取余即可
然后我们可以用if来进行特判,定义一个count变量接收,如果为奇数则加1,然后我们可以优化一下,用当前随机数ans&1来代替if的特判语句。