循环结构while和for

循环结构之while语句

while(表达式)
{语句}

注意:1.while循环的特点是先判断条件表达式,后执行循环体语句。
2.“语句”就是循环体。循环体可以是一个简单的语句(单个语句可不加花括号),可以是复合语句(用花括号括起来的若干语句)。
3.表达式的值为“真”(以非0值表示)时,就执行循环体语句;为“假”(以0表示)时,就不执行循环体语句,退出循环。
如:(1)输入10行*******

#include<stdio.h>
int main()
{
	int i=1;
	while(i<=10)
	{
		printf("*******\n");
		i++;
	}
	return 0;
}

只需改变数字即可改变输入的行数
(2)1.01的365次方

#include<stdio.h>
int main()
{
	int i=1;
	float s=1.0;
	while(i<=365)
	{
		s=s*1.01;
		i++;
	}
	printf("1.01的365次方是:%.2f\n",s);
	return 0;
}

do…while语句

do
语句
while(表达式);

注意:do…while语句的特点是,先无条件地执行循环体,然后判断循环条件是否成立
例:用do…while语句求1+2+3+…+100.

#include<stdio.h>
int main()
{
	int i=1,sum=0;
	do
	{
		sum=sum+i;
		i++;
	}while(i<=100);
	printf("sum=%d\n",sum);
	return 0;
}

输出结果为: sum=5050

While语句和do…while语句比较

while语句

#include<stdio.h>
int main()
{
	int i,sum=0;
	printf("please enter i,i=?");
	scanf("%d",&i);
	while(i<=10)
	{
		sum=sum+i;
		i++;
	}
	printf("sum=%d\n",sum);
	return 0;
 } 
结果:
please enter i,i=?1
sum=55
----------------------------------
please enter i,i=?11
sum=0

do…while语句

#include<stdio.h>
int main()
{
	int i,sum=0;
	printf("please enter i,i=?");
	scanf("%d",&i);
	do
	{
		sum=sum+i;
		i++;
	}while(i<=10);
	printf("sum=%d\n",sum);
	return 0;
}
please enter i,i=?1
sum=55
--------------------------------
please enter i,i=?11
sum=11

结论:当while后面的表达式的第一次值为“真”时,两种循环得到的结果相同;否则,二者的结果不相同(指二者具有相同的循环体结构)。do …while即使第一次值为假,循环体也会至少执行一次

for语句

for(表达式1;表达式2;表达式3) 表达式1;
语句
while 表达式2;
== {
语句
表达式3
}

【例】用for语句求1+2+3+…+100.

#include<stdio.h>
int main()
{
	int i,sum=0;
	for(i=1;i<=100;i++)
		sum=sum+i;		//实现迭代
		printf("%d\n",sum);
	return 0; 
}

for语句的各种形式

1.for语句的一般形式中的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值。注意,省略表达式1时,其后的分号不能省略。如:

i=1;
for(;i<=100;i++)
	sum=sum+i;

2.如果表达式2省略,即不判断循环条件,循环无终止地进行下去。也就是认为表达式2始终为真。

for(i=1; ;i++)
	sum=sum+i;

3.表达式3也可以省忽略,但应另外设法保证循环能正常结束。如:

for(i=1;i<=100; )
{sum=sum+i;
 i++;
}

4.可以省略表达式1和表达式3,只有表达式2,即只给循环条件。在这种情况下,完全等同于while语句。可见for语句比while语句功能强,除了可以给出循环条件外,还可以赋初值,使循环变量自动增值等。如:

i=1;
for( ;i<=100; )
{sum=sum+i;
 i++;
}
  1. 3个表达式都可省略,如:for( ; ; ); //相当于while(1)语句
  2. 表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。如:
`for(i=1,sum=0;i<=100:i++)
	sum=sum+i;

7.表达式2-般是关系表达式(如i<=100)或逻辑表达式(如a<b && x<y), 但也可以是数值表达式或字符表达式,只要其值为非0,就执行循环体.如:

for(x=10;x;x--)
	sum=sum+x;

第二个x表示x!=0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值