表达式1;
while (表达式2) {
for的循环体语句;
表达式3;
}
比如说来看这道题
从键盘输入一批学生的成绩,计算平均成绩,并统计不及格学生的人数。
相较于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语句的核心代码
👍一目了然👍
我们可以确定while循环条件
- 不知道输入数据的个数,无法事先确定循环个数;
- 用一个特殊的数据作为正常输入数据的结束标志,比如说我们上面用负数作为结束统计标志✅
比如说这个烦人的兔子衍生问题/oj上错了三次的我😭
#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;
}
这让我想起了前段时间我做过的水仙花数那道题
当时用的for循环这样说
现在我们可以尝试用一下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;
}
就这样吧我累了😭