1.什么是算法?试从日常生活中找3个例子,描述它们的算法。(P16)
广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”。
①你想从北京去天津开会,首先要去买火车票,然后按时乘坐地铁到北京站,登上火车,到天津站后坐汽车到会场,参加会议
②要考大学,首先要填志愿表,交报名费,拿到准考证,参加考试,得到录取通知书,到定学校报到注册等
③描述太极拳动作的图解,就是“太极拳的算法”
2.什么叫结构化的算法?为什么要提倡结构化的算法?(P27)
由基本结构(顺序结构、选择结构、循环结构)所构成的算法属于“结构化”的算法,它不存在无规律的转向,只在本基本结构内才允许存在分支和向前或向后的跳转。
结构化的算法可以解决任何复杂的问题
3.试述3种基本结构的特点,请另外设计两种基本结构(要符合基本结构的特点)。(P26)
顺序结构中,在执行完A框所指定的操作后,必然接着执行B框所指定的操作。顺序结构是最简单的一种基本结构
选择结构,又称选取结构或分支结构,此结构中必包含一个判断框。根据给定的条件p是否成立而选择执行A框或B框
循环结构,又称重复结构,即反复执行某一部分的操作。有两类循环结构:当型(while型)循环结构和直到型(until型)循环结构
4.用传统流程图表示求解以下问题的算法。
(1)有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换(即A瓶原来盛醋,现改盛酱油,B瓶则相反)。
(2)依次将10个数输入,要求输出其中最大的数。
(3)有3个数a, b, c,要求按大小顺序把它们输出。
(4)求1+2+3+…+100。
(5)判断一个数n能否同时被3和5整除。
(6)将100~200之间的素数输出。
(7)求两个数m和n的最大公约数。
(8)求方程式ax2+bx+c=0的根。分别考虑:
①有两个不等的实根;
②有两个相等的实根。
5.用N-S图表示第4题中各题的算法。
(1)有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换(即A瓶原来盛醋,现改盛酱油,B瓶则相反)。
(2)依次将10个数输入,要求输出其中最大的数。
(3)有3个数a, b, c,要求按大小顺序把它们输出。
(4)求1+2+3+…+100。
(5)判断一个数n能否同时被3和5整除。
(6)将100~200之间的素数输出。
(7)求两个数m和n的最大公约数。
(8)求方程式ax2+bx+c=0的根。分别考虑:
①有两个不等的实根;
②有两个相等的实根。
注:i为
6.用伪代码表示第4题中各题的算法。
(1)有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换(即A瓶原来盛醋,现改盛酱油,B瓶则相反)。
c=a
a=b
b=c
(2)依次将10个数输入,要求输出其中最大的数。
n=1
input max
while n<10 do
input a
if a>max then max=a
n=n+1
end do
print max
(3)有3个数a, b, c,要求按大小顺序把它们输出。
input a, b, c
if a<b then swap a, b (swap a, b表示a和b互换)
if a<c then
print c, a, b
else
if c>b then
print a, c, b
else
print a,b,c
end if
end if
(4)求1+2+3+…+100。
sum=0
n=1
while n≤100 do
sum=sum+n
n=n+1
end do
print sum
(5)判断一个数n能否同时被3和5整除。
input n
flag=0
if mod(n, 3)≠0 then flag=-1
if mod(n, 5)≠0 then flag=-1
if flag=0 then
print n "能被3和5整除"
else
print n "不能同时被3和5整除"
end if
(6)将100~200之间的素数输出。
n=100
while n<200 do
i=2
while i≤
if mod(n, i)=0 then
i=n
else
i=i+1
end if
end do
if i< then print n
n=m+1
end do
(7)求两个数m和n的最大公约数。
input m, n
if m<n then swap m, n
t=mod(m, n)
while r≠0 do
m=n
n=r
r=mod(m, n)
end do
print n
(8)求方程式 的根。分别考虑:
①有两个不等的实根; ②有两个相等的实根。
int a, b, c
disc=b2-4ac
if disc≥0 then
if disc=0 then
x1, x2=-b/(2a)
else
x1=(-b+ )/(2a)
x2=(-b-)/(2a)
end if
print x1, x2
else
p=-b/(2a)
q=/(2a)
print p+q, "+", p-q, "i"
end if
7.什么叫结构化程序设计?它的主要内容是什么?(P33)
结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。
主要内容:自顶向下、逐步细化、模块化设计、结构化编码。
8.用自顶向下、逐步细化的方法进行以下算法的设计:
(1)输出1900-2000年中是闰年的年份,符合下面两个条件之一的年份是闰年:
①能被4整除但不能被100整除; ②能被100整除且能被400整除。
先画出图(a),对它细化得图(b); 对图(b)中的S1.1细化得图(c)。
(2)求 的根。分别考虑式 大于0、等于0和小于0这3种情况。
先画出图(a),对其中的S3细化为图(b),对图(b)中的S3.1细化为图(c),对图(c)中的S3.1.1细化为图(d),对图(c)中的S3.1.2细化为图(e),再对图(b)中的S3.2细化为图(f)。请读者将它们合成一个总的N-S图。
(3)输入10个数,输出其中最大的一个数。
先初步画出图(a)。考虑到还没有学习数组的知识,因而不能做到将10个数全部输入给数组中各个元素,然后再从中找最大者。由于不采用数组这种数据结构,算法也应与采用数组时有所不同。现在只用普通变量,逐个读入数据,将当时各数中的最大者保留下来存放在max中,以便再与后面读入的数比较。将图(a)细化为图(b),再细化为图(c)。