介绍用while,do-while,for语句实现循环的方法;如何设定循环条件,以及如何控制循环的次数与循环有关的算法
一、有关while,do-while,for语句的语法格式
while循环
while(condition) //循环条件
{
statement(s);//循环体
}
do-while循环
do{
statement(s); //循环体
}
while(condition); //循环条件
for循环
for(init;condition;increment)
//init初始化参数,condition参数循环条件,increment改变参数,退出循环
{
statement(s); //循环体
}
二、利用循环实现相关数学问题
1. 编程求 1!+2!+3!+……+10! 的值。
程序结构如下:
#include "stdio.h"
void main( )
{
定义变量i作为循环控制变量;
定义变量p和sum分别存放各个整数的阶乘和阶乘之和;
变量p和sum赋初值;
for( i=1; i<=10; i++ )
{ 变量p连乘 ;
变量sum累加; }
输出sum的值 ;
}
程序具体实现:
#include "stdio.h"
void main() {
int i,p=1,sum=0;
for (i=1;i<=10;i++) {
p=p*i;
sum=sum+p;
}
printf("1!+2!+3!+……+10! = %d ",sum);
}
运行结果:
2. 编程计算1到100之间的奇数之和及偶数之和,并输出
#include "stdio.h"
void main( ) {
int a,b,c,i;
a = 0;
c = 1;
/*变量初始化*/
for (i=0; i<=100; i+=2) {
a+=i;
/*变量a存放偶数的和*/
b=i-1;
c+=b;
/*变量c存放奇数的和*/
}
printf("1到100之间的奇数之和 = %d\n",a);
printf("1到100之间的奇数之和 = %d\n",c);
}
运行截图:
3. 编程打印出所有的“水仙花数”,所谓水仙花数是指一个3位数,其各位数字的立方和等于该数本身。如153=13+53+33。
程序设计思路:定义一个变量作为循环变量,再定义3个变量分别存放三位数的每位数字,在循环体中将一个三位数拆分成个十百位后判断循环变量的值是否为水仙花数,如果是则输出,否则不输出
/* 打印出所有的“水仙花数” */
#include "stdio.h"
void main( ) {
int a,b,c,j;
for ( j=100; j<=999; j++ ) {
a=j/100;
/*分离出百位数*/
b=j/10-a*10;
/*分离出十位数*/
c=j%10;
/*分离出个位数*/
if(j==a*a*a+b*b*b+c*c*c)
printf("%d\t",j);
/*输出水仙花数j*/
}
printf("\n");
}
运行截图:
三、关于while,do-while,for循环的注意
- while,do-while,for语句中应有使循环趋向于结束的语句,否则就可能构成死循环。
- while,do-while循环效果差不多,但是前者是先进行判断再执行循环体,可能一次都不执行;后者是先执行一次循环体,再判断是否退出循环。
- 注意在循环结构程序设计中,可以多次使用循环语句构成复合语句,最常用的就是使用多重for循环。