1、1把一个n次多项式f(x)anxnan1xn1a1xa0改写成如下形式: f(x)anxnan1xn1a1xa0 (anxn1an1xn2a1)xa0 (anxn2an1xn3a2)xa1)xa0 (anxan1)xan2)xa1)xa0,求多项式的值时,首先计算最内层括号内一次多项式的值,然后由内向外逐层计算一次多项式的值 这样通过一次式的反复运算,逐步得出高次多项式的值的方法称作 ,秦九韶算法,2进位制是人们为了计数和运算方便而约定的记数系统“满十进一”就是十进制,“满二进一”就是二进制,“满k进一”就是 ,k进制的基数是k,因此k进制需要使用 数字 3若k是一个大于1的整数,以k为基数的
2、k进制数可以表示为一串数字连写在一起的形式: anan1a1a0(k)(0ank,0an1,a1,a0k) 其中右下角括号内的数字k表明此数是k进制数,十进制的基数不标注,k进制,k个,4十进制数与k进制数可以相互转换 (1)把k进制数化为十进制数的方法是:先把这个k进制数写成用各位上的数字与k的幂的乘积之和的形式,再按照十进制数的运算规则计算出结果如anan1a2a1a0(k) .其中要注意的是,k的幂的最高次数应是该k进制的位数减去1,然后逐个减小1,最后是0次幂 (2)将十进制化为k进制数的方法叫 即用k连续去除该十进制数或所得的商,直到商是零为止,然后把每次所得的余数倒着排成一列,就是
3、相应的k进制数例如,把十进制数化为二进制数的方法是除2取余法,anknan1kn1a2k2a1ka0,除k取余法,重点:(1)秦九韶算法的原理、算法思想、算法设计 (2)进位制的概念及其表示,进位制的相互转换及算法设计 难点:(1)递推关系的算法设计 (2)k进制数表示方法的理解及k进制数与十进制数之间相互转换,(2)f(x)anxnan1xn1a1xa0当xx0时,求函数值f(x0)的算法设计 程序框图:,程序语句: INPUT “n”;ni0 WHILE in INPUT “ai”;a(i)ii1 WEND INPUT “x0”;xi1va(n),WHILE invv*xa(ni)ii1
4、WEND PRINT v END.,说明:也可以把输入f(x)的系数ak,放在循环体内,用一次循环实现 INPUT “n,an,x”;n,v,x in1 WHILE i0 INPUT “ai”;a vv*xa ii1 WEND PRINT v END,2进位制的理解与程序设计 (1)进位制及其转换是计算机的基础知识,它有助于了解计算机的工作原理,要切实弄明白 (2)二进制数只用0和1两个数字,这正好和电路的“通”和“断”两种状态相对应,因此计算机内部都使用二进制,计算机在进行运算时,都是先将输入的十进制数转化为二进制数进行运算和存储后,再转换为十进制数输出,(3)k进制数转换为十进制数的方法是
5、: anan1a2a1a0(k)anknan1kn1a2k2a1ka0我们用ta MOD 10来求k进制数a除以10的余数即此数的个位,用aa10来记录a除以10的整数商故把k进制数a(共有n位)转化为十进制数b的算法程序为:,INPUT “a,k,n”;a,k,ni1b0 ta MOD 10 DO bbt*k(i1) aa10 ta MOD 10 ii1 LOOP UNTIL in PRINT b END,其当型循环程序为: INPUT “a,k,n”;a,k,n i1 b0 ta MOD 10 WHILE in bbt*k(i1) aa10 ta MOD 10 ii1,WEND PRINT
6、 b END,程序框图,依据此程序: 第1轮(i1)循环结束时ba0. 第2轮(i2)循环结束时ba1ka0. 第j轮(ij)循环结束时,baj1kj1aj2kj2a1ka0. 最后结束时,banknan1kn1a1ka0.,(4)将一个十进制数a化为k进制数b的步骤: 第一步:将给定的十进制整数除以基数k,余数便是等值的k进制的最低位 第二步:将上一步的商再除以基数k,余数便是等值的k进制数的次低位第三步:重复第二步,直到最后所得的商等于0为止各次除得的余数,便是k进制各位的数,最后一次的余数是最高位即除k取余法,算法程序为: INPUT “a,k”;a,k b0 i0 DO qak ra
7、MOD k bbr*10i ii1 aq,LOOP UNTIL q0 PRINT b END 用WHILE语句编程如下:,(1)十进制数a化为k进制数b的程序语句 INPUT “a,k”;a,k b0 i0 q1 WHILE q0,qak 求a除以k的整数商 ra MOD k 求a除以k的余数 bbr*10i 把余数依次从右到左排列得到k进制数b ii1 aq WEND PRINT b END,(5)k进制数的性质: 在k进制中,具有k个数字符号;例如十进制,有0,1,2,3,4,5,6,7,8,9十个数字十六进制有09和A、B、C、D、E、F共十六个数字 在k进制中,由低位向高位是按“逢k进
8、一”的规则进行计数例如十进制,逢“十”进一,二进制逢“二”进一 (6)非十进制数之间的转化一般应先转化成十进制数,再将这个十进制数转化为要化成的另一种进位制数,例1 用秦九韶算法求多项式f(x)1x0.5x20.16667x30.04167x40.00833x5在x0.2时的值,解析 可根据秦九韶算法原理,将所给多项式改写,然后由内到外逐次计算即可 f(x)1x0.5x20.16667x30.04167x40.00833x5(0.00833x0.04167)x0.16667)x0.5)x1)x1, 而x0.2,所以有 v0a50.00833,v1v0xa40.04, v2v1xa30.1586
9、7,v3v2xa20.46827, v4v3xa10.90635,v5v4xa00.81873. 即f(0.2)0.81873.,点评 利用秦九韶算法计算多项式的值,关键是能正确地将所给多项式改写,然后由内向外逐次计算,由于后项计算需用前项的结果,故应认真、细心,确保中间结果的准确性,求多项式f(x)x55x410x310x25x1当x2时的值,解析 先改写多项式,再由内向外计算 f(x)x55x410x310x25x1 (x5)x10)x10)x5)x1. 而x2,所以有: v01,v1v0xa41(2)53, v2v1xa33(2)104, v3v2xa24(2)102, v4v3xa12
10、(2)51, v5v4xa01(2)11. 即f(2)1.,例2 1.把二进制数1110011(2)化为十进制数 2将8进制数314706(8)化为十进制数,并且编写一个实现该算法的程序,解析 1.先把二进制数写成不同位上数字与2的幂的乘积之和的形式,再按照十进制数的运算规则求出结果 1110011(2)1261251240230221211115. 2利用把k进制数化为十进数的一般方法就可以将8进制数314706(8)化为十进制数,然后根据该算法,应用循环结构可以设计程序 314706(8)385184483782081680104902.所以,化为十进制数是104902. 8进制数3147
11、06(8)中共有6位,因此可令a314706,k8,n6,设计程序如下:,程序运行时输入314706,8,6. 点评 上述程序可以把任何一个k进制数a(共有n位)转化为十进制数b,只要输入相应的a,k,n的值即可,把7进制数24005(7)化为十进制数的结果为_ 答案 2401 解析 只需将该数写成其各位上的数字与7的幂的乘积之和的形式,再计算即可化为十进制数 24005(7)27447307207152401, 故七进制数24005(7)化成十进制数为2401.,例3 1.把十进制数89化为二进制数 2将十进制数21化为五进制数 解析 1.根据“满二进一”的原则,可以用2连续去除89或所得商
12、,然后取余数即除2取余法,用竖式表示为:891260251241230220211201011001(2),2同1用除5取余法可得:,将十进制数22化为三进制数,并且编写一个实现该算法的程序,解析 用除3取余法可得:此算法程序为:(把十进制数a化为k进制数) INPUT a,k i0 b0 DO cak ra MOD k bbr*10i,ii1 ac LOOP UNTIL c0 PRINT b END 运行时,输入a22,k3.,例4 用秦九韶算法求多项式f(x)8x75x63x42x1当x2时的函数值f(2),解析 本例中,有几项不存在,可视这些项的系数为0,如含x5的项可记作0x5. f(
13、x)8x75x60x53x40x30x22x1(8x5)x0)x3)x0)x0)x2)x1 按照由内及外的顺序,依次计算一次多项式当x2时的值: v08; v48720174; v182521; v517420348; v2212042; v634822698; v3422387; v7698211397. f(2)1397.,例5 将五进制数434化为二进制数 解析 先将五进制数化为十进制数 434(5)452351450119, 再将十进制数119化为二进制数则1191110111(2) 所以434(5)1110111(2),点评 1.k进制之间相互转化可以借助十进制作跳板来进行 2将十进
14、制与k进制相互转换的算法结合在一块,就能实现非十进制数之间的转换了,一、选择题 1三位七进制的数表示的最大的十进制的数是( ) A322 B332 C342 D352 答案 C 解析 三位七进制数中最大的为666(7)672676342.,2下列各数转化成十进制后最小的数是( ) A111 111(2) B210(6) C1 000(4) D81(9) 答案 A 解析 将它们都化为十进制数为:A表示63,B表示78,C表示64,D表示73.,3已知一个k进制的数132与十进制的数30相等,那么k等于 ( ) A7或4 B7 C4 D都不对 答案 C 解析 由k23k230得,k4或k7(舍去)
15、,4类似于十进制中逢10进1,十二进制的进位原则是逢12进1,采用数字0,1,2,9和字母M,N共12个计数符号,这些符号与十进制的对应关系如下表:,例如,由于5633122101211,所以十进制中563在十二进制中就被表示为3MN,那么十进制中的2010在十二进制中被表示为 ( ) A11N6 B6N11 C12N4 D1N24 答案 A 解析 20101123112211126(11N6)(12),二、解答题 5已知一个5次多项式为f(x)5x52x43.5x32.6x21.7x0.8.用秦九韶算法求这个多项式当x5时的值写出其运算过程,解析 根据秦九韶算法,把多项式改写成如下形式: f(x)(5x2)x3.5)x2.6)x1.7)x0.8 按照从内到外的顺序,依次计算一次多项式当x5时的值 x5 a55 v0a55; a42 v1v0xa455227; a33.5 v2v1xa32753.5138.5;,a22.6 v3v2xa2138.552.6689.9; a11.7 v4v3xa1689.951.73451.2; a00.8 v5v4xa03451.250.817255.2. 所以,当x5时,多项式的值等于17255.2.,