很多时候我们需要对算法进行重复,如果使用if语句会很繁琐,这时就需要用到循环对算法进行简化。本次学习主要内容是while与do while循环并完成关于循环应用的一些例题。
1.while循环
while(判断)
{
循环体语句
}
当条件满足的时候,不断重复循环体的语句,如果条件不成立,就可能一次都不执行循环体语句。
2. do while循环
do
{
循环体语句
}while(判断)
先执行完一次循环体语句,再进行判断,如果满足条件继续循环,不满足条件则执行后续语句。
3.循环应用实例
例1:计数循环
#include<stdio.h>
int main()
{
int count=10;
while(count>=0)
{
printf("%d ",count);
count --;
}
printf("发射!\n");
return 0;
}
运行结果:
例2:猜数游戏
算法分析:
① 计算机随便想一个数,记在变量number中
② 有一个负责计次数的变量count
③ 用户输入一个数字a
④ 判断a与number的大小,对用户进行提示
⑤ 不相等则循环③④,相等则结束猜数。
代码分析:
① 要产生一个1到100的随机整数,需要的代码是:
srand(time(0));
int number=rand()%100+1;
并且需要添加头文件:
#include<stdlib.h>
#include<time.h>
② 要实现算法,至少要进行一次猜数,也就是这里需要使用的是do while循环。
完整代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int number=0;
int count = 0;
int a=0;
srand(time(0));
number=rand()%100+1;
printf("我已经想好一个1到100之间的数了");
do
{
printf("请猜一下这个数是:");
scanf("%d",&a);
count++;
if(a>number)
printf("你猜的数太大了");
else if(a<number)
printf("你猜的数太小了");
}while(a!=number);
printf("恭喜你猜对了!");
return 0;
}
例3:计算平均数
程序需要读入一系列的正整数,最后输入-1表示输入结束,然后程序计算这些输入的值得平均数,输出输入数字的个数以及平均数
算法分析:
① 这里不需要记下所有的数,只需要用一个变量sum进行求和
② 另外需要一个变量count进行计算
③ 平均数计算只需要用sum除以count既可
④ 需要一个循环进行输入的判断以及求和、计数等
代码实现:
#include<stdio.h>
int main()
{
int number;
int sum=0;
int count=0;
scanf("%d",&number);
while(number!=-1)
{
sum +=number;
count ++;
scanf("%d",&number);
}
printf("%f\n",1.0*sum/count);
return 0;
}
例4:整数的逆序
算法分析:
①将一个整数分解为各个位数的数字:
对一个整数进行%10操作,得到个位数;
对一个整数进行/10操作,就去掉了个位数;
对上面的结果进行%10操作,就得到十位数……
②按照相反的位序输出各个位数的值,也就是依次得到个位进行输出,得到十位进行输出,得到百位进行输出……
代码实现如下:
#include<stdio.h>
int main()
{
int x;
int digit;
int ret=0;
scanf("%d",&x);
while(x>0)
{
digit = x%10;
printf("%d",digit);
x/=10;
}
return 0;
}