循环是程序中最常见的一个语句,毕竟计算机每天都在做一些循环的工作。下面我们来看看循环的语句。
while
while是个很简单的循环,它的语法如下:
while(判断条件)
执行语句
while的语法类似if,只要满足while的判断条件, 执行的语句会一直循环。while会先判断条件是否为真,为真就会执行我们写的语句,然后再判断条件是否成立,再执行我们写的语句,这样循环,直到判断条件为假。可以试试下面的代码:
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);//输入一个整数
while(n--)//这个循环输出hello world,n每次循环自减一
{
printf("hello world!\n");
}
return 0;
}
n当自减到零时条件判断为假,跳出循环,程序结束。上面的程序就是让用户输入n,然后根据n的值输出n个hello world。和if一样while同样可以使用逻辑操作符并且循环里面还可以嵌套循环。
我们再来看看两个会在循环里面用到的语句:
break和continue
break是直接终止循环。continue是终止本次循环。
我们用代码来感受一下吧。我们用上面那个例子。上面那个程序,如果你输入负数的话会无线循环。因为当n为0的时候才会判断为假。非零都为真。所以我们让程序判断如果为负数就跳出循环。
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);//输入一个整数
while(n--)//这个循环输出hello world,n每次循环自减一
{
if(n<0)
break;
printf("hello world!\n");
}
return 0;
}
我们再来看看continue。我们从1输出到10。但是我们不输出5这个数:
#include<stdio.h>
int main()
{
int n=0;
while(n<10)
{
n++;
if(n==5)
continue;
printf("%d\n",n);
}
return 0;
}
do……while
do……while类似while,我们看看他的用法:
do
执行语句
while(判断条件);
我们把最上面的程序改为do……while形式:
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
do
{
printf("hello world!\n");
}
while(n--);
return 0;
}
是不是感觉和while差不多,只是结构变了一下,while后面多了个分号。但是如果你把这个程序拿去执行就会发现一个问题,当你输入5时,程序输出了6个hello wolrd!为什么呢?因为程序会按照从上到下的顺序先执行一次,再做判断。所以这也是它和while的区别,如果执行的语句必须执行一次则可以选用do……while。
for
for是很重要的一个循环。它相对于前面两个循环来说要复杂一些。我们来看看它的用法:
for(初始化语句;条件判断;调整语句)
执行语句
在执行for的时候,第一次会执行初始化语句,之后都不会执行。接着会执行条件判断语句,满足条件则开始循环,否则跳出循环。调整语句会在每次循环完成,条件语句执行之前执行。这三个表达式每一个都是可以省略的。如果省略省略就表示不做相应的操作,省略条件判断则一直为真,程序无限循环。我们来看看将最上面的while改成for的例子吧。
#include<stdio.h>
int main()
{
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("hello world!\n");
}
return 0;
}
我们初始化了一个i,利用i来控制循环次数,每次循环完,i自加一,大家好好思考一下这个循环为什么和最上面的while实现的功能是一样的。你就更能明白两者区别。
值得注意的是,我们是在外面声明的i这个变量。在c99以后的标准可以在for里面去声明和初始化。
for(int i=0;i<n,i++)
{
printf("hello world!\n");
}
这只是编译器的采用的标准问题,大家了解一下就好了,如果在编译的时候出错一定要清楚这个问题。当然for语句同样适用于break和continue。
总结
循环是编程必用的一个语句,多写代码才能熟悉这些语句。
练习
1.分别用while和for写一个程序。程序让用户输入一个n,然后计算1到n的和。
2.编写一个程序,程序实现用户输入两个数,计算他们的最小公倍数和最大公约数。