单重循环应用.ppt

上传人:本田雅阁 文档编号:2309697 上传时间:2019-03-19 格式:PPT 页数:30 大小:171.51KB
返回 下载 相关 举报
单重循环应用.ppt_第1页
第1页 / 共30页
单重循环应用.ppt_第2页
第2页 / 共30页
单重循环应用.ppt_第3页
第3页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《单重循环应用.ppt》由会员分享,可在线阅读,更多相关《单重循环应用.ppt(30页珍藏版)》请在三一文库上搜索。

1、重庆邮电大学计算机科学与技术学院 冯 潇 ,单重循环程序设计,2019/3/19,分为if和ifelse两种 if形式: if(表达式) 语句; ifelse形式 if(表达式) 语句1; else 语句2; 根据表达式的值为0或非0决定程序执行流向,利用if-else语句构建分支结构,2019/3/19,格式,if-else的嵌套,2019/3/19,格式:,多分支处理语句switch,switch(表达式) case 常量表达式1:语句1 ;break; case 常量表达式2:语句2 ;break; case 常量表达式n:语句n ;break; default:语句n+1 ,说明:sw

2、itch语句后表达式的值可以是整型、字符型、枚举型,2019/3/19,主要内容,循环的3种基本表示 自增、自减运算符和逗号表达式 利用循环设计累加和累乘算法 穷举法、递推法和迭代法的实现,2019/3/19,重点 & 难点,循环的3种表示方法 穷举法、递推法和迭代法算法的掌握 经典问题的求解办法,2019/3/19,高斯问题,编写程序求解1+2+3+97+98+99+100 分析 算法思想:累加求和 Step1、定义被加数i1、累加求和量sum0 Step2、当i=100时,执行sum += i; i+= 1; Step3、输出sum,2019/3/19,循环结构,在满足一定条件的范围内,重

3、复执行的程序段称为循环结构 循环结构分为 当型循环 直到型循环,2019/3/19,当型循环,2019/3/19,直到型循环,2019/3/19,循环结构控制语句1-while,while循环 格式: while(表达式) 循环体 ,2019/3/19,while语句求解高斯问题,int main() int i = 1,sum = 0; while(i = 100) sum += i; /*实现累加求和*/ i += 1; /*i+;*/ printf(“sum is %d”,sum); return 0; ,2019/3/19,do-while循环 格式: do 循环体 while(表达式

4、);,循环结构控制语句2do-while,2019/3/19,do-while求解高斯问题,int main() int i=1,sum=0; do sum+=i; i+; while(i=100); printf(“sum is %d”,sum); return 0; ,2019/3/19,循环结构控制语句3for,格式: for(表达式1;表达式2;表达式3) 循环体 表达式1一般为循环变量赋初值,可以为任何表达式类型 表达式2用于判断循环是否结束 表达式3实现循环变量的累加。 3个表达式都可以省略,但分号不能省。 表达式2省略,代表循环条件永远为真,2019/3/19,for求解高斯问题

5、,#include int main() int i=1,sum=0; for(;i=100;i+) sum += i; printf(“sum is %d”,sum); return 0; ,#include void main() int i=1,sum=0; for(;i=100;sum += i,i+); printf(“sum is %d”,sum); ,for(;i=100;i+, sum += i),2019/3/19,三种循环结构的比较,与for语句等价的while语句形式: 表达式1 while(表达式2) 循环体语句 表达式3 ,2019/3/19,与for语句等价的do-

6、while语句形式: 表达式1 do 循环体语句 表达式3 while(表达式2) 三种循环结构原则上可以互换 习惯上,循环次数事先已知的程序用for语句,循环次数未知的用while语句或者do-while语句,2019/3/19,累加器、累乘器的设计,累加器 int i ,sum=0; for(i=1;i=100;i+) sum += i; 累乘器 int i ; double sum=1; for(i=1;i=100;i+) sum *= i;,2019/3/19,猜数游戏,先由计算机“想”一个1到100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来

7、反映猜数者“猜”的水平,否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。 分析: 本题的难点在于如何让计算机“想”一个数 随机函数rand()产生一个0RAND_MAX之间的整数。该函数定义于头文件中 RAND_MAX是定义在头文件中的常量,其值不得大于双字节整数的最大值32767,2019/3/19,猜数游戏用到的库函数,怎样模拟计算机“想”一个数呢? 随机函数rand() 产生0,RAND_MAX 之间的随机数 magic = rand(); #include RAND_MAX在stdlib.h中定义,不大于双字节整数的最大值32767 产生0,b-1 之间的随机数 ma

8、gic = rand() % b; 产生a,a+b-1 之间的随机数 magic = rand() % b + a;,2019/3/19,#include #include void main() int magic; int guess ; int counter; /*记录人猜次数的计数器变量*/ magic = rand() % 100 + 1; counter = 0; /*计数器变量count初始化为0*/ do printf(“Please guess a magic number:“); scanf(“%d“, ,2019/3/19,求最大公约数和最小公倍数,从键盘上输入两个数,

9、求这两个数的最大公约数和最小公倍数 分析: 采用算法一:穷举法 算法关键步骤:使ab,循环找出第一个i满足a*i % b = 0,循环找出一个i满足a % i = 0 & b % i = 0 采用算法二:迭代法 算法关键步骤:使ab,由于a = k*b + r,设m是a和b的最大公约数,那么m也是b和r的最大公约数,如此递推,直到余数r为0,2019/3/19,解法一 穷举法,#include void main() int m,n,i; scanf(“%d,%d“, ,#include void main() int a,b,num1,num2,r,temp; printf(“Please

10、input two numbers:n“); scanf(“%d%d“, ,解法二:迭代法,2019/3/19,穷举法巩固,找出200300之间所有能被3整除的数,2019/3/19,算法一,#include void main() int i; for(i = 200;i = 300;i+) if(i % 3 = 0) printf(“%dn”,i); else continue; ,2019/3/19,break和continue,对for、while、do-while循环进行内部手术 break,退出循环 continue,中断此次循环体的执行,开始下一次 break和continue少用为妙,2019/3/19,算法二,#include void main() int i; for(i = 200;i = 300;i+) i % 3 ? continue : printf(“%dn”,i); ,2019/3/19,作业,6.2、6.6 思考题 从键盘输入一个数,判断该数是否是素数,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1