计算机常用算法与程序设计教程 第7章 模拟

计算机常用算法与程序设计教程 第7章 模拟

ID:43811016

大小:387.50 KB

页数:30页

时间:2019-10-15

计算机常用算法与程序设计教程 第7章 模拟_第1页
计算机常用算法与程序设计教程 第7章 模拟_第2页
计算机常用算法与程序设计教程 第7章 模拟_第3页
计算机常用算法与程序设计教程 第7章 模拟_第4页
计算机常用算法与程序设计教程 第7章 模拟_第5页
资源描述:

《计算机常用算法与程序设计教程 第7章 模拟》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第7章模拟1常用算法与程序设计主要内容2常用算法与程序设计7.1模拟概述应用计算机程序设计模拟自然界的随机现象,模拟特定条件下的操作过程,是程序设计难以把握且颇具魅力的课题之一。根据模拟对象的不同特点,计算机模拟可分为决定性模拟与随机性模拟。决定性模拟是对决定性过程进行的模拟,其模拟的事件按其固有的规律发生发展。例如运算模拟就是决定性模拟。随机性模拟的对象是随机事件,利用随机数作为参数实施模拟。例如数字模拟(又称数字仿真)。3常用算法与程序设计运算模拟是按整数的四则运算法则进行模拟操作,最后得出模拟运算的结果。7.2.1运

2、算模拟描述运算模拟,主要是模拟整数逐位乘除的运算过程,求解一些整数计算问题。在实施乘除运算模拟之前,必须根据参与运算整数的实际设置模拟量,以模拟乘除运算进程中数值的变化,并判定运算是否结束。7.2运算模拟4常用算法与程序设计1.模拟除法运算除运算模拟框架描述:输入<原始数据>确定<初始量>while(<循环条件>){a=c*10+m;/*构造被除数a,m为<构造量>*/b=a/p;/*实施除运算,计算商b*/printf(b);c=a%p;/*试商得余数c*/}其中<原始数据>,<初始量>,<循环条件>与<构造量>必须根据

3、模拟除运算问题的具体实际确定。5常用算法与程序设计乘运算模拟框架描述:输入<原始数据>确定<初始量>while(<循环条件>){k=k+1;a=w(k)*p+m;/*计算乘积a,m为<进位数>*/w(k)=a%10;/*积a的个位存储到w(k)*/m=a/10;/*积a的十位以上作为进位数*/}输出(w(d),w(d-1),……,w(1));/*高位到低位输出*/乘运算模拟的<原始数据>,<初始量>,<循环条件>与<进位数>根据模拟乘运算问题的实际确定。2.模拟乘法运算6常用算法与程序设计1.n个1被2009整除问题【例7

4、.1】一个由n个1组成的整数能被2009整除,n至少为多大?模拟除运算设计:被除数为a,除数p=2009,每次试商的余数为c。被除数a=c*10+1,每次试商所得余数为c=a%2009。设置初始值c=1111,n=4,进入模拟整除循环。循环条件为c≠0。每循环一次,变量n增1。若余数c=0,结束,输出n的值。7.2.2n个1的整除问题7常用算法与程序设计voidmain(){inta,c,n;c=1111;n=4;/*确定初始值*/while(c!=0){a=c*10+1;/*构造被除数a*/c=a%2009;n++;}/

5、*实施除运算,得余数c*/printf("至少%d个1.",n);}8常用算法与程序设计2.积为n个1的数字游戏【例7.2】两位计算机爱好者在进行“积为n个1的数字游戏”:其中一位给定一个正整数p(约定整数p为个位数字不是5的奇数),另一位寻求正整数q,使得p与q之积为全是1组成的整数.模拟除运算设计:设整数除运算每次试商的被除数为a,除数为p(即给定的正整数),每次试商的商为b,相除的余数为c。被除数a=c*10+1,余数c=a%p,商b=a/p即为所寻求数q的一位。若余数c=0,结束;否则,继续运算直到c=0为止。

6、9常用算法与程序设计voidmain(){inta,b,c,p,n;printf("请输入整数p:");scanf("%d",&p);printf("寻求的整数q=");n=3;c=111;/*确定初始值*/while(c!=0){a=c*10+1;c=a%p;b=a/p;n++;/*实施除运算模拟*/printf("%d",b);}/*输出整数q的一位数*/printf("乘积p*q为%d个1.",n);}10常用算法与程序设计7.2.3尾数前移问题【例7.3】整数n的尾数是9,把尾数9移到其前面(成为最

7、高位)后所得的数为原整数n的3倍,原整数n至少为多大?这是《数学通报》上发表的一个具体的尾数前移问题。我们要求解一般的尾数前移问题:整数n的尾数q(限为一位)移到n的前面所得的数为n的p倍,记为n(q,p)。这里约定。对于指定的尾数q与倍数p,求解n(q,p)。下面试用模拟除运算与模拟乘运算两种方法设计求解。11常用算法与程序设计1.模拟整数除法首先第一位数q除以p(注意约定q≥p),余数为c,商为b。输出数字b作为所求n的首位数。进入模拟循环,当余数c=0且商b=q时结束,因而循环条件为c!=0

8、

9、b!=q。在循环中计算

10、被除数a=c*10+b,试商得b=a/p,输出作为所求n的一位b;求得余数c=a%p;然后b与c构建下一轮试商的被除数,依此递推。12常用算法与程序设计voidmain(){inta,b,c,p,q;scanf("%d,%d",&q,&p);/*输入数据q,p*/b=q/p;c=q%p;/*确定初始条件

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。