学习笔记-while语句

表达式1;
while (表达式2) {
    for的循环体语句;
    表达式3;
}

68629cbfa32c48fe9145967cf2bca53a.png

比如说来看这道题

 从键盘输入一批学生的成绩,计算平均成绩,并统计不及格学生的人数。

相较于for循环语句我们好像不知道我们要输入多少数据

所以这里就可以借助while条件,最简单的是while(score>=0);当你输入负数时程序就结束了😎,再在while语句里实现不及格人数的统计count++;所以这样讲

# include <stdio.h>
int main (void)
{   int count, num; double score, total; 
    num = 0; total = 0; count=0;
    printf ("Enter scores: \n"); 
    scanf ("%lf", &score);    

     while (score >= 0)

     {         
        total  = total + score; 
        num++; 
        if (score < 60)

        {
             count++; 
         }
         scanf ("%lf", &score);
      }
    if (num != 0)

     {
          printf("Average is %.2f\n", total/num);
          printf("Number of failures is %d\n", count); 
     }

     else

    {
          printf("Average is 0\n");
    }
    return 0;
}

讲到这里我们可以对比一下for循环和while语句的核心代码

8b75d718e89c4a2499f1dbac941549fc.png

👍一目了然👍 

我们可以确定while循环条件

  1. 不知道输入数据的个数,无法事先确定循环个数;
  2. 用一个特殊的数据作为正常输入数据的结束标志,比如说我们上面用负数作为结束统计标志✅

比如说这个烦人的兔子衍生问题/oj上错了三次的我😭

a7a6b308826f44729ac0d39e232e6bed.png

#include<stdio.h>

 int main(void)

{

int n, m, t, count;

m=1;

count=2; 

t=1;

int sum=1;

scanf("%d",&n); 

if(n==1)

{

printf("1");

}

else

{

while(sum<n)

count++; 

t=m; 

m=sum; 

sum+=t;

}

printf("%d", count);

return 0;

}



这让我想起了前段时间我做过的水仙花数那道题

094e14e3b0874280a4e9fdd19dc052fb.png 

当时用的for循环这样说53be1fd3ba39400984155582ad92dae1.png 

现在我们可以尝试用一下while语句

#include <stdio.h>

int main (void)

{

    int i=0;     

    int a,b,c;     

    while( i<=999)  

    {

        a = i/100;   

        b = i/10%10; 

        c = i%10;    

        if (a*a*a+b*b*b+c*c*c == i)  

        {

            printf("水仙花:%d\n",i); 

        }

        i++;   while

    }

    return 0;

}


最后我们来了解一哈这个do-while语句

我们拿while来比较一下

  • while: 先判别条件,再决定是否循环;
  • do-while:先至少循环一次,然后再根据条件决定是否继续循环。

先循环后判断👍

比如说从键盘读入一个整数,统计该数的位数。

int main (void)
{  

int count, number; 
printf ("Enter a number: ");
scanf ("%d", &number) ;
if (number < 0)

{
    number = -number;

count = 0;
do

{
     number = number / 10;         
     count ++;    
}

while (number != 0);
printf ("It contains %d digits.\n", count);
     return 0;
}

 

 

就这样吧我累了😭

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Ryan-%

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

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

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

打赏作者

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

抵扣说明:

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

余额充值