1、 第一章 算法初步 1 1 算法与程序框图 练习 ( P5) 1、算法步骤:第一步,给定一个正实数 r . 第二步,计算以 r 为半径的圆的面积 2Sr . 第三步,得到圆的面积 S . 2、算法步骤:第一步,给定一个大于 1 的正整数 n . 第二步,令 1i . 第三步,用 i 除 n ,等到余数 r . 第四步,判断 “ 0r ” 是否成立 . 若是,则 i 是 n 的因数;否则, i 不是 n 的因数 . 第五步,使 i 的值增加 1,仍用 i 表示 . 第六步,判断 “ in ” 是否成立 . 若是,则结束算法;否则,返回第三步 . 练习 ( P19) 算法步骤:第一步,给定精确度
2、d ,令 1i . 第二步,取出 2 的到小数点后第 i 位的不足近似值,赋给 a ;取出 2 的到小数点后第 i 位的过剩近似值,赋给 b . 第三步,计算 55bam. 第四步,若 md ,则得到 25 的近似值为 5a ;否则,将 i 的值增加 1,仍用 i 表示 .返回第二步 . 第五步,输出 5a . 程序框图: 习题 1.1 A 组 ( P20) 1、下面是关于城市居民生活用水收费的问题 . 为了加强居民的节水意识,某市制订了以下生活用水收费标准:每户每月用水 未超过 7 m3时,每立方米收费 1.0 元,并加收 0.2 元的城市污水处理费;超过 7m3 的部分,每立方收费1.5
3、元,并加收 0.4 元的城市污水处理费 . 设某户每月用水量为 x m3,应交纳水费 y 元, 那么 y 与 x 之间的函数关系为 1 .2 , 0 71 .9 4 .9 , 7xxy 我们设计一个算法来求上述分段函数 的值 . 算法步骤:第一步:输入用户每月用水量 x . 第二步:判断输入的 x 是否不超过 7. 若是,则计算 1.2yx ; 若不是,则计算 1.9 4.9yx. 第三步:输出用户应交纳的水费 y . 程序框图: 2、算法步骤:第一步,令 i=1, S=0. 第二步:若 i 100 成立,则执行 第三步;否则输出 S. 第三步:计算 S=S+i2. 第四步: i= i+1,返
4、回第二步 . 程序框图: 3、算法步骤:第一步, 输入人数 x,设收取的卫生费为 m 元 . 第二步: 判断 x 与 3 的大小 . 若 x3,则费用为 5 ( 3) 1.2mx ; 若 x 3,则费用为 5m . 第三步:输出 m . 程序框图: B 组 1、算法步骤:第一步, 输入 1 1 1 2 2 2, , , , ,a b c a b c. 第二步: 计算 2 1 1 21 2 2 1b c b cx a b a b . 第三步:计算 1 2 2 11 2 2 1a c a cy a b a b . 第四步:输出 ,xy. 程序框图: INPUT “ a, b=”; a, b sum
5、=a+b diff=a b pro=a*b quo=a/b PRINT sum, diff, pro, quo END 2、算法步骤:第一步, 令 n=1 第二步: 输入一个成绩 r,判断 r 与 6.8 的大小 . 若 r 6.8,则执行下一步; 若 r9,则结 束算法 . 程序框图: 说明:本题在循环结构的循环体中包含了一个条件结构 . 1 2 基本算法语句 练习 ( P24) 1、 程序 : 2、 程序 : 3、 程序 : 练习 ( P29) 1、 程序 : INPUT “ a, b, c=”; a, b, c IF a+bc AND a+cb AND b+ca THEN PRINT “
6、 Yes.” ELSE PRINT “ No.” END IF END INPUT “ a, b, c=”; a, b, c p=(a+b+c)/2 s=SQR(p*(p a) *(p b) *(p c) PRINT “ s=”; s END INPUT “ F=”; F C=(F 32)*5/9 PRINT “ C=” ; C END 4、 程序 : I N PU T “ a , b , c= ”; a , b , c s um =10.4* a+15.6* b+25.2* c PRI N T “ s um = ”; s um EN D 2、 本程序的运行过程为:输入整数 x. 若 x 是满
7、足 9n 1 OR r=0 IF r=0 THEN PRINT “ n is not a prime number.” ELSE PRINT “ n is a prime number.” END IF END INPUT “ Please input a year:”; y b=y MOD 4 c=y MOD 100 d=y MOD 400 IF b=0 AND c0 THEN PRINT “ Leap year.” ELSE IF d=0 THEN PRINT “ Leap year.” ELSE PRINT “ Not leap year.” END IF END IF END INPU
8、T “ Please input an integer:”; a IF a MOD 2=0 THEN PRINT “ Even.” ELSE PRINT “ Odd.” END IF END INPUT “ n=”; n i=1 sum=0 WHILE i0 AND t=180 THEN y=0.2 ELSE IF ( t 180) MOD 60 0 THEN y=0.2 0.1*( t-180) 60 ELSE y=0.2 0.1*( t-180) 60 1) END IF END IF PRINT “ y=”; y END IF END INPUT “ n=”; n i=1 S=0 WHI
9、LE i=n S=S+1 i i=i+1 WEND PRINT “ S=”; S END 5、 ( 1)向下的运动共经过约 199.805 m ( 2)第 10 次着地后反弹约 0.098 m ( 3)全程共经过约 299.609 m 第 二 章 复习参考题 B 组( P35) 1、 2、 3、算法步骤:第一步 ,输入一个正整数 x 和它的位数 n . 第二步,判断 n 是不是偶数,如果 n 是偶数,令 2nm ;如果 n 是奇数,令 12nm . 第三步,令 1i 第四步,判断 x 的第 i 位与第 ( 1 )ni 位上的数字是否相等 . 若是,则使 i 的值增加 1,仍用 i 表示;否则,
10、 x 不是回文数,结束算法 . 第五步 ,判断“ im ”是否成立 . 若是,则 n 是回文数,结束算法;否则,返回第四步 . i=100 sum=0 k=1 WHILE k=10 sum=sum+i i=i 2 k=k+1 WEND PRINT “( 1)”; sum PRINT “( 2)”; i PRINT “( 3)”; 2*sum 100 END INPUT “ n=”; n IF n MOD 7=0 THEN PRINT “ Sunday” END IF IF n MOD 7=1 THEN PRINT “ Monday” END IF IF n MOD 7=2 THEN PRINT “ Tuesday” END IF IF n MOD 7=3 THEN PRINT “ Wednesday” END IF IF n MOD 7=4 THEN PRINT “ Thursday” END IF IF n MOD 7=5 THEN PRINT “ Friday” END IF IF n MOD 7=6 THEN PRINT “ Saturday” END IF END