c语言中的循环语句

在c语言的循环语句里有1.do while语句 2.while语句 3.for语句

1.while循环语句

while语句的形式
 

while(表达式)
 语句;//如果循环体想包含更多的语句,可以加上⼤括号
#include<stdio.h>
int main()
{ int i=10;
 while(i>0)
printf("%d",i);

 return 0;
}

在以上代码中因为一直满足while后面的条件 所以会死循环打印i

while循环的执行流程如下

4a1510287553491d9f7a5f339772f6cf.png

⾸先上来就是执⾏判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执⾏循环语 句,语句执⾏完后再继续判断,是否进⾏下⼀次判断 

练习1:要打印出1~100的和
先可以将该练习的流程图画出来20b329ecbacd4bc186f44dc5b90efd0e.png

由于要多次循环 所以要使用while语句

#include <stdio.h>
int main()
{ int i =1;//初始化i
 int sum=0;
 while(i<=100)//判断部分
 { 
  sum+=i;
  i++;//调整部分
 }
printf("%d",sum);

 return 0;
}

 该代码最终输出结果为5050
练习2:输⼊⼀个正的整数,逆序打印这个整数的每⼀位
例输入4321 输出1234

#include <stdio.h>
int main()
{ int i=0;
  scanf("%d", &i);
 while(i)
 {
  printf("%d",i%10);
  i=i/10;
 }
 return 0;
}

解析:先得到n的最低i%10的运算,得到的余数就是最低位,i的最低位,找出倒数第⼆位,则使用i=i/10 操作就可以去掉最低位的,在循环以上步骤 当i=0时就会跳出循环

在while语句中在循环执⾏的过程中,如果某些状况发⽣的时候,需要提前终⽌循环,C语⾔中提供了 break 和 continue 两个关键字,就是应⽤到循环中的

• break 的作⽤是⽤于永久的终⽌循环,只要 break 被执⾏,直接就会跳出循环,继续往后执行。
•continue 的作⽤是跳过本次循环中 continue 后边的代码
 

#include <stdio.h>
 int main
{
  int i=1;
  while(i<=10)
{ if(i==5)
  {
    continue;
  }
printf("%d ",i);
  i++ 
}

   return 0;
}

以上这段代码能正常打印1~4    但当i=5时会进入if语句,进入之后执行continue跳出本次while循环后面的代码,回到变量判断部分,之后一直循环往复导致死循环
所以以上代码最终结果是1 2 3 4 死循环

若continue变成break又会是什么样的结果呢?

#include <stdio.h>
 int main
{
  int i=1;
  while(i<=10)
{ if(i==5)
  {
    break;
  }
printf("%d ",i);
  i++ 
}

   return 0;
}

 以上这段代码也能先正常打印1~4  i=5时也会进入if语句,但之后会直接跳出while循环
 所以以上代码最终结果是1 2 3 4

2.for循环语句


除了可以用while 语句实现循环外,C语言还提供了for语句实现循环,而且for语句更为灵活,不仅可以用于循环次数已经确定的情况,还可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句。

for(表达式1; 表达式2; 表达式3)
 语句;//如果循环体想包含更多的语句,可以加上⼤括号

表达式1 ⽤于循环变量的初始化
表达式2 ⽤于循环结束条件的判断
表达式3 ⽤于循环变量的调整 

for循环的流程图如下3ddafec5213d4f5fab0c7b4f7e4f2042.png

若用for循环来完成上面的练习2  可以这样来写

#include <stdio.h>
int main()
{
	int i = 0;
	scanf("%d", &i);
	for (; i; i = i / 10)
	{
		printf("%d", i % 10);

	}
	return 0;
}

通过以上练习2分别用while循环和for循环的解答 可以看出while循环语句和for循环语句都含变量初始化部分 条件判断部分 变量调整部分 
只是 for 循环的三个部 分⾮常集中,便于代码的维护,⽽如果代码较多的时候 while 循环的三个部分就⽐较分散,所以从形 式上 for 循环要更优⼀些

若要打印出1~100之间3的倍数的总和 用if语句代码就可以很简练

#include <stdio.h>
int main()
{int a =0;
 int sum =0;
  for(a=3;a<=100;a+=3)
   { 
      sum+=a;
   }
  printf("%d",sum);
 
 return 0; 
}

在for循环语句中也有break和continue语句 
break 的作⽤也是⽤于永久的终⽌循环,只要 break 被执⾏,直接就会跳出循环
而continue在 for 循环与 while 循环中的使用有所差异

#include <stdio.h>
 int main
{
  int i=0;
  for( i=1;i<=10;i++)
{ if(i==5)
  {
    continue;
  }
printf("%d ",i);

}

   return 0;
}

以上这段代码也能先正常打印1~4 但当i=5时会直接跳到for语句的开头部分再接下来打印6~10
所以以上代码的最终结果是1 2 3 4 6 7 8 9 10 

3.do... while循环语句

do... while的一般形式为

do 语句
while(表达式)

while和for这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳
出循环;
⽽do...while循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏while后的判断表达式,表
达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环 至少执行一次循环体

8079ccab34b74f72874dbb16a91919eb.png

若用do... while完成以上练习2 可用以下代码实现

#include<stdio.h>
 int main()
{ int i=0;
 scanf("%d",&i);
 do
 { printf("%d",i%10);
   i=i/10;
 }while(i) 

  return 0;
}

在do...while语句中的的break与continue与while中的作用相同

4.循环的嵌套 

在以上讲解的if循环 for循环 do while循环通常情况下可嵌套使用,能更好的解决问题

例如要在屏幕上打印出200~300的素数,就可用到嵌套循环

#include<stdio.h>
int main()
{ int i =0;
 int j =0;
   int flag=1;
 for(i=200;i<=300;i++)
 { for(j=2;j<=i-1;j++)
   { if(i%j==0)
     flag=0;
     break;
   }
   if(flag==1)
   printf("%d",i);
 }
 return 0;
}

由于素数一定是奇数,且若i=a*b 其中一个数必<=根号i
这时我们就可以用到库函数sqrt,注意需要引用头文件#include<math.h>

#include<stdio.h>
#include<math.h>
int main()
{ int i =0;
  int j =0;
  flag=1;
for(i=201;i<=300;i+=2)
 { for(j=2;j<=sqrt(i);j++)
   {if(i%j==0)
    flag=0;
    break;
   }
   if(flag==1)
   printf("%d",i);
 } 
 return 0;
}

  • 35
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

mljy.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值