C程序设计第二章
- 格式:doc
- 大小:4.22 MB
- 文档页数:13
习题2.1什么是算法?是从日常生活中找三个例子,描述他们的算法?答:对操作的描述,即操作步骤,就是算法。
广义的说;为解决一个问题而采取的方法和步骤,就称为“算法”。
例:(略)2.2什么叫结构化的算法?为什么要提倡结构化的算法?答:由基本节构所构成的算法属于“结构化”的算法。
结构化的算法便于编写、阅读、便于修改和维护。
这就减少了程序出错的机会、提高了程序的可靠性,保证了程序的质量。
2.3试述三种基本结构的特点,你能否自己另外设计两种基本结构(要符合基本结构的特点)。
答:基本结构有以下共同点:1:只有一个入口。
图2-14-------2-17中的a点为入口。
2:只有一个出口。
图2-14-------2-17中的b点为出口。
注意,一个判断框有两个出口,但一个选择结构只有一个出口。
不能混淆。
3:结构内的每一部分都有被执行到的机会。
也就是说,对每一个框来说,都应当有一条到出口的路径通过它。
图2-20中就没有一条从入口到出口的路径通过A框。
4:结构内不存在死循环(无终止的循环)。
图2-21就是一个死循环。
需要说明的是基本结构并不一定只限于以上3中,只要有以上四种特点就可以。
人们可以自己定义之。
例:如下两图2.4用传统流程图表示求解一下问题的算法。
(1)有两个瓶子A和B,分别放醋和酱油,要求将他们互换。
#include<stdio.h>void main(){int a;int b;int c;a=10;b=5;printf("%d,%d\n",a,b);c=a;a=b;b=c;printf("%d,%d\n",a,b);}(2)一次将10个数输入,要求将将其中最大的数输出。
#include<stdio.h>void main(){int a[10];int i;int max;printf("input 10 numbers.\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");max=a[0];for(i=1;i<10;i++)if(max<a[i]) max=a[i];printf("the max is: %d\n",max) ;}(3)有3个数a b c,要求安大小顺序把他们输出。
4.用传统流程图表示求解以下问题的算法。
(1)有两个瓶子A和B,分别盛放着醋和酱油,要求将它们互换(即A瓶原来盛醋,先改盛酱油,B瓶则相反)。
(2)依次将10个数输入,要求输出其中最大的数。
(3)有三个数a, b, c, 要求按大小顺序把它们输出。
(4)求1+2+3+ (100)
(5)判断一个数n能否同时被3和5整除。
(6)将100~200之间的素数输出。
(7)求两个数m和n的最大公约数。
(8)求方程式ax^2+bx+c=0的根。
分别考虑:
①有两个不等的实根。
②有两个相等的实根。
5.用N—S图表示第四题中各题的算法。
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
x
8.用自顶向下、逐步细化的方法进行以下算法的设计:
(1)输出1900~2000年中是闰年的年份,符合下面两个条件之一的年份是闰年:
①能被4整除但不能被100整除;
(2)求ax^2+bx+c=0的根。
分别考虑△=b*b—4ac 大于0、等于0和小于0这三种情况。
A1
对A1细化
左边是B1 右边是C1
对B1细化
左边是C2 右边是C3
对C1细化
对C2细化
对C3细化
(3)输入10个数,输出其中最大的一个数。