全站搜索未启用
跳到主要内容

文本四:while循环语句

1.while语句格式和功能

while (<表达式> )<语句>

  

2.while循环语句的执行过程

(1)计算循环头部中圆括号内表达式的值,假定其值为M;

(2)若M的值为非0,则执行循环体,否则结束整个循环的执行;

(3)循环体执行结束后转向第1步,继续执行下一次循环。

while循环语句的格式举例

(1) while (x<=0) scanf("%d",&x);

(2) while (1) {s+=i*i; i++; if(s>50) break;}

//s=1,5,14,30,55

(3) while(i++<N) {

x=rand()%99+1;

if(x%2==0) c2++;

if(x%3==0) c3++;

if(x%5==0) c5++;

}

//对随机产生的N个正整数,统计被2、3、5整除的个数

带有while循环的程序举例

#include<stdio.h>

#include<stdlib.h>

void main()

{

int i=10;

while(i>0) {

int a,k;

a=rand()%189+11;

for(k=2; k*k<=a; k++)

if(a%k==0) break;

if(k*k>a) {printf("%d ",a); i--;}

}

printf("\n");

}

程序功能:随机产生出10个11~199之间的素数并显示出

来。

149 17 113 83 73 61 191 179 163 197

使用while循环编程举例

编程举例1:编一程序求出满足不等式 的最小n值。

分析:对于和式中的每个数据项,对应的通式为1/i,i=1、2、...、n。设循环变量为i,它应从1开始取值,每次增加1,直到和式的值不小于5为止,此时的i值就是所求的n值;设累加变量为s,初值为0,在循环体内应把1/i的值累加到s上。

#includestdio.h

void main()

{

int i=1; double s=0;

while(s<5) s+=1.0/i++;

printf("n=%d s=%Lf\n",i-1,s);

} //n=83 s=5.002068

编程举例2:编写一个程序,采用辗转相除法求出两个正整数的最大公约数。

分析:设两个正整数分别为a和b,a除以b的整余数用r表示,若r==0,则表明b能被a整除,则b就是a和b的最大公约数,否则,令b赋给a,r赋给b,再接着上述过程,直到整余数r为0时止,此时的b的值就是原有两个正整数a和b的最大公约数。

#includestdio.h

void main()

{

int a,b,r;

printf("请输入两个正整数:");

scanf("%d %d",&a,&b);

while(a<=0 || b<=0) {printf("重输:"); scanf("%d %d",&a,&b);}

printf("正整数%d和%d的最大公约数:",a,b);

r=a%b;

while(r) {

a=b; b=r;

r=a%b;

}

printf("%d\n",b);

}

//请输入两个正整数:40 24

//正整数40和24的最大公约数:8

最后修改: 2019年09月26日 Thursday 18:10