1、程序设计基础作业三讲评程序设计基础作业三一、 填空题1. 常见的线性结构有_线性表_、_栈_和_队列_等,其主要特征为各个结点之间“先后”有序。2. 常见的非线性结构包括_树_和_图型_结构。注:以上两题是常见的数据结构线性结构和非线性结构3. 对于一个线性表来说,如果它的表长为0,则我们称它为_空_表。4. 一棵二叉树上第5层的结点数最多为 16 。注:此题考核对于二叉树的性质的理解和掌握5. 设无向图G的顶点数为n,图G最少有 n-1 条边,最多有 n(n-1)/2 条边注:此题是对无向图的理解,无向图个顶点之间的连线没有方向,对于每个顶点都最多有n-1条边和其他顶点相连,n个顶点就有n(
2、n-1)条边,由于没有方向性,所以连线不能重复,所以最多边的个数是n(n-1)/2条。6. 算法描述的常见方法是_伪码_,_流程图_和_N-S图_。二、 选择题1. 数据结构主要研究下面3方面的内容_A_。A 数据的逻辑结构、存储结构和运算B 数据的线性结构、树型结构和图结构C 数据的顺序存储、链式存储和散列存储D 数据的线性结构和非线性结构,以及相关运算2. 在存储线性表时,_C_。A 只能采用顺序存储结构 B 只能采取链式存储结构C 可以任意采用顺序或链式存储结构 D 没有明确的结论3. 栈的最主要特点是_B_。A 先进先出 B 先进后出 C 两端进出 D 一端进一端出注:栈的特点就像一摞
3、盘子,所以需要后进现出(先进后出)。 4.在一个长度为n的顺序表中删除第i(0i=n)个元素时,需向前移动 A 个元素 A n-i B n-i+1 C n-i-1 D i5.采用顺序空间作为栈的存储空间时,在进行栈操作的时候_D_。A 不需要判断栈是否空,不需要判断栈是否满B 不需要判断栈是否空,但需要判断栈是否满C 需要判断栈是否空,不需要判断栈是否满D 需要判断栈是否空,也需要判断栈是否满三、 简答题1. 假设有四个元素依次进栈,进栈过程中允许出栈,试写出所有可能的出栈序列此题考核对栈的理解和对栈的操作的方法(出栈操作是后进先出)。参考答案:假设四个元素分别为1,2,3,4,则可能的出栈序
4、列:1234 1243 1324 1342 1432 2134 2143 2314 2341 24313214 3241 3421 4321注:该题是考核对栈的性质的理解,即后进现出的特点,如果四个元素依次进栈,每个,按照1进1出2进2出3进3出4进4出顺序可以构造出栈序列:1234,按照这种思路,可以构造出:1234, 1243, 1324, 1342, 1432, 2134, 2143, 2314, 2341, 2431, 3214, 3241, 3421, 4321出栈序列。2. 写出下面二叉树的先序遍历、中序遍历、后序遍历时得到的定点序列先序:ABDEC中序:DEBAC后序:EDBCA
5、注:本题考核对树的遍历的方法的理解。先序就是先遍历根节点,再遍历左,后遍历右;中序就是先遍历左,再遍历根节点,后遍历右;后序就是先遍历左,再遍历右,后遍历根节点;以此方法遍历每一颗子树。程序设计基础作业四一、选择题1、 采用链式存储的有序数据要进行查找,可以采用_A_。A 顺序查找 B 折半查找 C 顺序索引查找 D 顺序或折半查找2、 螺旋模型中包括需求定义、风险分析、工程实现和评审四个阶段,在开发过程中_A_。A 每个周期都要包括这四个阶段 B 每个周期可以包括不同的阶段C 在最后交付使用之前才进行评审 D 开项目开始时才需要进行风险分析3、 在软件需求完全确定的情况下,应该采用的软件开发
6、模型是_A_。A 瀑布模型 B 渐进式开发模型 C 原型模型 D 螺旋模型4、流程图中表示判断框的是 B 。A 矩形框 B 菱形框C 圆形框 D 椭圆形框注:回答此题需要掌握流程图的各种符号。二、简答题(答案参考教材)注:以下问题的回答需要对教材第七章涉及的内容理解并掌握。1. 什么是软件?什么是软件工程?2. 在软件工程过程中围绕着工程设计、工程支持和工程管理应当遵循什么基本原则?3. 什么是软件的生存周期?如何划分软件的生存周期?4. 快速原型法的主要思想和特点是什么?作业二答案一、选择题1、 C语言中,使用变量的要求是_。AA 要先定义后使用 B 要先使用后定义C 不需要定义,可以直接使
7、用 D 没有明确的要求2、 不是C语言的基本数据类型是_。DA int B double C char D bool3、 编程语言提供的三种基本控制结构是_。DA 输入、处理和输出结构 B 常量、变量和表达式结构C 表达式、语句和函数结构 D 顺序、选择和循环结构4、 在C语言中,决定int数的表示范围的因素是_。AA int类型占用的字节数量 B 人为事先的约定和习惯C 所存储的数据是否有符号 D 数在内存中的编码方式5、 C语言中,关于运算符的正确概念是_。DA 运算符具有优先级,同优先级的运算符由括号决定运算次序B 在不同优先级运算符进行混合运算时,运算的先后次序取决于结合性C 在同优先
8、级的运算符参与运算时,先计算左侧的运算符D 运算符具有优先级和结合性6、 在C语言中关于循环语句的结论中,错误的是_。DA do-while语句构成的循环至少要执行一次B while语句和for语句可以相互替代C for和while语句的循环控制条件都是当条件成立时执行循环体D do-while语句的循环控制条件是当条件不成立时继续执行循环体二、填空题1、 最基本的程序控制有三种,它们是_,_和_。这三种执行控制的任意组合和重复、嵌套就可以描述任意复杂的程序。顺序执行、分支控制和循环控制2、 C语言中分支语言是_语句和_语句。if,switch3、 C语言中循环语言是_语句,_语句和_语句。w
9、hile,for和do-while4、 C语言中自增运算符是_,求余数的运算符号是_。+,%5、 C语言中要改变循环语句的流程可以使用语句_,_和_。break,continue和goto三、简答题1、请简要介绍面向过程式语言中的三种程序设计的基本结构。顺序结构是指按先后顺序从前到后执行的语句序列。这些语句逻辑上可能有明确的顺序关系,即后一个程序语句依赖于前一个语句,也可能它们之间没有明确的顺序关系,即某些语句的先后顺序并不重要,一个语句逻辑上并不从属于另一些语句。选择结构是指根据判定条件控制一些语句是否执行的语句。选择结构可用if-then、if-then-else或case(或switch
10、)等语句进行描述。当判定条件成立时需要执行一组语句,且不成立时不需要执行这些语句,那么应当采用if-then语句。当判定条件成立时需要执行一组语句,否则需要执行另一组语句时,可采用if-then-else语句。当根据表达式的取值情况在多个动作中选取其一执行时,可采用case语句。循环结构是指可重复执行一组语句(称为循环体)的程序语句。根据重复方式的不同,循环结构可分为while型循环、until型循环和for型循环。while型循环是在指定的条件(称为循环条件)成立时,重复执行循环体,其特点是执行循环体前先判定循环条件,因此可能一次也不执行循环体。until型循环将重复执行循环体,直到循环条件
11、成立才结束该重复,其特点是每执行一次循环体后判定循环条件,因此至少执行一次循环体。for型循环将循环体重复执行给定次数,其特点是循环开始前可确定循环次数。2、什么是面向过程式语言?有什么特点?面向过程式语言,也叫命令式语言或强制式语言,它是通过指明一列可执行的运算及运算的次序来描述计算过程的语言。命令式语言以冯诺依曼式计算机体系结构为背景。机器语言与汇编语言是最早问世的命令式语言。FORTRAN,ALGOL,COBOL,PASCAL,C,Ada等高级语言也属过程式语言,其变量对应于存储单元,对变量的访问就是对相应存储单元的访问。各个语句在程序中的顺序以及转向语句等控制语句则明确规定了机器的执行
12、步骤,这就是冯诺依曼式体系结构的思维方式在程序设计中的反映。过程式语言程序的本质是重复地、按步地计算低级(非抽象)值并将之赋给变量(对象),这就迫使程序人员去关心比较低级的细节,而这不适用于设计复杂算法。因此,几十年来过程式语言一直向着隐蔽低级机器属性、提高程序层次与抽象性的方向发展。3、结构化程序设计方法的主要技术是什么?结构化程序设计方法的主要技术是自顶向下、逐步求精。具体地说,就是在接受一个任务之后,纵观全局,先设想好整个任务分为几个子任务,每一个子任务又可以进行细分,直到不需要细分为止。这种方法就叫做“自顶向下、逐步求精”。采用这种方法考虑问题比较周全,结构清晰,层次分明。用这种方法也
13、便于验证算法的正确性。在向下一层细分之前应检查本层设计是否正确,只有上一层是正确的才可以继续细分。如果每一层设计都没有问题,则整个算法就是正确的。由于每一层向下细分时都不太复杂,因此容易保证整个算法的正确性。检查时也是由上而下逐层检查,这样做思路清晰,可以有条不紊地一步一步地进行,既严谨又方便。4、结构化程序设计的主要特征与风格是什么?结构化程序设计的主要特征与风格如下所述。(1)一个程序按结构化程序设计方式构造时,由三种基本控制结构:顺序结构、选择结构和循环结构构成。(2)有限制地使用goto语句。鉴于goto语句的存在使程序的静态书写顺序与动态执行顺序十分不一致,导致程序难读难理解,容易存
14、在潜在的错误,难于证明正确性,有人主张程序中禁止使用goto语句,但有人则认为goto语句是一种有效设施,不应全盘否定而完全禁止使用。结构程序设计并不在于是否使用goto语句,因此作为一种折衷,允许在程序中有限制地使用goto语句。(3)往往藉助于体现结构化程序设计思想的所谓结构化程序设计语言来书写结构化程序,并采用一定的书写格式以提高程序结构的清晰性,增进程序的易读性。(4)它强调了程序设计过程中人的思维方式与规律,是一种自顶向下的程序设计策略,它通过一组规则、规律与特有的风格对程序设计细分和组织。对于小规模程序设计,它与逐步精化的设计策略相联系,即采用自顶向下、逐步求精的方法对其进行分析和
15、设计;对于大规模程序设计,它则与模块化程序设计策略相结合,即将一个大规模的问题划分为几个模块,每一个模块完成一定的功能。5、程序的最基本控制结构有几种?分别叫什么?如何组成千变万化的程序?参考答案:最基本的程序控制有以下三种:顺序执行、分支控制和循环控制。(3分)这三种执行控制的任意组合和重复、嵌套就可以描述任意复杂的程序。(2分)四、写出程序的运行结果1、写出程序运行结果。 #include main ( ) int a=3, b=7; printf (%dn, +a + +b); /* */ printf (%dn, b%a); /* */ 程序运行结果是: 12 02、阅读下面的程序并回
16、答问题。 #include main( ) int a,b,m,n; scanf ( ”%d%d, &a, &b); m = n = 1; if (a0) m = m+n; if (ab) n = 2*m; else if(a=b) n = 5; else n = m+n; printf ( m=%d n=%dn, m, n ); 为了输出 n=4,变量a和b应具备条件 。0ab3、阅读程序,写出程序的输出结果。 #include main ( ) char i, j; for ( i=0, j=9; ij; i+, j- ) printf(%c%c, i, j); printf(n); 运行
17、结果是:09182736454、写出程序运行结果。 #include main ( ) int a, b, c; a=1; b=2; c=3; if (ab) if (ac) printf(%d, a); else printf (%d, b); printf (%dn, c); 运行结果是:35、阅读程序写出程序的输出结果。 #include main( ) int i=0,j=0,k=0,m; for ( m=0;m4;m+ ) switch ( m ) case 0: i=m+; case 1: j=m+; case 2: k=m+; case 3: m+; printf (n%d,%d
18、,%d,%d,i,j,k,m); 运行结果是:0,1,2,56 #include void main( ) int a=1,b=4,c=2; a=(a+b)/c; printf(“%d n”,-a); 运行结果:17 void main ( ) char c1=67; /*A的ASCII码值为65 */ if (A =c1 & c1=Z) printf(“%d,%c”,c1,c1+1); else printf(“%c”,c1); 运行结果: 67,D8 viod main ( ) int a=0, n=5; for ( ; ; ) a+; n-; printf(“%d,”,a); a=n;
19、if (n=0) break; printf(“%d”,a); 运行结果:1,5,4,3,2,09 main() int k=10; char c=b; do swith(c+) case a:k+; case b:k-; case c:k+=3;break; case d:k=k%4; while(c!=c);printf(“%dn”,k ); 运行结果:1210 include main() int x = 1,a = 0,b = 0; switch(x) case 0; b + +; case 1; a + +; case 2; a + +;b + +; printf (“a = % d
20、 ,b = % d n”,a,b);运行结果: a=1,b=111、写出程序的运行结果。 #include main( ) int a=2, b=-1, c=2; if ( ab ) if ( b0 ) c=0; else c+=1; printf (%dn, c); 运行结果是:212、阅读程序写出运行结果。 #include main ( ) char ch; ch = getchar ( ); switch ( ch ) case 65: printf (”%c”, A); case 66: printf (”%c”, B); default: printf (”%sn”, ”other
21、”); 如程序可以正常运行,当从键盘输入字母A时,输出结果为 。运行结果是:ABother13、写出程序运行结果。main () int x=23, y=10; do printf(”%d %d”, x-,+y); while ( ! x );该程序的执行结果是_。23 1114、写出程序运行结果。 #include main( ) int k=1, j=0; while ( k+j j ) j=j+2; else k = k+2; printf ( %d %dn, k, j ); 该程序的执行结果是_和_。5 615、阅读程序,写出程序的输出结果。 main ( ) int a=0, n=5
22、; for ( ; ; ) a+; n-; printf(“%d,”,a); a=n; if (n=0) break; printf(“%d”,a); 运行结果:_1, 5, 4, 3, 2, 016、阅读下面的程序并回答问题。 #include main ( ) int a=13, b=-7; printf (%dn, a/b); /* */ printf (%dn, b/a*a); /* */ 程序运行结果是:_和_。 1 017、阅读程序,写出程序的输出结果。 #include main ( ) int i=1, j=2; if ( i != j ) printf(YESn); else
23、 printf(NOn); 运行结果是:_。YES18、阅读程序,写出程序的输出结果。 main ( ) int a=0; for ( a=0; a3 ; a+) ; printf(%dn, a); 运行结果:_。319、写出程序运行结果。(2分) #include main( ) char c=A; if ( 0= c =9 ) printf (”YES”); else printf (”NO”); 该程序的执行结果是_。YES20、写出程序运行结果。(4分) #include main ( ) int i,j; for ( i=0, j=10; i8; y=+i ) printf (”%d
24、 %d ”, x-, y); 运行结果:10 10 9 122、以下程序的输出结果是_ 。void main() int x=17,y=26; printf(%d n,y/=(x%6);5五、程序设计1、编写一程序,从键盘输入10个实数,计算并输出这10个数的平均值。#include main( ) int i; double x, sum=0; for (i=1; x=10; x+) scanf (“%f”, %x) sum += x; printf(%fn, sum/10 ) ; 2、编写程序,计算1!2!3!.n!的值,其中n的值由键盘输入。includemain() int i,j,n
25、; double sum=0,fact=1; printf(“Please input n:”); scanf(“%d”,&n); for (i=1;1=n;i+) fact=1; for (j=1;j=k;j+) fact=fact*j; sum=sum+fact; printf(“num=%.2lf”,sum); 3、从键盘输入h值,输出h行用*号组成等腰三角形。例:输入 h=4,输出的图形如下:* * * * * * * * * * * * *#include main ( ) int h, k, j; scanf (”%d”, &h); for ( k=1; k=h; k+) /* 控
26、制打印 h 行 */ for ( j=1; j=h-k; j+) /* 打印空格 */ printf (” ”); for ( j=1; j=2*k-1; j+) /* 打印 * 号 */ printf (”*”); printf(”n”) ; 4、从键盘输入h值,输出h行用*号组成的菱形。例:输入h=4,输出的图形如下: * * * * * * * * * * * * * * * * * * * * * * * * *#include main ( ) int h, k, j, m, n ; printf (Enter H:); scanf (%d, &h); for (j=1; j=2*h-1; j+) /* 行控制 */ if (j=h) m=h-j; n=2*j-1; else m=j-h; n=4*h-1-2*j; for (k=1; k=m; k+) /* 打印空格 */ printf ( ); for (k=1; k=n; k+) /* 打印 * */ printf (*); printf(n); 5、编写程序。从键盘输入h值,输出h行用 * 号组成的平行四边形。例:输入 h=4,输出的图形如下:* * * * * * * *
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1