C语言学习——了解循环结构语句

目录

1.循环结构——while语句

2.循环结构——do...while语句

 3.循环结构——for语句

4.循环程序举例


1.循环结构——while语句

基本格式:while(表达式)

                  {语句}

简单使用:如在屏幕上输出十行“*”

#include<stdio.h>
int main()
{
int i=1;
while(i<=10)  //设置循环条件,循环10次
{printf("******************");
i++;
}
return 0;
}

如果使用传统的方式只使用printf函数要满足上述条件则我们要连续打出十行一样的代码,这显然太耗时间并且浪费感情,当我们使用while循环语句时这个问题就很好的被解决了,同时也提高了我们的效率。

进阶使用:如计算出1.01的365次方

#include<stdio.h>
int main()
{
int i=1;
float sum=1.01;
while(i<=365)//设置循环条件,使语句执行365次
{sum*=1.01;
i++;
}
printf("1.01的365次方=%.2f\n",sum);
return 0;
}

1.01的365次方也就是将1.01乘365次,如果我们一遍一遍的打代码进行计算的话那简直是栓q,另外这也反映出计算机的能力,计算机的计算能力非常强大,并且计算不会出错,因此我们可以利用这一点来完成许多有意思的事情。

2.循环结构——do...while语句

基本格式:do

                 语句

                while(表达式); 

注意:do...while语句的特点是,先无条件地执行循环体,然后判断循环条件是否成立。

而while语句是先进行判断循环条件是否成立,如果成立才能开始执行循环体。

简单使用:如计算出前100个数的和,即1+2+3+...+100

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

do...while循环语句的使用和while循环语句很相似,但是一定要注意分清两者在使用上的不同之处。 

 3.循环结构——for语句

基本格式:for(表达式1;表达式2;表达式3)

                  语句

运行流程:先求解表达式1,然后判断表达式2的真(非0)假(0),如果为假则结束for语句,如果为真则执行语句接着再求解表达式3然后继续重新判断表达式2的真假。

简单使用:计算前100个数的和

#include<stdio.h>
int main()
{
int i,sum;
for(i=1,sum=0;i<=100;i++)
{
sum+=i;
}
printf("前100个数的和为%d\n",sum);
return 0;
}

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

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

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

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

(5).3个表达式都可以省略,即不设初值,不判断条件(认为表达式2为真值),循环变量不增值。无终止的执行循环体。

(6).表达式1可以是设置循环变量初值的赋值表达式,也可以是于循环变量无关的其他表达式。表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。

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

4.循环程序举例

【例】判断整数m是否为素数。

首先我们先捋清楚思路,素数是指除了1和它本身以外,不能被任何整数整除的数。判断一个数是否是素数,只需把m被2~m-1的每一个整数去除,如果都不能被整除,那么m就是一个素数。又因为m的每一对因子必然有一个小于等于根号m,另一个大于等于根号m,所以只需将m被2~根号m之间的整数除即可。

#include<stdio.h>
#include<math.h>
int main()
{
int m,i;
printf("请输入一个整数:");
scanf("%d",&m);
float k=sqrt(m);//表示k为根号m,注意使用时要用头文件#include<math.h>
for(i=2;i<=k;i++)
{
if(m%i==0)break;//若满足条件则用break跳出整个循环
}
if(i>k)printf("m是素数");//i>k则说明2~根号m之间的数都不能被整除
else printf("m不是素数");

return 0;
}

【例】求100~200之间的全部素数。

本题的解题思路为依个检查100~200的所有数是否时素数,在上面例子的基础上,用一个嵌套的for循环。

#include<stdio.h>
#include<math.h>
int main()
{
int m,i,n=o;
float k;
for(m=101;m<=200;m+=2)\\大循环,将数值赋给m
{
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;\\若满足条件,则用break跳出循环
if(i>k)\\则为素数
{
printf("%d",m);
n++;
}
if(n%10=0)printf("\n");\\用n来实现一行输出10个数
}
printf("\n");
return 0;
}

好了,这次先分享到这,期待你下一次在这里读我的博客。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值