C语言之循环while,do-while,for的简单使用方法及区别

本文介绍了C语言中的三种循环语句:while、do-while和for。通过实例解析了每种循环的执行逻辑,强调了它们在不同场景下的应用,如计算序列和、求最大公因数等,并指出do-while语句会至少执行一次循环体的特点,以及for语句在已知循环次数情况下的便利性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

1、while语句(当型循环控制语句)

2、do-whlie语句(直到型循环语句)

3、for语句


前言

所谓循环语句,其最重要的三点便是:有效性确定性以及有穷性

循环结构的特点即为:在给定条件成立时,反复执行某程序段,直到条件不成立为止。

举一个生动的例子:给定条件就是饿了,需要执行的程序段就是吃饭,直到吃到不饿为止。(写代码咱可能不精通,吃饭那必定是不能再熟悉了)

其中给定的条件称为循环条件,反复执行的程序段就叫做循环体

C语言中提供了while,do-while,for三种语句来实现循环结构。

1、while语句(当型循环控制语句)

(图片真的不太好搞)

所谓当型,就是给定条件满足while后括号内条件时执行循环体。

while(饿了)
 吃饭;

如图,简单易懂吧,吃到不饿了就退出循环不吃了。

用来解决实际问题的话,例如计算1+2+3...+100。一般可以写为

int sum;
sum=(1+100)*100/2;
printf("sum=%d",sum)

那么用循环就可以写为

int i=1,sum=0;
while(i<=100)
{
   sum+=1;
   i++;
}
printf("sum=%d",sum);
return 0;
}

其实这样简单的问题有更简便的替代方法,循环语句就显得很冗长,但要是求最大公因数,在使用辗转相除法时循环语句就会更简洁:

#include<stdio.h>
int main()
{
   int a,b,r;
   printf("请输入两个整数");
   scanf("%d %d",&a,&b);
   while(b!=0)
   {
      r=a%b;  //求余数
      a=b;
      b=r;
    }         //即辗转相除法
   printf("两数的最大公因数为=%d",a);
   return 0;
 }

2、do-whlie语句(直到型循环语句)

直到型语句,即是先执行,直到不满足循环条件为止。依然以从1加到100为例:

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

其与while语句的区别在于:while语句先判断是否满足循环条件再决定是否执行循环体,而do-while语句则无论如何先执行一次循环体,再判断是否进行下一次循环。(就像是网上购物,while型是有需要才买,解决需要了就不买了,而do-while则是看到了先买,买后再思考到底需不需要)

注意:do-while语句循环体中要有改变循环控制变量的步骤,否则极易陷入死循环。

3、for语句

for语句常用于已知循环次数的情况,基本形式为:

for(表达式1;表达式2/*循环条件*/;表达式3)
  语句;//循环体(执行多条语句时使用复合语句,要加{})
//注意:for后的括号()不可以省略,表达式之间用逗号隔开

表达式1:一般为赋值表达式,给循环初始变量赋初值(初始化)

表达式2:一般为关系表达式或逻辑表达式,作为循环控制条件(判断)

表达式3:一般为赋值表达式,使循环控制变量打破循环控制条件(改变)

依旧是求1加到100:

#include<stdio.h>
int main()
{
   int i,sum;
   for(i=1,sum=0/*表达式1*/;i<=100/*表达式2*/;i++/*表达式3*/)
      sum+=i;//语句(循环体)
   printf("sum=%d",sum);
   return 0;
}

其中,最重要的是所要执行的循环体,三个表达式可以省略,因为有另外控制的方法。

例如上面程序中:表达式1赋初值的功能可以交给int,写成

   int i=1,sum=0;//代替表达式1
   for(;i<=100;i++)
      sum+=i;

表达式2所起的判断功能也可以放至循环体中写成判断语句(break功能退出循环体会在以后讲到)

   int i,sum;
   for(i=1,sum=0;;i++)
   {  if(i>100) break;//代替表达式2
      sum+=i;
   }

表达式3改变循环控制变量也可写在循环体中:

int i,sum;
   for(i=1,sum=0;i<=100;)
   {  sum+=i;
      i++;//代替表达式3
   }

甚至可以三者都省略:

int i=1,sum=0;//代替表达式1
for(;;)
{
   if(i>100) break;代替表达式2
   sum+=i;
   i++;//代替表达式3
}

就目前所学,for语句可以将判断是否执行循环部分和循环体实际执行部分分开,更加便于使用。

关于循环嵌套和break,continue语句且听下回分解。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醋蘸年糕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值