算法苏教版.docx
《算法苏教版.docx》由会员分享,可在线阅读,更多相关《算法苏教版.docx(28页珍藏版)》请在冰豆网上搜索。
算法苏教版
第1课时 算法的概念
【问题情境】
1.假如你的朋友不会发电子邮件,你能教会他吗?
发邮件的方法很多,下面就是一种操作步骤:
第一步 打开电子信箱
第二步 点击“写邮件”;
第三步 输入发送地址;
第四步 输入主题;
第五步 输入信件内容;
第六步 点击“发送邮件”。
2.求解方程组
2x+y=7, ①
4x+5y=11 ②
时可按下述步骤进行:
第一步 方程①不动,将方程②中的x的系数除以方程①中x的系数,得到乘数
m=
=2;
第二步 方程②减去m乘以方程①,消去方程②中的x项,得到
2x+y=7
3y=-3
第三步 将上面的方程自下而上回代求解,得到y=-1,x=4.
所以原方程组的解为
x=4,
y=-1.
这种消元回代的方法适用于一般线性方程组的求解。
上面的两个问题有怎样的共同特征?
【范例解读】
例1写出求533除以7的商和余数的算法过程。
例2已知lg2=0.3010,lg3=0.4771,写出求lg64的值的一个算法。
【归纳点拔】
1.算法,就是做某一工作的方法和步骤,本章主要讨论的是计算机能实现的算法——一类问题的机械的、统一的求解方法,求算法就是给出完成一件事情的操作程序。
2.算法具有下列特点:
(1)有限性:
一个算法在执行有限个步骤后必须结束.
(2)确定性:
算法的每一个步骤和次序应当是确定的.
【测试反馈】
1.写出求35791113的值的一个算法。
2.写出解方程3x+5=0的一个算法过程。
3.写出作棱长为2的正三棱柱的直观图的算法过程。
4.将“打电话”的过程描述成一个算法,试由此说明算法具有哪些性质?
5.写出解方程组
x+y=3,
y+z=5,
z+x=4
的一个算法。
6.你能用一个算法将用数学模型解决实际问题的过程表示出来吗?
第2课时 程序框图(顺序结构)
【问题情境】
1.
图1
上面的“框图”可以表示一个算法吗?
按照这一程序操作时,输出的结果是多少?
若第一个“输入框”中输入的是77,则输出的结果又是多少?
2.已知ABC,图2所示的程序框图给出了作ABC的外接圆的一个算法。
这个算法在结构上有什么特点?
【范例解读】
例1 半径为r的圆面积计算公式为
S=r2。
当r=10时,写出计算圆面积的算法,画出程序框图。
例2 已知两个单元分别存放了变量x和y的值,试给出交换这两个变量值的一个算法,并画出程序框图。
【归纳点拔】
画程序框图时应注意的问题
1.先建立解决问题的算法,并将其用自然语言表述。
2.再弄清楚初值、循环情况、条件、表达式、程序的结构、流向等.
3.顺序结构表示的算法过程是依次进行多个处理,可用框图表示为
A
B
【测试反馈】
1.根据程序框图
X←1,Y←2,Z←3
X←Y,Y←X,Z←Y
输出Z
终止
输出的结果是
A 3 B 1 C 2 D 0
2.按下面的顺序结构进行操作
第4步 输出点(a,b).
输出的结果是
A 点(2,-1)关于直线2x-y+4=0的对称点
B 点(-2,1)关于直线2x-y+4=0的对称点
C
写出求点(2,-1)关于直线2x-y+4=0的对称点的一个算法的程序框图。
2.画出用现代汉语字典查阅“华”字的程序框图。
3.写出解不等式组
x-2<1,
2x+1>5
的一个算法,并画出程序框图。
4.写出求过两点(-1,1)和(3,9)的直线的在x轴上的截距的一个算法,并用程序框图表示这个算法。
5.若x1,x2是一元二次方程2x2-3x+1=0的两个实根,求x12+x22的值。
给出解决上述问题的一个算法,并画出程序框图。
6.已知函数f(x)=
实数a1=f
(1),a2=f(a1),an+1=f(an)。
试写出一个求a5的算法,并画出程序框图。
第3课时 程序框图(条件结构)
【问题情境】
1.某市居民用水收费的方法是:
水费=基本费+超额费+损耗费。
若每月用水不超过10m3,只付基本费8元和每户每月的定额损耗费1元;若用水超过10m3,除了付上同的基本费和损耗费外,超过剖分每m3付2元的超额费。
已知一户居民每月的定额损耗费不超过5元。
试写出求该户居民每月的应付水费的一个算法,并画出该算法的程序框图。
【范例解读】
例1 已知三个实数a,b,c。
试给出寻找这三个数是的最大数的一个算法,并画出该算法的程序框图。
例2 设计求解一元二次方程
ax2+bx+c=0(a≠0)
的一个算法,并用程序框图表示。
【归纳点拔】
1.有些问题需要按给定的条件进行分析、比较和判断,并按判断的的不同情况进行不同的操作,这类问题的实现就要用到选择结构的设计.
2.选择结构也称为“分支结构”或“选取结构”,它要先根据指定的条件进行判断,再由判断的结果决定选取执行两条分支路径中的某一条.
3.下图的虚线框内就是选择结构的一般形式。
在A、B两个操作选项中,只能执行A和B之一,不可能既执行A又执行B,但A或B两个框中可以有一个是空的,即不执行任何操作.
【测试反馈】
1.根据下面的程序框图操作,使得当成绩不低于60分时,输出“及格”,当成绩低于60分时,输出“不及格”
输入成绩x
2
1
x≥60
不及格
及格
则
A 1框中填“Y”,2框中填“N” B 1框中填“N”,2框中填“Y”
C 1框中填“Y”,2框中可以不填 C 2框中填“N”,1框可以不填
2.表示解方程ax+b=0(a,b为常数)的一个正确的算法是
3.在表示解不等式ax+b<0(a,b为常数,且a≠0)的算法的程序框图中,判断框中应填入的内容是 。
4.给出下面的算法:
S1 屏幕上显示两个两位整数;
S2 提示用户输入这两个数的和;
S3 检查计算结果是否正确,如果是,则显示“正确”;否则显示“错误!
再试一次”,然后继续输入计算结果,直至结果正确为止。
将这个算法用程序框图可表示为
。
5.对于输入的实数x,设计求函数
x2+1x≥0,
y=
-x+1x<0.
的函数值的算法,并将该算法用程序框图表示。
6.某地的出租车按如下方法收费:
起步价10元,可行3km(不含3km);3km到7km(不含7km)按1.6元/km计价(不足1km按1km计算);7km以后都按2.4元/km计价(不足1km按1km计算)。
试给出当行车路程为xkm时的车费的一个算法,并用程序框图表示。
7.输入一个年份,判断它是否为闰年,并输出相应的结果。
闰年判断条件为:
能被4整除不能被100整除的是闰年,能被4整除且能被400整除的也是闰年,其它为非闰年。
8.输入一个学生的三门成绩,判断其学习成绩等级。
平均分90分以上(包括90分)为优秀、80分至90分为良好(包括80分、其它类同)、70分至80分为中等、60分至70分为及格、60分以下为不及格。
第4课时 程序框图(循环结构)
【问题情境】
1.计算前5个正整数的和时,可以按下面的算法进行
第一步 计算1+2,得到3;
第二步 将第一步所得结果3与3相加,得到6;
第三步 将第二步所得结果6与4相加,得到10;
第四步 将第三步所得结果10与5相加,得到15。
当要求计算前100个正整数的和时,可用这种算法吗?
你能找到简便的算法吗?
2.用程序框图给出求使1+2+3+……+n>2005的最小自然数n的一个算法。
【范例解读】
例1 设计一个求3个实数中的最小数的算法,并用程序框图表示。
例2 设计一个10个数的平均数的算法。
【归纳点拔】
1.“直到型(Until型)”循环结构的功能是:
先执行A框,然后判断给定的条件p是否成立,如果p不成立,则再执行A,然后再对条件p作判断,如果p仍不成立,又执行A,……,如此反复执行A,直到给定的条件p成立为止.
2.“当型(While型)”循环结构如图,它的功能是:
当给定的条件p成立时,执行A框操作,执行完A后,再判断条件p是否成立,如果仍成立,再执行A框,如此反复执行A框,直到某一次p不成立为止.
3.当型循环和直到型循环是可以互相转换的.对同一个问题,如果分别用当型循环和直到型循环来处理的话,则两者判断的条件恰好相反.
【测试反馈】
1.按下面的程序框图运行后,所得的I的值为
A 4 B 5 C 3 D 6
2.给出下面的程序框图:
这个程序框图的输出结果是
A 1+2+3+……+100=5050sum=5050n=100
B1+3+5+……+99=2500sum=2500n=50
C1+3+5+……+19=100sum=100n=10
D1+2+3+……+14=105sum=105n=14
3.给出下面的算法:
S1 屏幕上显示两个两位整数;
S2 提示用户输入这两个数的和;
S3 检查计算结果是否正确,如果是,则显示“正确”;否则显示“错误!
再试一次”,然后继续输入计算结果,直至结果正确为止。
S4 询问用户是否继续练习,如果用户回答“Y”,则重复上述过程;如果回答“N”,则程序退出。
将下面的空档填上适当的内容,以完成表示这个算法的程序框图
4.在下面的空档内填上适当的内容,完成这个用循环结构表示的求35791113值的程序框图。
5.用程序框图表示求42的所有正约数的算法。
6.用N1代表第一个学生的学号,Ni表示第i个学生的学号,Gi表示第i个学生的成绩,那么下图表示了一个什么样的算法?
7.
8.一队士兵来到一条有鳄鱼的深河的左岸。
只有一条小船和两个小孩,这条船只能承载两个小孩或一个士兵。
试设计一个算法,将这队士兵渡到对岸,并将这个算法用程序框图表示。
第5课时 基本算法语句(输入、输出、赋值语句)
【问题情境】
已知某学生一次考试中语文、数学和英语学科的得分分别为85、90、95,试设计适当的算法求出这名学生的部分和平均分。
和我们已经接触到的很多问题一样,在解决这个问题时,需要将这名学生的三门学科的分数输入电脑,或将三门学科的分数赋给相应的变量,以便于电脑进行运算操作。
同时,运算的结果也需通过适当方式进行输出,否则,这样的算法是没有意义的。
怎样进行输入、输出或对变量进行赋值呢?
【范例解读】
例1 已知一匀变速运动的物体的初速度、未速度和加速度分别为V1,V2,a,求物体运动的距离s。
试编写求解这个问题的一个算法的程序框图,并用伪代码表示这个算法。
例2 已知三角形的三边,试用程序框图和伪代码表示求这个三角形的周长和面积的算法。
【归纳点拔】
【测试反馈】
1.赋值语句a=a+1的含意是
A 把就是a的值存放到a+1中 B 变量a的值等于a+1的值
C 把变量a的值加1后赋给变量a D 把变量a+1的值存放到a中
2.下列四个语句中语法正确的是
A INPUT“A,B,C=”;A,B,CBINPUT;“A,B,C=”;A,B,C
CINPUT“A,B,C=”;A;B;CDINPUT“A=”,A,“B=”,B
3.若A=3,B=6,则下面程序运行后的结果是 。
INPUT “A,B=”;A,B
C=A*B+5
PRINTC
END
4.执行下面的程序
X=1
Y=2
Z=3
X=Y
Y=X
Z=Y
PRINT Z
PRINT A;B;C
END
的结果是 。
5.试用伪代码编写程序,输出如下图形
**
****
******
********
6.已知一个正三棱柱的底面边长为2,高为3,用输入、输出语句和赋值语句表示计算此三棱柱的体积的算法。
7.请用伪代码编写程序,实现三个变量A=1,B=2,C=3的值按顺序互换,即A→B→C→A之间的交换。
8.某市2004年112月的产值分别为3.8,4.2,5.3,6.1,5.6,4.8,7.3,4.5,6.4,5.8,4.7,6.5(亿元),该市要统计每季度的月平均产值及2003年的月平均产值,试分别用赋值语句和输入、输出语句表示计算上述各个平均值的算法。
第6课时 基本算法语句(条件语句)
【问题情境】
下面的问题可用哪种结构的算法表示?
如何用伪代码表示这种结构的算法呢?
1.输入全班学生的某学科的一次考试的成绩后,将成绩不合格的学生打印出来;
2.输入一个正整数,如果是偶数,就将其输出。
【范例解读】
例1.输入两个数A和B,将较大的数打印出来。
例2.已知函数
10,(x>0)
y=0,(x=0)
-10,(x<0).
输入x的值,计算y的值。
【归纳点拔】
【测试反馈】
1.按下列程序运行的结果是
A=4.5
B=6
IF A>=5 THEN
B=B+1
ELSE
B=B-3
B=B+2
END IF
IF B>=4 THEN
B=B*B
ELSE
B=A+B
END IF
PRINT B
END
A 10.5 B 11.5 C 16 D 25
答案 D
解:
A=4.5,第一个选择结构条件不满足,则B=B-3=3,B=B+2=5;而第二个选择结构条件满足,B=B*B=5*5=25,所以运行结果为25。
2.下列程序的目的是 (其中函数INT(X)的结果为实数X的整数部分)。
INPUT “X,Y=”;X,Y
PRINT X,Y
M=X
I=Y
L1:
IF M/I=INT(M/I) THEN GOTO L2
C=M-INT(M/I)*I
M=I
I=C
GOTOL1
L2:
PRINT “I=”;I
END
A 求X,Y的最小公倍数 B 求X,Y的最大公约数
C 求X被Y整除的商 D 求Y除以X所得的余数
3.下列程序的运行结果是 。
X=6
Y=7
IF X>5THENY=Y+8
IFX>4THENY=Y+7
IFX>3THENY=Y+6
PRINTY
END
(答案:
28)三个条件均成立,所以THEN以后的语句均已执行,则结果为7+8+7+6=28。
4.下列程序的运行结果是 。
X=0
IF X>0 THEN X=X+1 ELSE X=X-1
IF X>0 THEN Y=X ELSE IF X=0 THEN Y=1 ELSE Y=3-X
PRINT “Y=”;Y
END
(答案:
Y=4。
因为X=0,第一行条件X>0不满足,则X=X-1=-1,第二行条件X>0也不满足,执行内层选择,X=0不成立,则Y=3-X=4)
5.设计一个算法,判断一个整数是奇数还是偶数。
要求画出程序框图,写出伪代码(P54)。
6.发动机的推力F(kg)与温度t(oC)的关系是
1860,当t≤10
F=
2080,当102867,当203250,当30用伪代码编写程序,根据温度计算发动机的动力。
7.在下面的伪代码表示的程序中,hour24表示24小时计时法中的小时数,hour12为12小时计时法中的小时数,minute为分钟数。
程序为:
INPUT “请输入时间的小时数和分钟数:
”;hour24,minute
IFhour24<0ORhour24>23THENEND
IFhour24<=12THEN
hour12=hour24
PRINT“NOW,TIMEIS:
”;hour12;“:
”;minute;“am”
ELSE
Hour12=hour24-12
PRINT“NOW,TIMEIS:
”;hour12;“:
”;minute;“pm”
END IF
END
这个程序的运行结果是什么?
它有怎样的功能?
8.有一函数如下
1(x>0)
y=0(x=0)
-1(x<0).
编写一个程序,根据给定的x的值求函数y的值。
请画出程序框图,写出伪代码。
第7课时 基本算法语句(循环语句)
【问题情境】
用算法求3+6+9+……+99时,可以按逐个相加的方式进行,但这样的算法程序太长,操作不方便。
按怎样的算法结构可以简单算法过程呢?
如何用伪代码表示这种算法?
【范例解读】
例1.将5名学生的一门功课的成绩依次输入并计算输出平均成绩。
(P78)
例2.1990年我国人口为11亿。
如果每年的人口增长率为1.5%,多少年后人口达到或超过15亿?
设计一个算法解决上面的问题。
画出程序框图,写出伪代码。
【归纳点拔】
【测试反馈】
1.下列程序运行次数是A、B、C、D中的哪一种?
FOR I=7 TO 90 STEP 5
PRINT I
NEXT I
END
A 14 B 15 C 16 D 17
2.下面的程序运行后输出的结果是
I=1
WHILE I<8
I=I+2
S=2*I+3
WEND
PRINTS
END
A17 B 19 C 21 D 23
3.要使以下FOR循环执行20次,循环变量的初值应当是 。
FOR k= TO-5STEP-1
4.下列程序的功能为输出如下的图形,请将程序补充完整
********
********
********
********
CLS
FORI=1 TO 4
PRINT TAB(10+I)
FOR J=1 TO
PRINT “*”;
NEXT J
PRINT
NEXT I
END
(说明:
其中的“TAB(n)”的功能是行前空n个字符)
(答案:
8)
5.画出求
(共6个2)的值的一个算法的程序框图,并用伪代码表示这个算法。
6.将1到100之间的奇数按顺序累加,直到其和等于或大于100为止。
要求输入表示这些奇数相加并得到运算结果的算式。
(P80)
7.用循环语句设计一个算法,在有限个实数中找到最大的一个数。
(<离散数学>P121)
8.有一个三位数,当把百位数作十位数,十位数作个位数,而个位数作百位数时,则得到一个新的三位数。
原来的三位数是新三位数的2倍还多3。
试编制适当的程序找出符合要求的三位数。
用伪代码表示上述程序。
(P109)
第8课时 习题课
【双基演练】
1.下面四个语句中不正确的打印语句是
A PRINT A=B+C B PRINT “A=”;B+C
C PRINT “A=B+C” D PRINT A=;B+C
2.下面的程序运行的结果是
N=0
I=0
WHILE I<30
I=(I+1)*(I+1)
N=N+1
WEND
PRINT N
END
A 0 B 3 C 4 D 29
3.完善下列程序
INPUT “X=”;X
IF X>=0THEN
Y=6
ELSE
Y=5
PRINTY
END
4.按下面的程序运行后输出的S的值是 。
FOR I=1 TO 5
S=0
J=1
FORK=1ToI
J=J*K
NEXTK
S=S+J
NEXTI
PRINTS
END
【范例解读】
1.写出一个在三个数a,b和c中找出第2个小数的算法(假设a,b,c互不相同),画出程序框图,并用伪代码表示这个算法。
2.用While语句描述求使1+2+3+……++>2004成立的最小正整数n的算法过程。
3.读入若干个自然数,统计出其中奇数的个数。
用伪代码表示解决这个问题的算法过程。
(P93)
【测试反馈】
1.下面的程序运行后输出的结果是
N=0
I=0
WHILE I<30
I=(I+1)*(I+1)
N=N+1
WEND
PRINTN
END
A0B3C4D29
2.下列程序的运行结果是
A=5
B=4
IF B>=A THEN
B=A+B
ELSE
B=A-B
PRINT B
END
A 9 B 4 C 1 D 0
3.下列程序的运行结果是 。
A=1
B=2
C=10
D=B*B-4*A*C
IF D>=0THEN
X1=(-B+SQR(D))/(2*A)
X2=(-B-SQR(D))/(2*A)
PRINT“X1=”;X1,“X2=”;X2
ELSE
PRINT “X1=”;-B/(2*A);“+”;SQR(-D)/(2*A);“i”,
PRINT “X2=”;-B/(2*A);“-”;SQR(-D)/(2*A);“i”
END IF
END
(-1+3i -1-i)
4.下列程序运行后输出的结果是 。
FOR A=1 TO 5
Y=1
FOR B=1 TO 10
FOR C=1 TO 6
Y=Y+1
NEXT C
NEXT B
NEXT A
PRINT A
END
5.按下列程序运行后的结果是 。
XY=10
IFXY>100THEN
A=A+1
ELSE
IFXY>50THEN
A=A+2
ELSE
A=A+4
ENDIF
ENDIF
PRINTA
END
6.求出所有能被7整除的两位数。
用伪代码表示算法过程。
7.火车站对乘客退票要收取一定的费用,收费办法是:
按票价每10元(不足10元按10元计算)核收2元,票价在2元以下的不退。
试分步写出将票价为x元的车票退掉后,返还的金额y元的算法,画出程序框图,并用伪代码将这个算法表示出来。
第9课时 算法案例(辗转相除法与更相减损)
【问题情境】
1.小李问老师怎样求两个正整数的最大公约数,老师画了一个程序框图(如下):
“你按这个框图进行吧”。
(1)