编程小站



和我一起走进编程的世界

1.6 循环结构

如果现在让你用计算机判断5是不是3的倍数你会怎么做?

 #include <cstdio>
 using namespcae std;
 int main()
 {
 	if(5%3 == 1) printf("5是3的倍数");
 	return 0;
 }

很好。看来你已经掌握了if语句

那么问题来了,如果我要判断输入的一万个数据里,有几个3的倍数,你要怎么做?

总不能敲一万行代码吧~

那这个时候,循环语句就要出场了

循环语句有三种

1:while语句

2: do-while语句

2: for语句

目前我们通常使用的是第三种

下面我将会挨个说明。

1.while语句。

while(循环条件){
    循环体。当满足循环条件时,执行循环体,并重新判断循环条件。
    循环体就是一堆等待执行的语句。
}

举个例子:

 #include <cstdio>
 using namespcae std;
 int main()
 {
    int i=0;//声明一个变量i,用于计算循环次数
 	while(i<100){//循环条件:i<100。也就是当执行一百次的时候退出
        int a;//在while内声明一个变量a
        scanf("%d",&a);//输入a
        if(a % 3 ==0)printf("%d能被3整除",a);//如果a%3==0,输出
        i=1+1;//让i内存储的值变为i+1
    }
 	return 0;
 }

上面这个例子涉及到了一个问题:

声明变量的定义域。

变量的声明是在它所包含的大括号内声明的,当大括号结束后,这个变量所存储的空间也就被释放了。

你可以试试

 #include <cstdio>
 using namespcae std;
 int main()
 {
 	int a;
    int a;
 	return 0;
 }

这样绝对会报错。

因为同一个变量不能声明两次。

但是用来给while举例的那段代码,就没事

因为那个int a;的作用域是while循环

每执行一次,这个a就被释放掉了。

2.do-while语句

do{
    循环体。当满足循环条件时,执行循环体,并重新判断循环条件。
    循环体就是一堆等待执行的语句。
}
while(循环条件);

这个语句其实和While语句很像

唯一的区别在于

如果循环体条件不满足,那么while语句就一次也不执行

但是do-while语句则执行一次。

所以,上面while的代码也可以改成这样:

 #include <cstdio>
 using namespcae std;
 int main()
 {
    int i=0;//声明一个变量i,用于计算循环次数
     
 	do{
        int a;//在while内声明一个变量a
        scanf("%d",&a);//输入a
        if(a % 3 ==0)printf("%d能被3整除",a);//如果a%3==0,输出
        i=1+1;//让i内存储的值变为i+1
    }
     while(i<99);
 	return 0//循环条件:i<99。也就是当执行一百次(99+1)的时候退出
 }

3.for语句

for(初始化;循环条件;执行体){
    循环体。;
}

上面这个代码等价于:

初始化语句;
while(循环条件){
    循环体;
    执行体;
}

完全等价!

也就是说,你可以把上面的代码写成:

#include <cstdio>
 using namespcae std;
 int main()
 {
 	for(int i=0;i<100;i=i+1){//声明一个变量i,用于计算循环次数
        int a;//在while内声明一个变量a
        scanf("%d",&a);//输入a
        if(a % 3 ==0)printf("%d",a);//如果a%3==0,输出
        i=1+1;//让i内存储的值变为i+1
    }
 	return 0//循环条件:i<=99。也就是当执行一百次(99+1)的时候退出
 }

这里要注意一个问题

在c语言中,有的版本不支持在for的初始化里执行声明语句

而c++中则全部支持

感兴趣的可以自己了解一下

最近的文章

1.7 逻辑运算符

在学习过了if、while等语句之后我们接触到了”判断条件“这一概念现在我们需要介绍一些逻辑运算符以便简化一些表达举个例子:如果没有逻辑运算符你想要判断你的室友是不是既得了神经病又得了精神病你只能intdis=0;if(室友是神经病)dis=dis+1;if(室友是精神病)dis=dis+2;if(…

继续阅读
更早的文章

1.5 选择结构

选择结构…

继续阅读