1、1第一章算法初步检测( A)(时间:90 分钟 满分:120 分)一、选择题(本大题共 10小题,每小题 5分,共 50分 .在每小题给出的四个选项中,只有一项是符合题目要求的)1下列关于算法的叙述不正确的是( )A.在任何数值计算或非数值计算的过程中所采取的方法和步骤,都可称之为算法B.计算机解决问题的方法和步骤,就是计算机的算法C.算法并不给出问题的精确的解,只是说明怎样才能得到解D.算法中执行的步骤可以是无限次数的,能无休止地执行下去解析 本题主要考查算法的基本概念和特点 .算法就是解决问题的步骤,可以是数值或者非数值操作,它必须是有限的步骤,不能无休止地执行下去,必须“有始有终” .答
2、案 D2“x=4+5”,“x=x-1”是某一程序中先后相邻的两个语句,那么下列说法正确的是( ) x=4+5的意思是 x=4+5=9,此式与算术中的式子是一样的; x=4+5是将数值 9赋给 x; x=4+5可以写成 4+5=x; x=x-1语句在执行时,“ =”右边 x的值是 9,执行后左边 x的值是 8.A.B.C.D.解析 在 x=4+5中,是先计算 4+5,再用其结果 9代替左边的 x,由于赋值号“ =”左边与右边的含义不一样,因而 x=4+5不能写成 4+5=x.答案 B3下列程序运行的结果是( )a=1; b=2;c=3;a=b;b=c;c=a;abcA.1,2,3 B.2,3,1
3、2C.2,3,2 D.3,2,1解析 由已知得 a=1,b=2,c=3a=2b=3c=2,故 a,b,c的值分别是 2,3,2.答案 C4对于下列算法,a=input(“a=”);if a5b=4;elseif a0,a=0.81 不成立,输出 0.8.第二次: a=1.28,故 a=3;a=3不满足 a8,故 a=5;a=5不满足 a8,故 a=7;a=7不满足 a8,故 a=9,满足 a8,终止循环 .输出 a=9.答案 915用秦九韶算法计算多项式 f(x)=3x6+4x5+5x4+6x3+7x2+8x+1当 x=0.4时的值时,需要做乘法和加法的次数分别是 . 解析 由于 f(x)=(
4、3x+4)x+5)x+6)x+7)x+8)x+1,因此需做乘法 6次,加法 6次 .6答案 6,6三、解答题(本大题共 5小题,共 45分 .解答时应写出文字说明、证明过程或演算步骤)16(8分)分别用更相减损之术与辗转相除法求 161与 253的最大公约数 .解 更相减损之术:(161,253)(161,92)(69,92)(69,23)(46,23)(23,23) .故 161与 253的最大公约数为 23.辗转相除法:253161=1(余 92),16192=1(余 69),9269=1(余 23),6923=3(余 0),故 161与 253的最大公约数为 23.17(8分)如图所示的
5、程序框图 .(1)试写出该程序框图的功能;(2)若输出的值为 3,求输入 x的值 .解 (1)该程序框图的功能是输入自变量 x的值,输出函数 y .=22-5,0,-1,0 对应 的函数 值(2)若输出的值为 3,当 x0时,2 x2-5=3,解得 x=2(舍去)或 x=-2;当 x0 时, x-1=3,解得 x=4.综上所得 x=-2或 x=4.18(9分)老师将一次测验的成绩分为 3个等级:85 100为“A”;6084 为“B”;60 以下为“C” .试用条件分支结构的框图表示某个学生成绩等级的算法 .解 程序框图如图所示 .19(10分)已知如图所示的程序框图(未完成) .设当箭头 a
6、指向时,输出的结果为 s=m,当箭头a指向时,输出的结果为 s=n,求 m+n的值 .7解 当箭头 a指向时, s和 i的结果如下:s0+1 0+2 0+3 0+4 0+5i2 3 4 5 6因此, s=m=5.当箭头 a指向时,输出 s和 i的结果如下:s0+1 0+1+2 0+1+2+3 0+1+2+3+4 0+1+2+3+4+5i2 3 4 5 6因此, s=n=1+2+3+4+5=15.故 m+n=20.20(10分)相传古代印度国王在奖赏他聪明能干的宰相达依尔(国际象棋发明者)时,问他需要什么,达依尔说:“国王只要在国际象棋棋盘的第一格子上放一粒麦子,第二格子上放二粒,第三格子上放四粒,以后按比例每一格加一倍,一直放到第 64格(国际象棋棋盘格数是 88=64),我就感恩不尽,其他什么也不要了 .”国王想:“这才有多少,还不容易!”于是让人扛来一袋小麦,但不到一会儿就用完了,再来一袋很快又没有了,结果全印度的粮食用完还不够,国王很奇怪,怎么也算不清这笔账 .请你设计一个程序框图表示其算法,来帮国王计算一下需要多少粒小麦,并用算法语句编写程序 .解 程序框图如图所示 .8程序如下:i=0;S=0;while i64S=S+2i;i=i+1;endprint(%io(2),S);