第6章 程序设计与算法分析(答案)
C语言程序设计第06章 数组
1 4 2 3 思考: 0 0 0 0 0 注意:在定义数组时,如果没有为数组变量 1、如果想使一个数组中全部10个元 赋初值,那么就不能省略数组的大小。而且 素值为0,可以怎样写? a数组不初始化,其数组元素为随机值。 1 4 0 2 3 0 0 0 0 100 2、如果想使一个数组中全部 个元 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 素值为1,又该怎样写? 例当对全部数组元素赋初值时,可以省略数组变量的大 char str[ ] = {'a', 'b', 'c', 'd', 'e' }; (5) 则数组str的实际大小为5。 小,此时数组变量的实际大小就是初值列表中表达式的个数。
//超出了数组的大小
(3) 表达式1是第1个数组元素的值,表达式2是第2个 数组元素的值,依此类推; 例 int a[5] = {0, 1, 2, 3, 4}; 经过以上定义和初始化后, a[0] = 0,a[1] = 1,a[2] = 2,a[3] = 3,a[4] = 4。
9
(4) 如果表达式的个数小于数组的大小,则未指定值的 数组元素被赋值为0; 例 int a[10] = {0, 1, 2, 3, 4};
7
<6>C语言中规定数组元素的下标总是从0开始, 例如int a[10];说明整型数组a,有10个元素。这10个
元素是: a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8], a
[9]; 注意最后一个元素是a[9],而不是a[10],该数 组不存在数组元素a[10]。 并且特别值得注意的是,C编译器对数组下标越 界不作检查。
C++程序设计 第六章 数组
C++程序设计第6章数组单个变量只能存放一个数据值。
当程序中要处理一组相同类型、彼此相关的一组数据时,单个变量就不适合了,就需要一种特殊的数据结构来处理,这就是数组。
数组(array)是一种派生类型。
一个数组能同时存放多个数据值,并能对每个数据进行访问。
本章将介绍一维数组、二维数组和字符数组的定义及使用。
6.1 一维数组一个数组(array)是由相同类型的一组变量组成的一个有序集合。
数组中的每个变量称为一个元素(element),所有元素共用一个变量名,就是数组的名字。
数组中的每个元素都有一个序号,称为下标(index)。
访问一个元素就可以用数组名加下标来实现。
数组必须先定义后使用。
6.1.1 一维数组的定义一维数组就是具有一个下标的数组。
定义一个数组有3个要素:类型、名称与大小。
语法格式为:<数据类型> <数组名> [<常量表达式>]其中,<数据类型>确定了该数组的元素的类型,可以是一种基本数据类型,也可以是已定义的某种数据类型。
<数组名>是一个标识符,作为数组变量的名字。
方括号中的<常量表达式>必须是一个正整型数据,其值为元素的个数,即数组的大小或长度。
注意这里的方括号[]表示数组,而不是表示可缺省内容。
例如,下面定义了三个不同类型的数组:int a[5]; //定义了一个int数组afloat b[20]; //定义了一个float数组bdouble c[5]; //定义了一个double数组c对于上面数组a,元素类型为int,a是数组名,方括号中的10表示数组的长度,即该数组包含了5个元素,分别是a[0]、a[1]、a[2]、a[3]、a[4]。
如果一个数组有n个元素,那么数组中元素的下标从0开始到n-1。
具有相同类型的数组可以在一条说明语句中定义。
例如:int a1[5], a2[4]; //同时定义两个整型数组具有相同类型的单个变量和数组也可以在一条语句中定义。
(陈慧南 第3版)算法设计与分析——第6章课后习题答案
⑥ 选择作业 1,则 X 6, 2,3,5,1 。将其按照期限 di 非减次序排列可
得:
ID
di
5
1
6
2
3
3
1
3
2
4
作业5
作业3 作业2
-1
0
1
2
3
4
作业6 作业1(冲突)
该集合无可行排序,因此 X 6, 2,3,5,1 不可行, X 6, 2,3,5 ;
3
⑦ 选择作业 0,则 X 6, 2,3,5, 0 。将其按照期限 di 非减次序排列
可得:
ID
di
5
1
0
1
6
2
3
3
2
4
作业5
作业3 作业2
-1
0
1
2
3
4
作业0(冲突)作业6
该集合无可行排序,因此 X 6, 2,3,5, 0 不可行,X 6, 2,3,5 ;
⑧ 选择作业 4,则 X 6, 2,3,5, 4 。将其按照期限 di 非减次序排列
可得:
ID
Hale Waihona Puke di516
12,5,8,32, 7,5,18, 26, 4,3,11,10, 6 。请给出最优存储方案。
解析:首先将这 13 个程序按照程序长度非降序排列,得:
程序 ID
9 8 1 5 12 4 2 11 10 0 6 7 3
程序长度 ai 3 4 5 5 6 7 8 10 11 12 18 26 32
根据定理可知,按照程序编号存放方案如下:
解析:已知 Prim 算法时间复杂度为 O n2 ,受顶点 n 影响;
Kruskal 算法时间复杂度为 O m logm ,受边数 m 影响;
第6章C语言程序设计(张曙光)教材各章习题解答
1.(1)数目固定、类型相同的数据(2)在内存中占有一段连续的存储空间(3)a[0]、a[1]、a[2]、a[3]、a[4](4)0 9(5)2(6)按行存放(7)m n m×n(8)7(9)实参数组名(地址)(10)引用了错误的数组元素a[10]2.(1)A)(2)C)(3)D)(4)B)(5)A)(6)D)(7)C)(8)C)(9)B)(10)C)3.(1)①&a[i] ②a[i](2)③t=0; ④(i=0;i<10;i++) ⑤(a[i]==x) ⑥t=1;(3)⑦&base ⑧n%base; ⑨n/base; ⑩i++; ⑾(num[j]<10) ⑿'A'+ (num[j]-10);(4)⒀s[i]>k ⒁findmax(a,N)4.(1)1638276(2)3,5,7,(3)s=18(4)16(5)5 3 3 5(6)0245.#include<stdio.h>#define M 4#define N 4int main(void ){ int a[M], b[N],c[M+N];int i=0, j=0 , k=0;for(i=0;i<M;i++)scanf("%d",&a[i]);for(j=0;j<N;j++)scanf("%d",&b[j]);i=j=0;while(i<M && j<N)if (a[i]<b[j]){ c[k] = a [i];i++; k++; }else{ c[k] = b [j];j++; k++; }while(i<M){ c[k] = a [i];i++; k++; }while(j<N){ c[k] = b [j];j++; k++; }for(i=0;i<M+N;i++)printf("%d,",c[i]);printf("\n");return 0;}6.#include <stdio.h>int main(void){ int k,i,t,n,num[50];printf("Input number n:");scanf("%d",&n);for(i=0;i<n;i++)num[i]=i+1; /*以1至n为序给每个人编号*/i=0; /*每次循环时的计数变量*/k=0; /*按1、2、3报数时的计数变量*/t=0; /* 退出人数*/while(t<=n-1) /*当退出人数比n-1少时(即未退出人数大于1时)执行循环体*/ { if(num[i]!=0) k++;if(k==3) /*将退出的人的编号置为0*/{ printf("%d,",num[i]);num[i]=0;k=0;t++;}i++;if(i==n) i=0; /*报数到尾后,i恢复为0*/ }return 0;}7.#include <stdio.h>int main(void){int a[3][4]={0};int i,j,max,max_i,max_j;printf("Please input a 3X4 matrix:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);max=a[0][0];max_i=max_j=0;for(i=0;i<3;i++)for(j=0;j<4;j++)if(a[i][j]>max){max=a[i][j];max_i=i;max_j=j;}printf("The max is %d,row %d,col %d\n",max,max_i,max_j);return 0;}8.#include <stdio.h>#define N 5int main(void){int a[N][N],b[N][N];int i,j;printf("Please input a matrix:\n");for(i=0;i<N;i++)for(j=0;j<N;j++)scanf("%d",&a[i][j]);printf("Please input b matrix:\n");for(i=0;i<N;i++)for(j=0;j<N;j++)scanf("%d",&b[i][j]);for(i=0;i<N;i++){ b[i][0]=a[N-1][i];b[i][N-1]=a[0][i];}printf("b matrix:\n");for(i=0;i<N;i++){ for(j=0;j<N;j++)printf("%d\t",b[i][j]);printf("\n");}return 0;}9.#include <stdio.h>#define N 10void f(int a[],int n){int b[N],i,m=0;for(i=0;i<N;i++)if(a[i]%2==1){b[m]=a[i];m++;}for(i=0;i<m;i++)printf ("%5d",b[i]);}int main(void){int c[N];int i,j;printf("Please input c matrix:\n");for(i=0;i<N;i++)scanf("%d",&c[i]);f(c,N);return 0;}10.#include <stdio.h>#define M 10void sub(int a[ ], int t, int ix){int i;for( i=ix; i<t; i++) a[i-1]=a[i];}void main( ){int i,n, x[M];printf("输入数组:\n");for( i=0; i<M; i++) scanf("%d", &x[i] );printf("输入n:\n");scanf("%d", &n);printf("\n");sub(x, M, n);printf("输出数组从下标%d位置开始向前移动后的数据:\n",n);for( i=0; i<M-1; i++) printf("%d ", x[i] );printf("\n");}11.递归算法:#include "stdio.h"long fib( int n ){ if (n>2)return (fib(n-1)+fib(n-2));elsereturn ( 1 );}int main(void){ int i;for(i=1;i<=20;i++)printf(" %ld \n",fib( i ) );return 0;}非递归算法:#include "stdio.h"int main(void){long a[20];int i;a[0]=1;a[1]=1;for(i=2;i<20;i++)a[i]=a[i-1]+a[i-2];for(i=0;i<20;i++)printf("%ld\n",a[i]);return 0;}。
C语言程序设计(第3版)第6章习题参考答案
gets(stridiom1);
printf("\nplease input the second idiom: ");
gets(stridiom2);
fnConcat(stridiom1,stridiom2);
printf("\nthe result is: %s",stridiom1)=0;
while(b[j] != '\0') /*把第二个字符串的内容连接到第一个字符串的后面*/
{
a[i+j] = b[j];
j++;
}
a[i+j]= '\0'; /*添加字符串结束符*/
}
void main()
{ char stridiom1[80],stridiom2[80];
i++;
}
a[j]= '\0'; /*添加字符串结束符*/
}
void main()
{ char stridiom1[80];
printf("\nplease input the first idiom: ");
gets(stridiom1);
fnConvert(stridiom1);
printf("\nthe result is: %s",stridiom1);
scanf("%d",&n);
printf("%ld",fnF(n));
getch();
}
(4)编一函数判别某一数是否为素数,若是,返回值为1,否则,返回值为0。
第6章 算法与程序设计
教案讲稿第六章算法与程序设计[旧课复习]:复习内容:1.PowerPoint幻灯片的基本制作方法2.PowerPoint 幻灯片的动画设计复习目的:加强学生熟练掌握PowerPoint基本操作复习时长:大约5分钟[新课导入]:导入方式:展示一个自制应用程序导入目的:让学生初步了解程序设计的应用理念导入时长:大约5分钟[新课讲授]:重点:掌握算法的基本特征;掌握结构化程序设计方法。
难点:掌握选择结构、循环结构的特点。
方法:运用多媒体辅助教学,采用案例教学和任务驱动等教学法。
6.1 计算机求解问题的方法(1)界定问题。
(2)分析问题。
(3)建模。
(4)分析模型建立算法。
6.2 算法及算法的描述6.2.1 算法的定义算法(Algorithm)是指完成某一特定任务所需要的具体方法和步骤,是有穷规则的集合。
6.2.2 算法的基本特征算法是程序设计的“灵魂”,算法+数据结构=程序。
算法独立于任何具体的程序设计语言,一个算法可以用多种程序设计语言来实现。
算法具有以下基本特征。
(1)输入:一个算法有0个或多个输入,用以表征算法开始之前运算对象的初始情况。
(2)输出:一个算法必须有一个或多个输出,输出是算法计算的结果,没有任何输出的程序是没有意义的。
(3)确定性:算法对每一步骤的描述必须确切而无歧义,以保证算法的实际执行结果精确地符合要求或期望。
(4)有穷性:算法必须在有穷步骤内完成任务,并且每一步骤都可以在有穷时间内完成。
(5)可行性:算法中描述的操作都是可以通过已经实现的基本运算,执行有限次数来实现。
6.2.3 算法的评价对于算法的评价有两个基本标准:时间复杂度和空间复杂度。
所谓时间复杂度,即执行这个算法需要多少时间。
所谓空间复杂度,即执行这个算法需要占用多少资源(可以理解为占用了多少计算机存储单元)。
6.2.4 算法的描述计算机算法无非是将人脑抽象出的模型程序化,而求解问题的关键还是在于人类本身的思维。
算法的描述是基于一种形式地表达6.2.5 算法的表示常用的描述工具有:流程图、N-S图、PAD图、伪码等。
算法设计与分析智慧树知到答案章节测试2023年山东交通学院
第一章测试1.解决一个问题通常有多种方法。
若说一个算法“有效”是指( )A:这个算法能在人的反应时间内将问题解决B:(这个算法能在一定的时间和空间资源限制内将问题解决)和(这个算法比其他已知算法都更快地将问题解决)C:这个算法能在一定的时间和空间资源限制内将问题解决D:这个算法比其他已知算法都更快地将问题解决答案:B2.农夫带着狼、羊、白菜从河的左岸到河的右岸,农夫每次只能带一样东西过河,而且,没有农夫看管,狼会吃羊,羊会吃白菜。
请问农夫能不能过去?()A:不一定B:不能过去C:能过去答案:C3.下述()不是是算法的描述方式。
A:自然语言B:程序设计语言C:E-R图D:伪代码答案:C4.有一个国家只有6元和7元两种纸币,如果你是央行行长,你会设置()为自动取款机的取款最低限额。
A:40B:42C:29D:30答案:D5.算法是一系列解决问题的明确指令。
()A:对B:错答案:A6.程序=数据结构+算法()A:错B:对答案:B7.同一个问题可以用不同的算法解决,同一个算法也可以解决不同的问题。
()A:错答案:B8.算法中的每一条指令不需有确切的含义,对于相同的输入不一定得到相同的输出。
( )A:错B:对答案:A9.可以用同样的方法证明算法的正确性与错误性 ( )A:对B:错答案:B10.求解2个数的最大公约数至少有3种方法。
( )A:错B:对答案:A11.没有好的算法,就编不出好的程序。
()A:对B:错答案:A12.算法与程序没有关系。
( )A:错B:对答案:A13.我将来不进行软件开发,所以学习算法没什么用。
( )A:对B:错答案:B14.gcd(m,n)=gcd(n,m m od n)并不是对每一对正整数(m,n)都成立。
( )A:错B:对答案:A15.既然程序设计语言可以描述算法,所以算法就是程序。
( )A:错B:对答案:A第二章测试1.并不是所有的算法,规模更大的输入需要更长的运行时间。
( )A:对答案:B2.算法效率分析框架主要关心一个算法的基本操作次数的增长次数,并把它作为算法效率的主要指标。
大学_计算机算法设计与分析第4版(王晓东著)课后答案下载
计算机算法设计与分析第4版(王晓东著)课后答
案下载
计算机算法设计与分析第4版内容简介
第1章算法概述
1.1 算法与程序
1.2 算法复杂性分析
1.3 NP完全性理论
算法分析题1
算法实现题1
第2章递归与分治策略
2.1 递归的概念
2.2 分治法的基本思想
2.3 二分搜索技术
2.4 大整数的乘法
2.5 Strassen矩阵乘法
2.6 棋盘覆盖
2.7 合并排序
2.8 快速排序
2.9 线性时间选择
2.10 最接近点对问题
第3章动态规划
第4章贪心算法
第5章回溯法
第6章分支限界法
第7章随机化算法
第8章线性规划与网络流
附录A C++概要
参考文献
计算机算法设计与分析第4版目录
本书是普通高等教育“十一五”__规划教材和国家精品课程教材。
全书以算法设计策略为知识单元,系统介绍计算机算法的设计方法与分析技巧。
主要内容包括:算法概述、递归与分治策略、动态规划、贪心算法、回溯法、分支限界法、__化算法、线性规划与网络流等。
书中既涉及经典与实用算法及实例分析,又包括算法热点领域追踪。
为突出教材的`可读性和可用性,章首增加了学习要点提示,章末配有难易适度的算法分析题和算法实现题;配套出版了《计算机算法设计与分析习题解答(第2版)》;并免费提供电子课件和教学服务。
算法分析与设计智慧树知到答案章节测试2023年黑龙江工程学院
第一章测试1.算法就是一组有穷的规则,它们规定了解决某一特定类型问题的一系列运算。
()A:对B:错答案:A2.计算机的资源最重要的是内存和运算资源。
因而,算法的复杂性有时间和空间之分。
()A:对B:错答案:A3.时间复杂度是指算法最坏情况下的运行时间。
()A:对B:错答案:B4.下面关于算法的说法中正确的是。
(1)求解某一问题的算法是唯一的。
(2)算法中每条指令的执行次数是有限的,执行每条指令的时间也是有限的。
(3)算法的每一条指令是清晰无歧义的。
(4)算法可以用某种程序设计语言具体实现,所以算法和程序是等价的。
()A:(2)(3)B:(1)(3)C:(1)(2)D:(2)(4)答案:A5.描述算法的基本方法有。
(1)自然语言(2)流程图(3)伪代码(4)程序设计语言()A:(1)(2)(3)B:(1)(3)(4)C:(1)(2)(3)(4)D:(2)(3)(4)答案:C6.算法分析是()A:将算法用某种程序设计语言恰当地表示出来B:证明算法对所有可能的合法出入都能算出正确的答案C:对算法需要多少计算时间和存储空间作定量分析D:在抽象数据数据集合上执行程序,以确定是否产生错误结果答案:C7.算法是由若干条指令组成的有穷序列,而且满足以下叙述中的性质。
(1)输入:有0个或多个输入(2)输出:至少有一个输出(3)确定性:指令清晰、无歧义(4)有限性:指令执行次数有限,而且执行时间有限()A:(1)(2)(3)B:(1)(2)(4)C:(1)(2)(3)(4)D:(1)(3)(4)答案:C8.下面函数中增长率最低的是()A:n2B:log2nC:nD:2n答案:B9.下面属于算法的特性有( )。
A:有限性:算法中每条指令的执行次数是有限的,执行每条指令的时间也是有限的。
B:输入:有0个或多个外部量作为算法的输入。
C:确定性:组成算法的每条指令是清晰,无歧义的。
D:输出:算法产生至少一个量作为输出。
答案:ABCD10.当m为24,n为60时,使用欧几里得算法求m和n的最大公约数,需要进行()次除法运算。
高级语言程序设计第6章参考答案
1.6.3习题解答编程题1.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主调函数调用这两个函数,并输出结果。
两个整数由键盘输入。
分析:求两个数a和b的最大公约数:设这个数为x,则x一定小于等于a和b中的较小者min(a,b)。
在区间[1, min(a,b)]中能找到的最后一个同时被a和b整除的那个数,就是a和b的最大公约数x。
求两个数a和b的最小公倍数:设这个数为x,则x一定大于等于a和b中的较大者max(a,b),而小于等于a*b。
在区间[max(a,b), a*b ]中找到的第一个能同时整除a和b的那个数,就是a和b的最小公倍数x。
参考程序代码:#include "stdio.h"f1(int a, int b)/*求最大公约数*/{int x,i;for(i=1;i<=(a<=b?a:b);i++){if(a%i==0&&b%i==0){x=i;}}printf("\n最大公约数为: %d\n",x);}f2(int a, int b)/*求最小公倍数*/{int i,x;for(i=((a>b)?a:b);i<=a*b;i++){if(i%a==0&&i%b==0){x=i;break;}}printf("\n最小公倍数为: %d\n",x);}void main(){int a,b;printf("\n请输入两个数:\n");printf("a=");scanf("%d", &a);printf("b=");scanf("%d", &b);f1(a, b);f2(a, b);}运行结果:请输入两个数:a=4b=16最大公约数为:4最小公倍数为:162.编写一个函数,其功能是对于给定的一个时间数(秒为单位),以“时:分:秒”的格式输出。
计算机程序设计基础(C++)(景红版)课后全部习题及参考答案
()7. short,int都是C++语言的关键字。
()8. C++编译系统对源程序编译时,可以检查出注释语句中的语法错误。
()9. 将一个字符常量放到一个字符变量中,并不是把该字符本身放到内存变量中去,而是将该字符相应的ASCII代码放到存储单元中。
()10. 语句int answer=3+2 9/(10-6);执行完毕后,变量answer的值是7.5。
三、单项选择题1. C++源程序文件的扩展名为()。
(A).CPP(B).OBJ(C).C(D).EXE2. 下列变量名中,()是合法的。
(A)double(B)A+a(C)CHINA(D)5s3. 下列符号能用作C++标识符的是()(A)xyz/2 (B)2xsale (C)x-sale (D)x_sale4. 下列各运算符中,()只能用于整型数据的运算。
(A)+(B)/(C) (D)%5.()不是C++的基本数据类型。
(A)字符类型(B)数组类型(C)整数类型(D)布尔类型6. 下列运算符中,优先级最高的是()。
(A)%(B)!(C)>=(D)/7. 字符串常量“ME”的字符个数是()。
(A)4(B)3(C)2(D)18. 在C++语言中,080是()。
(A)八进制数(B)十进制数(C)十六进制数(D)非法数9. 整型变量i定义后赋初值的结果是()。
int i=2.8 6;(A)12(B)16(C)17(D)1810.如有int m=31;则表达式(m++*1/2)的值是()。
(A)0 (B)15 (C)15.5 (D)1611.每个C++程序都必须有且仅有一个()。
(A)预处理命令(B)主函数(C)函数(D)语句12.在C++语言中,自定义的标志符()。
(A)能使用关键字并且不区分大小写(B)不能使用关键字并且不区分大小写(C)能使用关键字并且区分大小写(D)不能使用关键字并且区分大小写13.下列C++标点符号中表示一条语句结束的是()。
算法设计与分析C++语言描述(陈慧南版)课后答案
第一章1-3. 最大公约数为1。
快1414倍。
主要考虑循环次数,程序1-2的while 循环体做了10次,程序1-3的while 循环体做了14141次(14142-2循环)若考虑其他语句,则没有这么多,可能就601倍。
第二章2-8.(1)画线语句的执行次数为log n ⎡⎤⎢⎥。
(log )n O 。
划线语句的执行次数应该理解为一格整体。
(2)画线语句的执行次数为111(1)(2)16jnii j k n n n ===++=∑∑∑。
3()n O 。
(3)画线语句的执行次数为。
O 。
(4)当n 为奇数时画线语句的执行次数为(1)(3)4n n ++, 当n 为偶数时画线语句的执行次数为 2(2)4n +。
2()n O 。
2-10.(1) 当 1n ≥ 时,225825n n n -+≤,所以,可选 5c =,01n =。
对于0n n ≥,22()5825f n n n n =-+≤,所以,22582()n n n -+=O 。
(2) 当 8n ≥ 时,2222582524n n n n n -+≥-+≥,所以,可选 4c =,08n =。
对于0n n ≥,22()5824f n n n n =-+≥,所以,22582()n n n -+=Ω。
(3) 由(1)、(2)可知,取14c =,25c =,08n =,当0n n ≥时,有22212582c n n n c n ≤-+≤,所以22582()n n n -+=Θ。
2-11. (1) 当3n ≥时,3log log n n n <<,所以()20log 21f n n n n =+<,3()log 2g n n n n =+>。
可选 212c =,03n =。
对于0n n ≥,()()f n cg n ≤,即()(())f n g n =O 。
注意:是f (n )和g (n )的关系。
(2) 当 4n ≥ 时,2log log n n n <<,所以 22()/log f n n n n =<,22()log g n n n n =≥。
国家开放大学《程序设计基础》章节自测参考答案
国家开放大学《程序设计基础》章节自测参考答案第一章导论一、选择题(每题12分,共60分)1.当代计算机的最主要的体系结构称为是______。
A.非冯·诺依曼机B.图灵机C.PASCAL机D.冯·诺依曼机2.计算机软件是指______ 。
A.计算机程序B.计算机程序及其有关文挡C.源程序D.源程序和目标程序3.计算机能直接执行的语言是______。
A.目标语言B.机器语言C.汇编语言D.高级语言4.显示器是______。
A.计算设备B.存储设备C.输入设备D.输出设备5.系统软件的核心软件是______。
A.汇编程序B.操作系统C.编译程序D.机器语言二、判断题(每题10分,共40分)6.CPU主要包括运算器和寄存器两大部分。
(×)7.图灵机由一条双向都可无限延长的被分为一个个小方格的磁带、一个有限状态控制器和一个读写磁头组成。
(√)8.冯·诺依曼在当年发表的EDVAC计算机方案确立了计算机系统的5大基本部件:存储器、控制器、运算器、输入设备和输出设备,同时也规定了5大部件的基本功能。
(√)9.计算机的硬件与软件虽然各有分工,但它们之间的功能界面是浮动的。
随着技术的发展,一些功能既可由硬件实现,也可由软件来完成。
(√)第二章解题要有程序一、选择题(每题6分,共48分)1.JAVA语言的类别是______。
A.面向硬件的程序设计语言B.面向问题的程序设计语言C.面向过程的程序设计语言D.面向对象的程序设计语言2.汇编程序的任务是______。
A.将汇编语言编写的程序转换为目标程序B.将汇编语言编写的程序转换为可执行程序C.将高级语言编写的程序转换为可执行程序D.将高级语言编写的程序转换为汇编语言程序3.C语言是______。
A.高级语言B.机器语言C.目标语言D.汇编语言4.要保证程序在多次反复使用过程中不发生错误,关键应该提高程序的______。
A.可靠性B.有效性C.正确性D.可维护性5.汇编语言属于______。
计算机科学与导论课后习题答案 第6章 程序设计与算法分析
5.简述面向对象和结构化程序设计的区别。
答:面向对象是从本质上区别于传统的结构化方法的一种新方法、新思路。它吸收了结构化程序设计的全部优点,同时又考虑到现实世界与计算机之间的关系,认为现实世界是由一系列彼此相关并且能够相互通信的实体组成,这些实体就是面向对象方法中的对象,每个对象都有自己的自然属性和行为特征,而一类相似对象的共性的抽象描述,就是面向对象方法中的核心——类。
9.用图示法表示语言处理的过程。
答:语言处理的过程如图所示:
10.简述编译程序的概念。
编译程序是把高级语言程序(源程序)作为一个整体来处理,在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),编译后与系统提供的代码库链接,形成—个完整的可执行的机器语言程序(目标程序代码)。
第6章 程序设计与算法分析
习题(答案)
一、选择题
1. A 2. D 3. A 4. C 5. D
6. B 7. B 8. D 9. ABCD 10. D
11. C 12. A 13. B 14. D 15. A
二、简答题
1.简述程序的概念。
答:一个程序就是能够实现特定功能的一组指令序列的集合。或者表示为:程序=算法+数据结构。
答:语法分析是编译过程的第二个阶段,任务是在词法分析的基础上将单词序列分解成各类语法短语,如“程序”、“语句”、“表达式”等等。
14.简述语义处理的功能。
答:编译过程中的语义处理实现两个功能:
(1) 审查每个语法结构的静态语义,即验证语法结构合法的程序是否真正有意义,有时把这个工作称为静态语义分析或静态审查。
《C语言程序设计》课后习题答案第6章
else strcpy(string,str[1]);
if(strcmp(string,str[2])<0)
strcpy(string,str[2]);
printf("其中最大字符串为%s\n",string);
printf("\n");
else
{
for(k=0;k<=4*i;k++)
{
if(k%2==0)printf("*");
else printf(" ");
}
}
for(r=7+2*i;r<=12;r++)printf(" ");
printf("\n");
}
for(i=0;i<=2;i++)
{
for(j=0;j<2+2*i;j++)
6.1
int m,n,temp,b,y;
printf("请输入两个正整数m,n:\n");
scanf("%d,%d",&m,&n);
if(m<n)
{temp=m;
m=n;
n=temp;/*把大数放在m中,小数放在n中*/
}
b=m*n;
while(n!=0) /*求最大公约数*/
{
y=m%n;
m=n;
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
C程序设计第6章
6.1 一维数组 6.2 二维数组 6.3 字符数组 6.4 程序举例6.1 一维数组6.1.1 一维数组的定义和引用一维数组的定义方式为 类型标识符数组名[常量表达式];main() {float s1, s2, s3, s4, s5; printf("Enter five scores: "); scanf("%f , %f , %f, %f, %f", &s1, &s2, &s3, &s4, &s5); printf("\nThe score in reverse order are: "); printf("%f\n", s5); printf("%f\n", s4); printf("%f\n", s3); printf("%f\n", s2); printf("%f\n", s1); }(1)表示数组长度的常量表达式,必须是正的整型常量表达式。
(2)相同类型的数组、变量可以在一个类型说明符下一起说明,互相之间用逗号隔开。
例如,int a[5], b[10], i;(3)C语言不允许定义动态数组,即数组的长度不能依赖于程序运行过程中变化着的量,下面这种数组定义方式是不允许的。
int i; scanf("%d", &i); int a[i];main() {int i; float score[5]; printf("Enter five scores: "); for (i=0; i<5; i++) scanf("%f", &score[i]); printf("\nThe scores in reverse order are: "); for (i=4; i>=0; i--) printf("%4.2f\n", score[i]); } 6.1.2 一维数组的初始化 可以在程序运行后用赋值语句或输入语句使数组中的元素得到值,也可以使数组在程序运行之前(即编译阶段)就得到初值,后者称为数组的初始化。
算法设计与分析习题答案1-6章
习题11. 图论诞生于七桥问题。
出生于瑞士的伟大数学家欧拉(LeonhardEuler ,1707—1783)提出并解决了该问题。
七桥问题是这样描述的:一个人是否能在一次步行中穿越哥尼斯堡(现在叫加里宁格勒,在波罗的海南岸)城中全部的七座桥后回到起点,且每座桥只经过一次,图是这条河以及河上的两个岛和七座桥的草图。
请将该问题的数据模型抽象出来,并判断此问题是否有解。
七桥问题属于一笔画问题。
输入:一个起点输出:相同的点1, 一次步行2, 经过七座桥,且每次只经历过一次3, 回到起点该问题无解:能一笔画的图形只有两类:一类是所有的点都是偶点。
另一类是只有二个奇点的图形。
图 七桥问题南2.在欧几里德提出的欧几里德算法中(即最初的欧几里德算法)用的不是除法而是减法。
请用伪代码描述这个版本的欧几里德算法=m-n2.循环直到r=0m=nn=rr=m-n3 输出m3.设计算法求数组中相差最小的两个元素(称为最接近数)的差。
要求分别给出伪代码和C++描述。
编写程序,求n至少为多大时,n个“1”组成的整数能被2013整除。
#include<iostream>using namespace std;int main(){double value=0;for(int n=1;n<=10000 ;++n){value=value*10+1;if(value%2013==0){cout<<"n至少为:"<<n<<endl;break;}}计算π值的问题能精确求解吗编写程序,求解满足给定精度要求的π值#include <iostream>using namespace std;int main (){double a,b;double arctan(double x);圣经上说:神6天创造天地万有,第7日安歇。
为什么是6天呢任何一个自然数的因数中都有1和它本身,所有小于它本身的因数称为这个数的真因数,如果一个自然数的真因数之和等于它本身,这个自然数称为完美数。
智慧树知到《算法分析与设计》章节测试答案
智慧树知到《算法分析与设计》章节测试答案第一章1、给定一个实例,如果一个算法能得到正确解答,称这个算法解答了该问题。
A:对B:错答案: 错2、一个问题的同一实例可以有不同的表示形式A:对B:错答案: 对3、同一数学模型使用不同的数据结构会有不同的算法,有效性有很大差别。
A:对B:错答案: 对4、问题的两个要素是输入和实例。
A:对B:错答案: 错5、算法与程序的区别是()A:输入B:输出C:确定性D:有穷性答案: 有穷性6、解决问题的基本步骤是()。
(1)算法设计(2)算法实现(3)数学建模(4)算法分析(5)正确性证明A:(3)(1)(4)(5)(2)B:(3)(4)(1)(5)(2)C:(3)(1)(5)(4)(2)D:(1)(2)(3)(4)(5)答案: (3)(1)(5)(4)(2)7、下面说法关于算法与问题的说法错误的是()。
A:如果一个算法能应用于问题的任意实例,并保证得到正确解答,称这个算法解答了该问题。
B:算法是一种计算方法,对问题的每个实例计算都能得到正确答案。
C:同一问题可能有几种不同的算法,解题思路和解题速度也会显著不同。
D:证明算法不正确,需要证明对任意实例算法都不能正确处理。
答案: 证明算法不正确,需要证明对任意实例算法都不能正确处理。
8、下面关于程序和算法的说法正确的是()。
A:算法的每一步骤必须要有确切的含义,必须是清楚的、无二义的。
B:程序是算法用某种程序设计语言的具体实现。
C:程序总是在有穷步的运算后终止。
D:算法是一个过程,计算机每次求解是针对问题的一个实例求解。
答案: 算法的每一步骤必须要有确切的含义,必须是清楚的、无二义的。
,程序是算法用某种程序设计语言的具体实现。
,算法是一个过程,计算机每次求解是针对问题的一个实例求解。
9、最大独立集问题和()问题等价。
A: 最大团B:最小顶点覆盖C:区间调度问题D:稳定匹配问题答案:最大团,最小顶点覆盖10、给定两张喜欢列表,稳定匹配问题的输出是()。
自学考试软件工程第6章例题分析与解答
第6章例题分析与解答
一、填空题
1.软件需求分析之后,软件的设计、编码、测试与语言的特性有很大的关系,这个特性主要是语言的______特性。
[答案]技术
2.为了提高程序的易读性,同时减少错误,提高软件开发效率,编码时注意养成良好的_____。
[答案]程序设计风格
3.源程序中加注释是帮助理解程序的重要手段,注释分为_______两类。
[答案]序言性注释和功能性注释
二、选择题
1.在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,现在人们更重视程序的( )。
A.技巧性
B.保密性
C.一致性
D.可理解性
[答案]D
2.与选择编程语言无关的因素是( )。
A.软件开发的方法
B.软件执行的环境
C.程序设计风格
D.软件开发人员的知识
[答案]C
3.源程序文档化要求在每个模块之前加序言性注释。
该注释内容不应有( )。
A.模块的功能
B.语句的功能
C.模块的接口
D.开发历史
[答案]B
4.不适合作为数据处理的语言是( )。
A.PROLOG
B.C
C.4GL
D.SQL
[答案]A
5.提高程序效率的根本途径并非在于( )。
A.选择良好的设计方法
B.选择良好的数据结构
C.选择良好的算法
D.对程序语句作调整
[答案]D。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第6章程序设计与算法分析
习题(答案)
一、选择题
1. A
2. D
3. A
4. C
5. D
6. B
7. B
8. D
9. ABCD 10. D
11. C 12. A 13. B 14. D 15. A
二、简答题
1.简述程序的概念。
答:一个程序就是能够实现特定功能的一组指令序列的集合。
或者表示为:程序=算法+数据结构。
2.结构化程序设计的思想是什么?
答:结构化程序设计的基本思想就是采用自上而下、逐步求精的设计方法和单入口单出口的控制结构。
3.结构化程序设计的原则是什么?
答:结构化程序设计的原则是:
(1) 使用顺序、选择、循环3种基本控制结构表示程序逻辑。
(2)程序语句组织成容易识别的语句模块,每个模块都是单入口、单出口。
(3)严格控制GOTO语句的使用。
4.结构化程序设计语言采用自顶向下的方法进行程序设计的特点是什么?
答:利用结构化程序设计语言采用自上而下的方法进行程序设计的特点是:
(1) 问题分解成子问题的结构必须与3种基本程序结构之一相对应。
(2) 问题的划分决定了程序的结构。
一方面,子问题的划分决定了这一层次的程序是3种基本结构中的哪一种结构;另一方面,一个问题该如何划分成子问题是灵活的,并不是只有一种分解方法。
分解的好坏就决定了设计的质量,也决定了程序的不同结构。
(3) 问题的边界应该清晰明确。
只有这样才能精确地解决这些子问题,否则就会模棱两可,无从下手。
5.简述面向对象和结构化程序设计的区别。
答:面向对象是从本质上区别于传统的结构化方法的一种新方法、新思路。
它吸收了结构化程序设计的全部优点,同时又考虑到现实世界与计算机之间的关系,认为现实世界是由一系列彼此相关并且能够相互通信的实体组成,这些实体就是面向对象方法中的对象,每个对象都有自己的自然属性和行为特征,而一类相似对象的共性的抽象描述,就是面向对象方法中的核心——类。
6.什么是数据结构?数据的物理结构有哪些?
答:数据结构是指数据元素之间的相互关系的集合,包括了数据的逻辑结构、物理结构以及数据的运算。
数据的物理结构主要有四种,分别是顺序结构、链表结构、索引结构及散列结构。
(1) 顺序结构:是把所有元素存放在一片连续的存储单元中,逻辑上相邻的元素存储在物理位置相邻的存储单元中,由此得到的存储表示称为顺序存储结构。
(2) 链表结构:对逻辑上相邻的元素不要求其物理位置相邻,元素间的逻辑关系通过附设的指针域来表示,由此得到的存储表示称为链式存储结构。
(3) 索引结构:每个数据结构建立索引表,每个数据元素占用表中的一项,每个表项通常包含关键字和地址指针。
其中的关键字是能够惟一标志一个数据元素的数据项。
(4) 散列结构:通过构造相应的散列函数,由散列函数的值来确定元素存放的地址。
7.什么是算法,算法的特性有哪些?
答:算法(Algorithm)是一组明确的、可以执行的步骤的有序集合,它在有限的时间内终止并产生结果。
算法的特性有:
(1) 有穷性(可终止性):一个算法必须在有限个操作步骤内以及合理的有限时间内执行完成。
(2) 确定性:算法中的每一个操作步骤都必须有明确的含义,不允许存在二义性。
(3) 有效性(可执行性):算法中描述的操作步骤都是可执行的,并能最终得到确定的结果。
(4) 输入及输出:一个算法应该有零个或多个输入数据、有1个或多个输出数据。
8.什么是算法的时间复杂度和空间复杂度,如何表示?
答:时间复杂度是与求解问题规模、算法输入相关的函数,该函数表示算法运行所花费的时间。
记为:T(n),其中,n代表求解问题的规模。
算法的空间复杂度(Space complexity)度量算法的空间复杂性、即执行算法的程序在计算机中运行所占用空间的大小。
简单讲,空间复杂度也是与求解问题规模、算法输入相关的函数。
记为:S(n),其中,n代表求解问题的规模。
时间复杂度和空间复杂度同样,引入符号“O”来表示T(n)、S(n)与求解问题规模n之间的数量级关系。
9.用图示法表示语言处理的过程。
答:语言处理的过程如图所示:
10.简述编译程序的概念。
编译程序是把高级语言程序(源程序)作为一个整体来处理,在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),编译后与系统提供的代码库链接,形成—个完整的可执行的机器语言程序(目标程序代码)。
11.用图示法表示编译程序的框架。
答:编译程序的框架如图所示:
12.词法分析的任务是什么?
答:作为编译过程的第一个阶段,其任务是从左到右一个字符,一个字符地对源程序进行扫描,读入源程序,对构成源程序的字符流进行扫描和分解,通过词法分析从而识别出一个个单词(也称单词符号或符号)。
13.语法分析的任务是什么?
答:语法分析是编译过程的第二个阶段,任务是在词法分析的基础上将单词序列分解成各类语法短语,如“程序”、“语句”、“表达式”等等。
14.简述语义处理的功能。
答:编译过程中的语义处理实现两个功能:
(1) 审查每个语法结构的静态语义,即验证语法结构合法的程序是否真正有意义,有时把这个工作称为静态语义分析或静态审查。
(2) 如果静态语义正确,则语义处理要执行真正的翻译,要么生成程序的一种中间表示形式(中间代码),要么生成实际的目标代码。
15.简述中间代码的概念。
答:所谓“中间代码”是一种结构简单、含义明确的记号系统,这种记号系统可以设计为多种多样的形式,重要的设计原则为两点:一是容易生成;二是容易将它翻译成目标代码。
16.目标代码生成阶段的任务是什么?
答:目标代码生成阶段的任务是把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。
这是编译的最后阶段,它的工作与硬件系统结构和指令含义有关,这个阶段的工作很复杂,涉及到硬件系统功能部件的运用、机器指令的选择、各种数据类型变量的存储空间分配以及寄存器和后援寄存器的调度等。
三、讨论题
1.作为一个计算机专业的学生,程序设计是大学学习的重要内容之一,程序设计的内容很多,语言的更新也很快,如何才能更好地掌握程序设计?如何利用语言编程?怎样才能克服害怕编程的思想?
答案略。
2.算法是程序设计的基础,没有好的算法,就不可能写出好的程序,但是,学习算法涉及到很多交叉学科的知识,怎样才能把这些知识融会贯通,写出优秀的程序?
答案略。