模拟学习教案.pptx
《模拟学习教案.pptx》由会员分享,可在线阅读,更多相关《模拟学习教案.pptx(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、会计学1模拟模拟第一页,编辑于星期二:点 五十一分。2第1页/共30页第二页,编辑于星期二:点 五十一分。3 7.1 模拟概述应用计算机程序设计模拟自然界的随机现象,模拟特定条件下的操作过程,是程序设计难以把握且颇具魅力的课题之一。根据模拟对象的不同特点,计算机模拟可分为决定性模拟与随机性模拟。决定性模拟是对决定性过程进行的模拟,其模拟的事件 按其固有的规律发生发展。例如运算模拟就是决定性模拟。随机性模拟的对象是随机事件,利用随机数作为参数实施模拟。例如数字模拟(又称数字仿真)。第2页/共30页第三页,编辑于星期二:点 五十一分。4 运算模拟是按整数的四则运算法则进行模拟操作,最后得出模拟运算
2、的结果。运算模拟是按整数的四则运算法则进行模拟操作,最后得出模拟运算的结果。7.2.1 运算模拟描述 运算模拟,主要是模拟整数逐位乘除的运算过程,求解一些整数计算问题。运算模拟,主要是模拟整数逐位乘除的运算过程,求解一些整数计算问题。在实施乘除运算模拟之前,必须根据参与运算整数的实际设置模拟量,以模拟乘除运算进程中数值的变化,并判定运算是否结束。在实施乘除运算模拟之前,必须根据参与运算整数的实际设置模拟量,以模拟乘除运算进程中数值的变化,并判定运算是否结束。7.2 运算模拟第3页/共30页第四页,编辑于星期二:点 五十一分。51.模拟除法运算 n n除运算模拟框架描述:除运算模拟框架描述:n
3、n输入输入输入输入 n n确定确定确定确定 n nwhile(while(while(while()n n a=c*10+m;/*a=c*10+m;/*a=c*10+m;/*a=c*10+m;/*构造被除数构造被除数构造被除数构造被除数a a a a,m m m m为为为为 */*/*/*/n nb=a/p;/*b=a/p;/*b=a/p;/*b=a/p;/*实施除运算实施除运算实施除运算实施除运算,计算商计算商计算商计算商b */b */b */b */n nprintf(b);printf(b);printf(b);printf(b);n nc=a%p;/*c=a%p;/*c=a%p;/*
4、c=a%p;/*试商得余数试商得余数试商得余数试商得余数c*/c*/c*/c*/n n n n 其中其中,与与 必须根据模拟除必须根据模拟除运算问题的具体实际确定。运算问题的具体实际确定。第4页/共30页第五页,编辑于星期二:点 五十一分。6n n乘运算模拟框架描述:乘运算模拟框架描述:n n输入输入输入输入 n n确定确定确定确定 n nwhile(while(while(while()n n k=k+1;k=k+1;k=k+1;k=k+1;n n a=w(k)*p+m;/*a=w(k)*p+m;/*a=w(k)*p+m;/*a=w(k)*p+m;/*计算乘积计算乘积计算乘积计算乘积a a
5、a a,m m m m为为为为 */*/*/*/n n w(k)=a%10;/*w(k)=a%10;/*w(k)=a%10;/*w(k)=a%10;/*积积积积a a a a的个位存储到的个位存储到的个位存储到的个位存储到w(k)*/w(k)*/w(k)*/w(k)*/n n m=a/10;/*m=a/10;/*m=a/10;/*m=a/10;/*积积积积a a a a的十位以上作为进位数的十位以上作为进位数的十位以上作为进位数的十位以上作为进位数 */*/*/*/n n n n输出输出输出输出(w(d),w(d-1),w(1);(w(d),w(d-1),w(1);(w(d),w(d-1),w
6、(1);(w(d),w(d-1),w(1);/*/*/*/*高位到低位输出高位到低位输出高位到低位输出高位到低位输出 */*/*/*/n n乘运算模拟的乘运算模拟的,与与 根据模拟乘运算问题的实际确定。根据模拟乘运算问题的实际确定。2.模拟乘法运算第5页/共30页第六页,编辑于星期二:点 五十一分。7n n1.1.n n个个个个1 1被被被被20092009整除问题整除问题整除问题整除问题n n【例【例【例【例7.17.17.17.1】一个由一个由一个由一个由n n n n个个个个1 1 1 1组成的整数能被组成的整数能被组成的整数能被组成的整数能被2009200920092009整除,整除,
7、整除,整除,n n n n至至至至少为多大?少为多大?少为多大?少为多大?n n模拟除运算设计模拟除运算设计模拟除运算设计模拟除运算设计 :n n被除数为被除数为被除数为被除数为a,a,除数除数除数除数p=2009p=2009,每次试商的余数为,每次试商的余数为,每次试商的余数为,每次试商的余数为c c。n n被除数被除数被除数被除数a=c*10+1,a=c*10+1,每次试商所得余数为每次试商所得余数为每次试商所得余数为每次试商所得余数为c=a%2009c=a%2009。n n设置初始值设置初始值设置初始值设置初始值c=1111,n=4c=1111,n=4,进入模拟整除循环。,进入模拟整除循
8、环。,进入模拟整除循环。,进入模拟整除循环。n n循环条件为循环条件为循环条件为循环条件为c0c0。每循环一次,变量。每循环一次,变量。每循环一次,变量。每循环一次,变量n n增增增增1 1。n n若余数若余数若余数若余数c=0,c=0,结束结束结束结束,输出输出输出输出n n的值。的值。的值。的值。7.2.2 n个1的整除问题第6页/共30页第七页,编辑于星期二:点 五十一分。8n n void main()n n int a,c,n;n n c=1111;n=4;/*确定初始值*/n n while(c!=0)n n a=c*10+1;/*构造被除数a*/n n c=a%2009;n+;n
9、 n /*实施除运算,得余数c*/n n printf(至少%d个1.n,n);n n 第7页/共30页第八页,编辑于星期二:点 五十一分。9n n2.2.积为积为积为积为n n个个个个1 1的数字游戏的数字游戏的数字游戏的数字游戏 【例【例【例【例7.27.2】两位计算机爱好者在进行两位计算机爱好者在进行两位计算机爱好者在进行两位计算机爱好者在进行“积为积为积为积为n n个个个个1 1的数字游戏的数字游戏的数字游戏的数字游戏”:其中一位给定一个正整数:其中一位给定一个正整数:其中一位给定一个正整数:其中一位给定一个正整数p(p(约定整数约定整数约定整数约定整数p p为个位数字不是为个位数字不
10、是为个位数字不是为个位数字不是5 5的奇数的奇数的奇数的奇数),另一位寻求正整数,另一位寻求正整数,另一位寻求正整数,另一位寻求正整数q q,使得,使得,使得,使得p p与与与与q q之积为全是之积为全是之积为全是之积为全是1 1组成的组成的组成的组成的整数整数整数整数.n n模拟除运算设计模拟除运算设计模拟除运算设计模拟除运算设计:n n设整数除运算每次试商的被除数为设整数除运算每次试商的被除数为设整数除运算每次试商的被除数为设整数除运算每次试商的被除数为a,a,除数为除数为除数为除数为p p(即给定的正(即给定的正(即给定的正(即给定的正整数)整数)整数)整数),每次试商的商为每次试商的商
11、为每次试商的商为每次试商的商为b b,相除的余数为,相除的余数为,相除的余数为,相除的余数为c c。n n被除数被除数被除数被除数a=c*10+1,a=c*10+1,余数余数余数余数c=a%p,c=a%p,商商商商b=a/pb=a/p即为所寻求数即为所寻求数即为所寻求数即为所寻求数q q的一位。的一位。的一位。的一位。若余数若余数若余数若余数c=0,c=0,结束;否则,继续运算直到结束;否则,继续运算直到结束;否则,继续运算直到结束;否则,继续运算直到c=0c=0为止。为止。为止。为止。第8页/共30页第九页,编辑于星期二:点 五十一分。10nnvoid main()void main()vo
12、id main()void main()nn int a,b,c,p,n;int a,b,c,p,n;int a,b,c,p,n;int a,b,c,p,n;nnprintf(nprintf(nprintf(nprintf(n请输入整数请输入整数请输入整数请输入整数p:);p:);p:);p:);nnscanf(%d,&p);scanf(%d,&p);scanf(%d,&p);scanf(%d,&p);nnprintf(nprintf(nprintf(nprintf(n寻求的整数寻求的整数寻求的整数寻求的整数q=);q=);q=);q=);nnn=3;c=111;/*n=3;c=111;/*n
13、=3;c=111;/*n=3;c=111;/*确定初始值确定初始值确定初始值确定初始值 */*/*/*/nnwhile(c!=0)while(c!=0)while(c!=0)while(c!=0)nn a=c*10+1;a=c*10+1;a=c*10+1;a=c*10+1;nn c=a%p;b=a/p;n+;/*c=a%p;b=a/p;n+;/*c=a%p;b=a/p;n+;/*c=a%p;b=a/p;n+;/*实施除运算模拟实施除运算模拟实施除运算模拟实施除运算模拟 */*/*/*/nn printf(%d,b);/*printf(%d,b);/*printf(%d,b);/*printf(
14、%d,b);/*输出整数输出整数输出整数输出整数q q q q的一位数的一位数的一位数的一位数 */*/*/*/nnprintf(nprintf(nprintf(nprintf(n乘积乘积乘积乘积p*qp*qp*qp*q为为为为%d%d%d%d个个个个1.n,n);1.n,n);1.n,n);1.n,n);nn 第9页/共30页第十页,编辑于星期二:点 五十一分。117.2.3 7.2.3 尾数前移问题尾数前移问题尾数前移问题尾数前移问题nn【例【例7.37.3】整数整数n n的尾数是的尾数是9 9,把尾数,把尾数9 9移到其前面移到其前面(成为成为最高位最高位)后所得的数为原整数后所得的数为
15、原整数n n的的3 3倍,原整数倍,原整数n n至少为多至少为多大大?nn这是这是这是这是数学通报数学通报数学通报数学通报上发表的一个具体的尾数前移问题。上发表的一个具体的尾数前移问题。上发表的一个具体的尾数前移问题。上发表的一个具体的尾数前移问题。我们要求解一般的尾数前移问题我们要求解一般的尾数前移问题我们要求解一般的尾数前移问题我们要求解一般的尾数前移问题:nn整数整数整数整数n n n n的尾数的尾数的尾数的尾数q(q(q(q(限为一位限为一位限为一位限为一位)移到移到移到移到n n n n的前面所得的数为的前面所得的数为的前面所得的数为的前面所得的数为n n n n的的的的p p p
16、p倍倍倍倍,记记记记为为为为n(q,p)n(q,p)n(q,p)n(q,p)。这里约定。这里约定。这里约定。这里约定。nn对于指定的尾数对于指定的尾数对于指定的尾数对于指定的尾数q q q q与倍数与倍数与倍数与倍数p,p,p,p,求解求解求解求解n(q,p)n(q,p)n(q,p)n(q,p)。nn下面试用模拟除运算与模拟乘运算两种方法设计求解。下面试用模拟除运算与模拟乘运算两种方法设计求解。下面试用模拟除运算与模拟乘运算两种方法设计求解。下面试用模拟除运算与模拟乘运算两种方法设计求解。第10页/共30页第十一页,编辑于星期二:点 五十一分。121.1.模拟整数除法模拟整数除法模拟整数除法模
17、拟整数除法nn首先第一位数首先第一位数q q除以除以p(p(注意约定注意约定qp),qp),余数为余数为c,c,商为商为b b。输出数字。输出数字b b作作为所求为所求n n的首位数。的首位数。nn进入模拟循环,当余数进入模拟循环,当余数c=0c=0且商且商b=qb=q时时结束,因而循环条件为结束,因而循环条件为c!=0|b!=qc!=0|b!=q。nn在循环中计算被除数在循环中计算被除数a=c*10+ba=c*10+b,试商,试商得得b=a/p,b=a/p,输出作为所求输出作为所求n n的一位的一位b b;求得余数求得余数c=a%pc=a%p;然后;然后b b与与c c构建下一构建下一轮试商
18、的被除数,依此递推。轮试商的被除数,依此递推。第11页/共30页第十二页,编辑于星期二:点 五十一分。13n nvoid main()void main()void main()void main()n n int a,b,c,p,q;int a,b,c,p,q;int a,b,c,p,q;int a,b,c,p,q;n n scanf(%d,%d,&q,&p);/*scanf(%d,%d,&q,&p);/*scanf(%d,%d,&q,&p);/*scanf(%d,%d,&q,&p);/*输入数据输入数据输入数据输入数据q,p*/q,p*/q,p*/q,p*/n n b=q/p;c=q%p;
19、/*b=q/p;c=q%p;/*b=q/p;c=q%p;/*b=q/p;c=q%p;/*确定初始条件确定初始条件确定初始条件确定初始条件 */*/*/*/n n printf(n(%d,%d)=%d,q,p,b);/*printf(n(%d,%d)=%d,q,p,b);/*printf(n(%d,%d)=%d,q,p,b);/*printf(n(%d,%d)=%d,q,p,b);/*输出输出输出输出n n n n的首位的首位的首位的首位b*/b*/b*/b*/n n while(c!=0|b!=q)/*while(c!=0|b!=q)/*while(c!=0|b!=q)/*while(c!=0
20、|b!=q)/*试商循环处理试商循环处理试商循环处理试商循环处理 */*/*/*/n n a=c*10+b;a=c*10+b;a=c*10+b;a=c*10+b;n n b=a/p;c=a%p;/*b=a/p;c=a%p;/*b=a/p;c=a%p;/*b=a/p;c=a%p;/*模拟整数除法模拟整数除法模拟整数除法模拟整数除法 */*/*/*/n n printf(%d,b);printf(%d,b);printf(%d,b);printf(%d,b);n n n n 第12页/共30页第十三页,编辑于星期二:点 五十一分。14n n设置存储数设置存储数设置存储数设置存储数n n n n的的
21、的的w w w w数组。数组。数组。数组。n n从从从从w(1)=qw(1)=qw(1)=qw(1)=q开始,乘数开始,乘数开始,乘数开始,乘数p p p p与与与与n n n n的每一位数字的每一位数字的每一位数字的每一位数字w(i)w(i)w(i)w(i)相乘后加进相乘后加进相乘后加进相乘后加进位数位数位数位数m,m,m,m,得得得得a=w(k)*p+m;a=w(k)*p+m;a=w(k)*p+m;a=w(k)*p+m;n n积积积积a a a a的十位以上的数作为下一轮的进位数的十位以上的数作为下一轮的进位数的十位以上的数作为下一轮的进位数的十位以上的数作为下一轮的进位数 m=a/10;
22、m=a/10;m=a/10;m=a/10;n n而而而而a a a a的个位数此时需赋值给乘积的下一位的个位数此时需赋值给乘积的下一位的个位数此时需赋值给乘积的下一位的个位数此时需赋值给乘积的下一位w(i+1)=x%10w(i+1)=x%10w(i+1)=x%10w(i+1)=x%10。n n当计算的被除数当计算的被除数当计算的被除数当计算的被除数a a a a为尾数为尾数为尾数为尾数q q q q时结束。时结束。时结束。时结束。2.模拟整数乘法第13页/共30页第十四页,编辑于星期二:点 五十一分。15n nvoid main()void main()void main()void main
23、()n n int a,m,j,k,p,q,w100;int a,m,j,k,p,q,w100;int a,m,j,k,p,q,w100;int a,m,j,k,p,q,w100;n n scanf(%d,%d,&q,&p);scanf(%d,%d,&q,&p);scanf(%d,%d,&q,&p);scanf(%d,%d,&q,&p);n n for(j=1;j100;j+)wj=0;/*for(j=1;j100;j+)wj=0;/*for(j=1;j100;j+)wj=0;/*for(j=1;j=1;j-)/*for(j=k-1;j=1;j-)/*for(j=k-1;j=1;j-)/*fo
24、r(j=k-1;j=1;j-)/*从高位到低位打印从高位到低位打印从高位到低位打印从高位到低位打印 */*/*/*/n n printf(%d,wj);printf(%d,wj);printf(%d,wj);printf(%d,wj);n n printf(n printf(n printf(n printf(n 共共共共%d%d%d%d 位。位。位。位。n,k-1);n,k-1);n,k-1);n,k-1);n n 第14页/共30页第十五页,编辑于星期二:点 五十一分。167.2.5 7.2.5 求圆周率求圆周率求圆周率求圆周率nn关于圆周率关于圆周率关于圆周率关于圆周率的计算的计算的计算
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模拟 学习 教案
限制150内