《程序设计基础》作业三讲评

上传人:卷*** 文档编号:122490865 上传时间:2022-07-20 格式:DOC 页数:20 大小:74.50KB
返回 下载 相关 举报
《程序设计基础》作业三讲评_第1页
第1页 / 共20页
《程序设计基础》作业三讲评_第2页
第2页 / 共20页
《程序设计基础》作业三讲评_第3页
第3页 / 共20页
点击查看更多>>
资源描述
程序设计基本作业三一、 填空题1. 常用的线性构造有_线性表_、_栈_和_队列_等,其重要特性为各个结点之间“先后”有序。2. 常用的非线性构造涉及_树_和_图型_构造。注:以上两题是常用的数据构造线性构造和非线性构造3. 对于一种线性表来说,如果它的表长为0,则我们称它为_空_表。4. 一棵二叉树上第5层的结点数最多为 16 。注:此题考核对于二叉树的性质的理解和掌握5. 设无向图G的顶点数为n,图G至少有 n-1 条边,最多有 n(n-1)/2 条边注:此题是对无向图的理解,无向图个顶点之间的连线没有方向,对于每个顶点都最多有n-1条边和其她顶点相连,n个顶点就有n(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 一端进一端出注:栈的特点就像一摞盘子,因此需要后进现出(先进后出)。 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,则也许的出栈序列: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. 写出下面二叉树的先序遍历、中序遍历、后序遍历时得到的定点序列ABCED先序:ABDEC中序:DEBAC后序:EDBCA注:本题考核对树的遍历的措施的理解。先序就是先遍历根节点,再遍历左,后遍历右;中序就是先遍历左,再遍历根节点,后遍历右;后序就是先遍历左,再遍历右,后遍历根节点;以此措施遍历每一颗子树。程序设计基本作业四一、选择题1、 采用链式存储的有序数据要进行查找,可以采用_A_。A 顺序查找B 折半查找C 顺序索引查找 D 顺序或折半查找2、 螺旋模型中涉及需求定义、风险分析、工程实现和评审四个阶段,在开发过程中_A_。A 每个周期都要涉及这四个阶段 B 每个周期可以涉及不同的阶段C 在最后交付使用之前才进行评审 D 开项目开始时才需要进行风险分析3、 在软件需求完全拟定的状况下,应当采用的软件开发模型是_A_。A 瀑布模型B 渐进式开发模型C 原型模型D 螺旋模型4、流程图中表达判断框的是 B 。A 矩形框 B 菱形框C 圆形框 D 椭圆形框注:回答此题需要掌握流程图的多种符号。二、简答题(答案参照教材)注:如下问题的回答需要对教材第七章波及的内容理解并掌握。1. 什么是软件?什么是软件工程?2. 在软件工程过程中环绕着工程设计、工程支持和工程管理应当遵循什么基本原则?3. 什么是软件的生存周期?如何划分软件的生存周期?4. 迅速原型法的重要思想和特点是什么?作业二答案一、选择题1、 C语言中,使用变量的规定是_。AA 要先定义后使用 B 要先使用后定义C 不需要定义,可以直接使用D 没有明确的规定2、 不是C语言的基本数据类型是_。DA intB doubleC char D bool3、 编程语言提供的三种基本控制构造是_。DA 输入、解决和输出构造B 常量、变量和体现式构造C 体现式、语句和函数构造D 顺序、选择和循环构造4、 在C语言中,决定int数的表达范畴的因素是_。AA int类型占用的字节数量B 人为事先的商定和习惯C 所存储的数据与否有符号D 数在内存中的编码方式5、 C语言中,有关运算符的对的概念是_。DA 运算符具有优先级,同优先级的运算符由括号决定运算顺序B 在不同优先级运算符进行混合运算时,运算的先后顺序取决于结合性C 在同优先级的运算符参与运算时,先计算左侧的运算符D 运算符具有优先级和结合性6、 在C语言中有关循环语句的结论中,错误的是_。DA do-while语句构成的循环至少要执行一次B while语句和for语句可以互相替代C for和while语句的循环控制条件都是当条件成立时执行循环体D do-while语句的循环控制条件是当条件不成立时继续执行循环体二、填空题1、 最基本的程序控制有三种,它们是_,_和_。这三种执行控制的任意组合和反复、嵌套就可以描述任意复杂的程序。顺序执行、分支控制和循环控制2、 C语言中分支语言是_语句和_语句。if,switch3、 C语言中循环语言是_语句,_语句和_语句。while,for和do-while4、 C语言中自增运算符是_,求余数的运算符号是_。+,%5、 C语言中要变化循环语句的流程可以使用语句_,_和_。break,continue和goto三、简答题1、请简要简介面向过程式语言中的三种程序设计的基本构造。顺序构造是指按先后顺序从前到后执行的语句序列。这些语句逻辑上也许有明确的顺序关系,即后一种程序语句依赖于前一种语句,也也许它们之间没有明确的顺序关系,即某些语句的先后顺序并不重要,一种语句逻辑上并不附属于另某些语句。选择构造是指根据鉴定条件控制某些语句与否执行的语句。选择构造可用if-then、if-then-else或case(或switch)等语句进行描述。当鉴定条件成立时需要执行一组语句,且不成立时不需要执行这些语句,那么应当采用if-then语句。当鉴定条件成立时需要执行一组语句,否则需要执行另一组语句时,可采用if-then-else语句。当根据体现式的取值状况在多种动作中选用其一执行时,可采用case语句。循环构造是指可反复执行一组语句(称为循环体)的程序语句。根据反复方式的不同,循环构造可分为while型循环、until型循环和for型循环。while型循环是在指定的条件(称为循环条件)成立时,反复执行循环体,其特点是执行循环体前先鉴定循环条件,因此也许一次也不执行循环体。until型循环将反复执行循环体,直到循环条件成立才结束该反复,其特点是每执行一次循环体后鉴定循环条件,因此至少执行一次循环体。for型循环将循环体反复执行给定次数,其特点是循环开始前可拟定循环次数。2、什么是面向过程式语言?有什么特点?面向过程式语言,也叫命令式语言或强制式语言,它是通过指明一列可执行的运算及运算的顺序来描述计算过程的语言。命令式语言以冯诺依曼式计算机体系构造为背景。机器语言与汇编语言是最早问世的命令式语言。FORTRAN,ALGOL,COBOL,PASCAL,C,Ada等高档语言也属过程式语言,其变量相应于存储单元,对变量的访问就是对相应存储单元的访问。各个语句在程序中的顺序以及转向语句等控制语句则明确规定了机器的执行环节,这就是冯诺依曼式体系构造的思维方式在程序设计中的反映。过程式语言程序的本质是反复地、按步地计算低档(非抽象)值并将之赋给变量(对象),这就迫使程序人员去关怀比较低档的细节,而这不合用于设计复杂算法。因此,几十年来过程式语言始终向着隐蔽低档机器属性、提高程序层次与抽象性的方向发展。3、构造化程序设计措施的重要技术是什么?构造化程序设计措施的重要技术是自顶向下、逐渐求精。具体地说,就是在接受一种任务之后,纵观全局,先设想好整个任务分为几种子任务,每一种子任务又可以进行细分,直到不需要细分为止。这种措施就叫做“自顶向下、逐渐求精”。采用这种措施考虑问题比较周全,构造清晰,层次分明。用这种措施也便于验证算法的对的性。在向下一层细分之前应检查本层设计与否对的,只有上一层是对的的才可以继续细分。如果每一层设计都没有问题,则整个算法就是对的的。由于每一层向下细分时都不太复杂,因此容易保证整个算法的对的性。检查时也是由上而下逐级检查,这样做思路清晰,可以有条不紊地一步一步地进行,既严谨又以便。4、构造化程序设计的重要特性与风格是什么?构造化程序设计的重要特性与风格如下所述。(1)一种程序按构造化程序设计方式构造时,由三种基本控制构造:顺序构造、选择构造和循环构造构成。(2)有限制地使用goto语句。鉴于goto语句的存在使程序的静态书写顺序与动态执行顺序十分不一致,导致程序难读难理解,容易存在潜在的错误,难于证明对的性,有人主张程序中严禁使用goto语句,但有人则觉得goto语句是一种有效设施,不应全盘否认而完全严禁使用。构造程序设计并不在于与否使用goto语句,因此作为一种折衷,容许在程序中有限制地使用goto语句。(3)往往藉助于体现构造化程序设计思想的所谓构造化程序设计语言来书写构造化程序,并采用一定的书写格式以提高程序构造的清晰性,增进程序的易读性。(4)它强调了程序设计过程中人的思维方式与规律,是一种自顶向下的程序设计方略,它通过一组规则、规律与特有的风格对程序设计细分和组织。对于小规模程序设计,它与逐渐精化的设计方略相联系,即采用自顶向下、逐渐求精的措施对其进行分析和设计;对于大规模程序设计,它则与模块化程序设计方略相结合,即将一种大规模的问题划分为几种模块,每一种模块完毕一定的功能。5、程序的最基本控制构造有几种?分别叫什么?如何构成千变万化的程序?参照答案:最基本的程序控制有如下三种:顺序执行、分支控制和循环控制。(3分)这三种执行控制的任意组合和反复、嵌套就可以描述任意复杂的程序。(2分)四、写出程序的运营成果1、写出程序运营成果。 #include main ( ) int a=3, b=7; printf (%dn, +a + +b); /* */ printf (%dn, b%a); /* */ 程序运营成果是: 12 02、阅读下面的程序并回答问题。 #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); 运营成果是:4、写出程序运营成果。 #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,%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; 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 ,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”); 如程序可以正常运营,当从键盘输入字母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; 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 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 %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; 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+) /* 控制打印 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,输出的图形如下:* * * * * * * * * * * * * *#include main ( ) int h, k, j; scanf (”%d”, &h); for ( k=1; k=h; k+) /* 控制打印 h 行 */ for ( j=1; j=h-k; j+) /* 打印空格 */ printf (” ”); for ( j=1; j=k; j+) /* 打印 * 号 */ printf (”*”); printf(”n”) ; 6、输入两个数a和b,互换它们的值后输出a和b的值。void main() int a,b,t; scanf(%d%d,&a,&b); printf(%d,%dn,a,b); t=a; a=b; b=t; printf(%d,%d,a,b);
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!