While循环

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
说明:分别用while和do-while语句解决,写出算法即可。
• While算法: 1.读入k; 2.n=0; 3.s=0; 4.当s<=k时,重复执行: (1)n++; (2)s=s+1/n; 5.输出n; 6.结束。
• Do-While算法: 1.读入k; 2.n=0; 3.s=0; 4. 重复执行: (1)n++; (2)s=s+1/n; 当s<=k时; 5.输出n; 6.结束。
用do-while语句编写程序
• 1.判断一个整数n(n>1)是否为质数。(程序) • 2.计算与正整数n相等的二进制代码中有1和 0的个数。(程序) • 3.输入一个正整数n,把它分解成质因子相 乘的形式。例如:24=2*2*2*3(程序) • 4.cantor表:P98页例4-14(程序)
循环结构程序设计实例
//while语句 #include <stdio.h> #include <stdlib.h> #include <math.h> int main () { int n,i; scanf("%d",&n); if (n==2) printf("yes!\n"); else { i=2; while ((i<=sqrt(n))&&(n%i!=0)) i++; if (n%i==0) printf("no"); else printf("yes"); } system("pause"); return 0; }
while循环语句
1.格式: while (表达式) 循环体; 2.功能: 当表达式的值为非0(成立) 时,就不断地执行循环体;
do-while循环语句
1.格式: do 循环体 while (表达式);
2.功能:重复执行循环体,直到表达 式的值为0(不成立)。
条件
N
语句ቤተ መጻሕፍቲ ባይዱ
Y
语句 条件
N
Y
两种循环语句的比较
1.while循环的格式: while (表达式) 循环体; 2.功能:当表达式值非0时,不断执 行循环体。 3. while 循环的流程图、N-S图 (P20页)
While 与for循环语句的互换
int i; for (i=1;i<=10;i++) printf(”%d\n”,i); int i=1;
a=x%10; b=(x/10)%10; c=(x/100)% 10; d=(x/1000 )% 10;
2. 从键盘输入一个整数(0~30000),求其各位数字之 和。(提示:这个整数可以是1位、2位、……、5位)
题目分析: 设键盘输入的整数为x,每次把个位数字分离出来,记 为t,所求各个位数上的数字之和为s。 如:输入的整数为x=3456,则 x( =x/10 ) t ( =x%10 ) s( =s+t ) 初 值 3456 0 第1次分离后 345 6 0+6 第2次分离后 34 5 0+6+5 第3次分离后 3 4 0+6+5+4 第4次分离后 0 3 0+6+5+4+3
练 习 题
1.用while语句编写程序输出faibonacai(费波 那契)数列的前n项。 2.输入一串以“?”结束标志的字符,统计 其中字母和数字的个数。 3.用辗转相除法求两个正整数m和n的最大公 约数。
提示:循环执行:(a,b)的公约数= (b,a %b)的公约数 如:(12,8)—(8,4)—(4,0) 当第二个数为0时,第一个数就是最大公约数。
• • • • • 1.P111:1 2.P107: 实例4-2价格竞猜 3.P109:满载着爱的代码 (程序) 4.P105:实例4-1出租车计费 (程序) 5.P113:3(2) (程序1) (程序2)
两种循环语句的互换
题目:输出1~10的操作。
While语句的算法: 1.初始化i=1; 2.当i<=10时,重复执行: (1)输出i; (2)i++; 3.结束。 Do-While语句的算法: 1.初始化i=1; 2.重复以下操作,当i<=10: (1)输出i; (2)i++; 3.结束。
例4-18:已知s=1+1/2+1/3+……+1/n。对于任意一个整数k,当 n足够大时,s>k。现给出一个整数k(1<=k<=15),要求计算 出一个最小的n,使得s>k。(NOIP2002普及组复赛)
//开始循环之前,一定要给i赋初值。
for循环适合解决重复次 数已知的循环。
while (i<=10) { printf(”%d\n”,i); i++; } While循环语句擅长解决 循环次数未知的循环。
例:判断一个整数n(n>1)是否为质数。
//for语句 #include <stdio.h> #include <stdlib.h> int main () { int i,n,flag; printf("请输入一个数:"); scanf("%d",&n); flag=1; for (i=2; i<=n-1; i++) if (n%i==0) flag=0; if (flag==1) printf("YES!"); else printf("NO!"); system("pause"); return 0; }
• 不同点: 1.while循环是先判断循环条件的值,后执行循环体; do-while循环语句是先执行循环体,后判断循环条件的值; 2.while循环语句的循环体可以一次也不执行(循环条 件一开始就为0);do-while无论循环条件的值是否为0, 总要执行一次循环体,循环体至少执行一次。
• 相同点: 1.都擅长于解决循环次数未知的重复操作; 2.为了使循环能够中止,循环体中一定要有影响表达式 值的操作,否则就是一个死循环; 3.循环体是多条语句时,要写成复合语句的形式。
While循环
一道简单的题
1.从键盘输入一个四位整数,求个、十、百、 千各位数字之和。(顺序结构)
源程序
#include <stdio.h> #include <stdlib.h> int main () { int x,s,a,b,c,d; printf("Please input a number x:"); scanf("%d",&x); a=x%10; b=(x/10)%10; c=(x/100)% 10; d=x/1000; s=a+b+c+d; printf("The sum is:"); printf("%d",s); system("pause"); return 0; }
流 程 图
开始
输入整数x, 初始化S=0
X!=0 ?
N
Y tx %10 ss+t xx /10
输出s值 结束
源 程 序
#include <stdio.h> #include <stdlib.h> int main () { int x,s,t; printf("Please input a number x:"); scanf("%d",&x); s=0; while (x!=0) { t=x%10; s=s+t; x=x/10; } printf("The sum is:"); printf("%d",s); system("pause"); return 0; }
相关文档
最新文档