1、算法案例班别 姓名 学号 成绩 1. (1)将 101111011(2) 转化为十进制的数; (2 )将 53(8) 转化为二进制的数.2. 用冒泡排序法将下列各数排成一列:8,6 ,3,18,21,67 ,54.并写出各趟的最后结果及各趟完成交换的次数.3. 用秦九韶算法写出求 f(x)=1+x +0.5x2+0.16667x3+0.04167x4+0.00833x5在 x=0.2 时的值的过程.4. 我国算经十书之一孙子算经中有这样一个问题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二.问物几何?答曰:二十三.”你能用程序解决这个问题吗?5. 我国古代数学家张邱建编张邱建算经
2、中记有有趣的数学问题:“今有鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一凡百钱,买鸡百只,问鸡翁、母、雏各几何?”你能用程序解决这个问题吗?6. 写出用二分法求方程 x3x1=0 在区间1 ,1.5上的一个解的算法(误差不超过0.001) ,并画出相应的程序框图及程序. 参考答案1. 解:(1)101111011 (2) =128+027+126+125+124+123+022+121+1=379.(2 ) 53(8) =581+3=43.余 数432110521222222011010153 (8) =101011(2 ) .2. 每一趟都从头开始,两个两个地比较,若前者小,则两数位置不变
3、;否则,调整这两个数的位置.解:第一趟的结果是:6 3 8 18 21 54 67完成 3 次交换.第二趟的结果是:3 6 8 18 21 54 67完成 1 次交换.第三趟交换次数为 0,说明已排好次序,即 3 6 8 18 21 54 67.3. 先把函数整理成f(x)= (0.00833 x+0.04167)x +0.16667)x+0.5)x+1)x+1,按照从内向外的顺序依次进行. x=0.2a5=0.00833 V0=a5=0.008333a4=0.04167 V1=V0x+a4=0.04a3=0.016667 V2=V1x+a3=0.15867a2=0.5 V3=V2x+a2=0
4、.46827 a1=1 V4=V3x+a1=0.90635a0=1 V5=V4x+a0=0.81873f( 0.2)=0.81873.4. 设物共 m 个,被 3,5,7 除所得的商分别为 x、y、z,则这个问题相当于求不定方程的正整数解.2,zyxm 应同时满足下列三个条件:(1)m MOD 3=2;(2)m MOD 5=3;(3 ) m MOD 7=2.因此,可以让 m 从 2 开始检验,若 3 个条件中有任何一个不成立,则m 递增 1,一直到 m 同时满足三个条件为止 .程序:m=2f=0WHILE f=0IF m MOD 3=2 AND m MOD 5=3AND m MOD 7=2 T
5、HENPRINT “物体的个数为:” ;mf=1ELSEm=m+1END IFWENDEND5.设鸡翁、母、雏各 x、y 、z 只,则 , ,1035zyx由,得 z=100xy, 代入,得 5x+3y+ =100,37x+4y=100. 求方程的解,可由程序解之.程序:x=1y=1WHILE x=14WHILE y=25IF 7*x+4*y=100 THENz=100 xyPRINT “鸡翁、母、雏的个数别为:” ;x,y,zEND IFy=y+1WEND x=x+1y=1WENDEND(法二)实际上,该题可以不对方程组进行化简,通过设置多重循环的方式得以实现.由、可得 x 最大值为 20,
6、y 最大值为 33,z 最大值为 100,且 z 为 3 的倍数.程序如下:x=1y=1z=3WHILE x=20WHILE y=33WHILE z=100IF 5*x+3*y+z/3=100 ANDx+y+z=100 THENPRINT “鸡翁、母、雏的个数分别为:” ;x、y、zEND IFz=z+3WENDy=y+1z=3WENDx=x+1y=1WENDEND6. 用二分法求方程的近似值一般取区间a,b具有以下特征:f(a)0,f (b)0. 由于 f(1)=1 311=10 ,f(1.5 )=1.5 31.51=0.8750,所以取1,1.5中点 =1.25 研究,以下同求 x22=0 的根的方法.25.相应的程序框图是:开 始a=1b=1.5c=0.001是是是否否否faaa()= -1fxxx()= -1fx()=0?fafx()() 033x=ab+2ax= bx=ab - c?输 出 x程序:a =1b=1.5c=0.001DOx=(a+b)/2f(a)=a 3a1f(x)= x 3x1IF f(x)=0 THENPRINT “x=”;xELSEIF f(a ) *f(x )0 THENb=xELSEa=xEND IFEND IFLOOP UNTIL ABS(ab)=cPRINT “方程的一个近似解 x=”;xEND高考*试题 库