习题七参考答案部分

2024-12-21

习题七参考答案部分(共6篇)

习题七参考答案部分 篇1

一、密码学概述部分:

1、什么是密码体制的五元组。

五元组(M,C,K,E,D)构成密码体制模型,M代表明文空间;C代表密文空间;K代表密钥空间;E代表加密算法;D 代表解密算法

2、简述口令和密码的区别。

密码:按特定法则编成,用以对通信双方的信息进行明、密变换的符号。换而言之,密码是隐蔽了真实内容 的符号序列。就是把用公开的、标准的信息编码表示的信息通过一种变换手段,将其变为除通信双方以外其他人所不能读懂的信息编码,这种独特的信息编码就是密码。

口令: 是与用户名对应的,用来验证是否拥有该用户名对应的权限。

密码是指为了 保护某种文本或口令,采用特定的加密算法,产生新的文本或字符串。

区别:从它们的定义 上容易看出;

当前,无论是计算机用户,还是一个银行的户头,都是用口令保护的,通过口令来验证 用户的身份。在网络上,使用户口令来验证用户的身份成了一种基本的手段。

3、密码学的分类标准:

 按操作方式可分为:替代、置换、复合操作

 按使用密钥的数量可分为:对称密钥(单密钥)、公开密钥(双秘钥) 按对明文的处理方法可分为:流密码、分组密码

4、简述柯克霍夫斯原则(及其特点和意义。?)

即使密码系统中的算法为密码分析者所知,也难以从截获的密文推导出明文或密钥。也就是说,密码体制的安全性仅应依赖于对密钥的保密,而不应依赖于对算法的保密。

只有在假设攻击者对密码算法有充分的研究,并且拥有足够的计算资源的情况下仍然安全的密码才是安全的密码系统。

一句话: “一切秘密寓于密钥之中” Kerckhoffs原则的意义:

 知道算法的人可能不再可靠  设计者有个人爱好

 频繁更换密钥是可能的,但无法频繁更换密码算法(设计安全的密码算法困难)

5、密码攻击者攻击密码体制的方法有三种分别是:

 穷举:尝试所有密钥进行破译。(增大密钥的数量)

 统计分析:分析密文和明文的统计规律进行破译。(使明文和密文的统计规律不一样) 解密变换:针对加密变换的数学基础,通过数学求解找到解密变换。

(选用具有坚实数学基础和足够复杂的加密算法)

6、密码分析的分类及其特点:

(1)惟密文攻击(Ciphertext only)

对于这种形式的密码分析,破译者已知的东西只有两样:加密算法、待破译的密文。(2)已知明文攻击(Known plaintext)

在已知明文攻击中,破译者已知的东西包括:加密算法和经密钥加密形成的一个或多个明文—密文对,即知道一定数量的密文和对应的明文。

(3)选择明文攻击(Chosen plaintext)

选择明文攻击的破译者除了知道加密算法外,他还可以选定明文消息,并可以知道对应的加密得到的密文,即知道选择的明文和对应的密文。例如,公钥密码体制中,攻击者可以利用公钥加密他任意选定的明文,这种攻击就是选择明文攻击。

(4)选择密文攻击(Chosen ciphertext)与选择明文攻击相对应,破译者除了知道加密算法外,还包括他自己选定的密文和对应的、已解密的原文,即知道选择的密文和对应的明文。

(5)选择文本攻击(Chosen text)

选择文本攻击是选择明文攻击与选择密文攻击的结合。破译者已知的东西包括:加密算法、由密码破译者选择的明文消息和它对应的密文,以及由密码破译者选择的猜测性密文和它对应的已破译的明文。

7、密码体制的安全性可分为:理论安全和实际安全。

在实际安全中,单密钥体制实现的是__计算上安全_;双密钥体制实现的是_可证明安全_。

8、给出一段密文和凯撒密码的密钥,写出明文。

“恺撒密码”据传是古罗马恺撒大帝用来保护重要军情的加密系统。它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E。据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 假如有这样一条指令: RETURN TO ROME 用恺撒密码加密后就成为: UHWXUA WR URPH

9、给出一段明文和维吉尼亚密码的密钥,写出密文。

它是由16世纪法国亨利三世王朝的布莱瑟·维吉尼亚发明的,其特点是将26个恺撒密表合成一个,见下表:

原: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z B : B C D E F G H I J K L M N O P Q R S T U V W X Y Z A C : C D E F G H I J K L M N O P Q R S T U V W X Y Z A B D : D E F G H I J K L M N O P Q R S T U V W X Y Z A B C 以下如此类推。

维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。假如以上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密:

TO BE OR NOT TO BE THAT IS THE QUESTION 当选定RELATIONS作为密钥时,加密过程是:明文一个字母为T,第一个密钥字母为R,因此可以找到在R行中代替T的为K,依此类推,得出对应关系如下:

密钥:RELAT IONSR ELATI ONSRE LATIO NSREL 明文:TOBEO RNOTT OBETH ATIST HEQUE STION 密文:KSMEH ZBBLK SMEMP OGAJX SEJCS FLZSY

二、网络安全概述部分:

1、什么是网络安全

网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。

2、网络安全要素有哪些:请分别说明这些要素的目的并且举例

3、OSI安全框架包含哪三方面的内容

1)安全性攻击:任何危及企业信息系统安全的活动。

2)安全机制:用来检测、阻止攻击或者从攻击状态恢复到正常状态的过程,或实现该过程的设备。3)安全服务:加强数据处理系统和信息传输的安全性的一种处理过程或通信服务。其目的在于利用一种或多种安全机制进行反攻击。

4、请说明安全服务和安全机制的关系

安全机制分为实现安全服务和对安全系统的管理两种类型。

安全服务是指开放某一层所提供的服务,用以保证系统或数据传输有足够的安全性。

5、什么是安全攻击,安全攻击分几类,分别说明这些攻击的特点

(1)主动攻击:包含攻击者访问所需要信息的故意行为。

(2)被动攻击。主要是收集信息而不是进行访问,数据的合法用户对这种活动一点也不会觉察到。被动攻击包括:

1、窃听。包括键击记录、网络监听、非法访问数据、获取密码文件。

2、欺骗。包括获取口令、恶意代码、网络欺骗。

3、拒绝服务。包括导致异常型、资源耗尽型、欺骗型。

4、数据驱动攻击:包括缓冲区溢出、格式化字符串攻击、输入验证攻击、同步漏洞攻击、信任漏洞攻击。

6、四类主动攻击(伪装、重放、修改和拒绝服务,判断题)

伪装:

伪装是一个实体假装成另外一个实体。伪装攻击往往连同另一类主动攻击一起进行。假如,身份鉴别的序列被捕获,并在有效地身份鉴别发生时做出回答,有可能使具有很少特权的实体得到额外的特权,这样不具有这些特权的人获得了这些特权。

回答(重放):

回答攻击包含数据单元的被动捕获,随之再重传这些数据,从而产生一个非授权的效果。修改报文:

修改报文攻击意味着合法报文的某些部分已被修改,或者报文的延迟和重新排序,从而产生非授权的效果。

拒绝服务(DosDenial of Service):

拒绝服务攻击是阻止或禁止通信设施的正常使用和管理。这种攻击可能针对专门的目标(如安全审计服务),抑制所有报文直接送到目的站;也可能破坏整个网络,使网络不可用或网络超负荷,从而降低网络性能。

主动攻击和被动攻击具有相反的特性。被动攻击难以检测出来,然而有阻止其成功的方法。而主动攻击难以绝对地阻止,因为要做到这些,就要对所有通信设施、通路在任何时间进行完全的保护。因此,对主动攻击采取的方法,并从破坏中恢复。因此制止的效应也可能对防止破坏做出贡献。

7、我们生活中存在哪些安全威胁,请举例说明

自然灾害、意外事故;计算机犯罪; 人为行为,比如使用不当,安全意识差等;黑客” 行为:由于黑客的入侵或侵扰,比如非法访问、拒绝服务计算机病毒、非法连接等;内部泄密;外部泄密;信息丢失;电子谍报,比如信息流量分析、信息窃取等; 信息战;网络协议中的缺陷,例如TCP/IP协议的安全问题等等。

二、数论和有限域的基本概念:

1、整除性和除法

2、用欧几里德算法求两个整数的最大公因子

欧几里得算法辗转相除法

gcd(a,b)= gcd(b,a mod b)(a>b 且a mod b 不为0)r = a mod b d|a, d|b,而r = a-kb,因此d|r #include using namespace std;int main(){ int m,n,r;cout << “请输入两个正整数:” << endl;cin >> m >> n;do { r=m%n;m=n;n=r;} while(r!=0);cout << “两个数字的最大公因子为:” << m << endl;return 0;}

3、模运算和同余

4、模运算的性质

5、剩余类集合

6、修改的欧几里德算法

7、扩展的欧几里德算法

扩展欧几里得算法是欧几里得算法(又叫辗转相除法)的扩展。已知整数a、b,扩展欧几里得算法可以在求得a、b的最大公约数的同时,能找到整数x、y(其中一个很可能是负数),使它们满足贝祖等式。

    47=30*1+17 30=17*1+13 17=13*1+4 13=4*3+1

8、群、环和域的概念和性质

群、环、域都是满足一定条件的集合,可大可小,可可数 也可 不可数,一个元素可以是群,『0』,三个也可以『0,1,-1』,可数的:以整数为系数的多项式(可以验证也是环),当然R也是;环不过是在群的基础上加上了交换律和另外一种运算,域的条件更强(除0元可逆),常见的一般是数域,也就是:整数,有理数,实数,复数。其实环和域上所谓的乘法不一定就是通常说的乘法,例子相信你的书上应该有,我们只是叫它乘法而已。只能说到这儿了,你应该是想知道一些具体的例子,定义应该是蛮清楚的。

群,环,域都是集合,在这个集合上定义有特定元素和一些运算,这些运算具有一些性质。群上定义一个运算,满足结合律,有单位元(元素和单位元进行运算不变),每个元素有逆元(元素和逆元运算得单位元)例整数集,加法及结合律,单位元0,逆元是相反数,正数集,乘法及结合律,单位元1,逆元是倒数 环是一种群,定义的群运算(记为+)还要满足交换律。另外环上还有一个运算(记为×),满

足结合律,同时有分配律a(b+c)=ab+ac,(a+b)c=ac+bc,由于×不一定有交换律,所以分开写。例整数集上加法和乘法。域是一种环,上面的×要满足交换律,除了有+的单位元还要有×的单位元(二者不等),除了+的单位元外其他元素都有×的逆元。例整数集上加法和乘法,单位元0,1。

循环群+群生成元:如果存在一个元素a属于G,对任一属于G的元素b,都存在一个整数i>=0,使得b=a^i,则群G就称为循环群,元素a称为G的一个生成元,G也称为由a生成的群。当一个群由a生成的时候,记做G=。

有限群G中元素个数称为G的阶,记为#G。

阿贝尔群是交换群,即有群中元素a*b=b*a,*是群操作。

9、阶为p的有限域中的运算

10、求GF(p)中的乘法逆元

a关于m的乘法逆元就是使等式:a·b = 1(mod m),成立的b。

11、系数在GF(p)中的多项式运算(加、减、乘、除)

12、系数在GF(p)中,且多项式模一个n次多项式m(x)的多项式运算(加、减、乘、除)

13、既约多项式

14、求多项式的最大公因式

15、有限域GF(2n)中多项式的模运算,求乘法逆元,两个多项式的乘法计算,多项式和二进制数的对应

三、分组密码原理和DES:

1、混淆和扩散的使用目的

在克劳德·夏农的定义之中,混淆主要是用来使密文和对称式加密方法中密钥的关系变得尽可能的复杂;而扩散则主要是用来使用明文和密文关的关系变得尽可能的复杂,明文中任何一点小更动都会使得密文有很大的差异。

2、什么是轮迭代结构

3、什么是乘积密码

乘积密码就是以某种方式连续执行两个或多个密码,以使得所得到的最后结果或乘积从密码编码的角度比其任意一个组成密码都更强。

多个指数运算的乘积是公钥密码学中的一种重要运算。针对求逆元素的运算量较大的情形,提出了两种有效实现该运算的算法:在基固定和基不固定两种情况下,分别将多个指数表示成联合稀疏形和串代换形式,然后利用快速Shamir算法进行计算。分析表明,算法有效降低了快速Shamir算法的运算次数。

4、Feistel结构特点

一种分组密码,一般分为64位一组,一组分左右部分,进行一般为16轮的迭代运算,每次迭代完后交换左右位置,可以自己进行设计的有: 分组大小、密钥长度、轮次数、子密钥生成、轮函数

5、实现Feistel结构的参数和特征(分组和密钥长度、迭代轮数、子密钥产生算法、轮函数F)

(1)块的大小:大的块会提高加密的安全性,但是会降低加密、解密的速度。截止至2013年,比较流行的这种方案是64 bit。而128 bit 的使用也比较广泛。

(2)密钥的大小:同上。现在流行的是64 bit,而 128 bit 正逐渐成为主流。

(3)循环次数(轮次数):每多进行一轮循环,安全性就会有所提高。现阶段比较流行的是16轮。(4)子密钥的生成算法:生成算法越复杂,则会使得密码被破译的难度增强,即,信息会越安全。(5)轮函数的复杂度:轮函数越复杂,则安全性越高。

6、为何说Feistel密码的解密过程和加密过程一致

构造过程

另 F 为轮函数;另K1,K2,……,Kn 分别为第1,2,……,n 轮的子密钥。那么基本构造过程如下:

(1)将明文信息均分为两块:(L0,R0);

(2)在每一轮中,进行如下运算(i 为当前轮数): Li+1 = Ri;

Ri+1 = Li ⊕F(Ri,Ki)。(其中⊕为异或操作)所得的结果即为:(Rn+1,Ln+1)。解密过程

对于密文(Rn+1,Ln+1),我们将i 由n 向0 进行,即,i = n,n-1,……,0。然后对密文进行加密的逆向操作,如下:

(1)Ri = Li+1;

(2)Li = Ri+1⊕F(Li+1,Ki)。(其中⊕为异或操作)所得结果为(L0,R0),即原来的明文信息。

7、DES加密的明文和密钥长度

DES使用56位密钥对64位的数据块进行加密,并对64位的数据块进行16轮编码。与每轮编码时,一个48位的“每轮”密钥值由56位的完整密钥得出来。DES用软件进行解码需要用很长时间,而用硬件解码速度非常快,但幸运的是当时大多数黑客并没有足够的设备制造出这种硬件设备。在1977年,人们估计要耗资两千万美元才能建成一个专门计算机用于DES的解密,而且需要12个小时的破解才能得到结果

8、DES有哪几个明文处理阶段

明文的处理过程有3个阶段:

初始置换IP用于重排明文分组的64比特数据。

轮变换。是具有相同功能的16轮变换每论中都有置换和代换运算第16轮变换的输出分为左右两半并被交换次序。

逆初始置换IP-1为IP的逆从而产生64比特的密文。

9、DES轮变换的详细过程(扩展置换,密钥加,S盒,置换)

10、S盒的输入和输出

11、轮密钥的产生

12、什么是雪崩效应

雪崩效应就是一种不稳定的平衡状态也是加密算法的一种特征,它指明文或密钥的少量变化会引起密文的很大变化,就像雪崩前,山上看上去很平静,但是只要有一点问题,就会造成一片大崩溃。可以用在很多场合对于Hash码,雪崩效应是指少量消息位的变化会引起信息摘要的许多位变化。

13、双重DES的中间相遇攻击

一起从双方的各自起点出发,一端加密,另一端解密,然后中间相遇,然后就破解了。

14、三重DES 传统上使用的单重des加密技术,由于其密钥长度为56位,无法确保信息安全性。也正是由于des的脆弱性,绝大部分银行和金融服务公司开始寻求新的加密技术。对已使用des算法软件和硬件的公司,三重des加密技术是des的新版本,在des基础上进行了很大的改进,用两种不同的密钥,三次使用des加密算法,使得新的des密钥更加安全可靠。密钥的第一个56位数据位组首先加密,然后用密钥的第二个56位数据位组加密,使密钥的复杂度和长度增加一倍,最后再对第一个56位数据块加密,再一次增加了密钥的复杂性,但没有增加密钥长度。这样形成的密钥利用穷举搜索法很难破解,因为它只允许2112次的一次性尝试,而不是标准des的2256次。三重des加密技术基本克服了des密钥长度不足的最大缺陷,成功地使des密钥长度加倍,达到了112位的军用级标准,没有任何攻击方式能破解三重des加密技术,这样它提供了足够的安全性

四、高级加密标准AES和分组密码工作方式:

1、明文和密钥长度,根据密钥长度不同迭代次数不同

2、AES的结构,是否是Feistel结构

DES算法使用的是56位密钥,3DES使用的是168位密钥,AES使用的最小密钥长度是128位。

3、轮函数中的四个不同阶段(字节代替、行移位、列混淆、轮密钥加)

4、字节代替变换,S盒的构造方式,逆S盒的构造

5、行移位变换

6、正向和逆向列混淆

7、轮密钥加

8、AES的密钥扩展算法

9、为何可以将解密算法中的逆向行移位和逆向字节代替顺序交换

10、为何可以将解密算法中的轮密钥加和逆向列混淆顺序交换

11、电码本模式的特点,缺点,如何进行明文恢复

12、密文分组链接模式的IV,如何进行明文恢复

13、密文反馈模式和流密码,s位,移位寄存器,如何进行明文恢复

14、输出反馈模式的特点,同密文反馈模式的区别,如何进行明文恢复

15、计数器模式特点,优势,如何进行明文恢复

11-15看书。。。。。。。。。。

五、数论入门:

任意整数的分解方式

费马定理

欧拉函数

欧拉定理

中国剩余定理

六、公钥密码学与RSA及其它公钥密码体制:

1、为何要提出公钥密码学(产生原因)

1976年提出的公开密钥密码体制思想不同于传统的对称密钥密码体制,它要求密钥成对出现,一个为加密密钥(e),另一个为解密密钥(d),且不可能从其中一个推导出另一个。自1976年以来,已经提出了多种公开密钥密码算法,其中许多是不安全的,一些认为是安全的算法又有许多是不实用的,它们要么是密钥太大,要么密文扩展十分严重。多数密码算法的安全基础是基于一些数学难题,这些难题专家们认为在短期内不可能得到解决。因为一些问题(如因子分解问题)至今已有数千年的历史了。

2、什么是公钥和私钥

公钥,就是给大家用的,你可以通过电子邮件发布,可以通过网站让别人下载,公钥其实是用来加密/验章用的。私钥,就是自己的,必须非常小心保存,最好加上 密码,私钥是用来解密/签章,首先就Key的所有权来说,私钥只有个人拥有。公钥与私钥的作用是:用公钥加密的内容只能用私钥解密,用私钥加密的内容只能 用公钥解密。

比如说,我要给你发送一个加密的邮件。首先,我必须拥有你的公钥,你也必须拥有我的公钥。

首先,我用你的公钥给这个邮件加密,这样就保证这个邮件不被别人看到,而且保证这个邮件在传送过程中没有被修改。你收到邮件后,用你的私钥就可以解密,就能看到内容。

其次我用我的私钥给这个邮件加密,发送到你手里后,你可以用我的公钥解密。因为私钥只有我手里有,这样就保证了这个邮件是我发送的。

当A->B资料时,A会使用B的公钥加密,这样才能确保只有B能解开,否则普罗大众都能解开加密的讯息,就是去了资料的保密性。验证方面则是使用签 验章的机制,A传资料给大家时,会以自己的私钥做签章,如此所有收到讯息的人都可以用A的公钥进行验章,便可确认讯息是由 A 发出来的了。

3、公钥和私钥使用顺序的不同会对密文造成什么影响(对同一明文先用私钥再用公钥,和先用公钥再用私钥)

4、使用公钥密码可以实现什么功能

公钥加密算法也称非对称密钥算法,用两对密钥:一个公共密钥和一个专用密钥。用户要保障专用密钥的安全;公共密钥则可以发布出去。公共密钥与专用密钥是有紧密关系的,用公共密钥加密的信息只能用专用密钥解密,反之亦然。由于公钥算法不需要联机密钥服务器,密钥分配协议简单,所以极大简化了密钥管理。除加密功能外,公钥系统还可以提供数字签名。

5、公钥密码的要求

6、RSA算法

RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。

在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然秘密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。

七、密钥管理、密码协议和安全多方计算:

1、什么是密钥管理

密钥,即密匙,一般范指生产、生活所应用到的各种加密技术,能够对各人资料、企业机密进行有效的监管,密钥管理就是指对密钥进行管理的行为,如加密、解密、破解等等。

2、密钥的分类和作用

对称密钥加密,又称私钥加密或会话密钥加密算法,即信息的发送方和接收方使用同一个密钥去加密和解密数据。它的最大优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难。

非对称密钥加密系统,又称公钥密钥加密。它需要使用不同的密钥来分别完成加密和解密操作,一个公开发布,即公开密钥,另一个由用户自己秘密保存,即私用密钥。信息发送者用公开密钥去加密,而信息接收者则用私用密钥去解密。公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。

3、什么是密钥分配协议

4、Shamir门限方案

5、什么是密码协议,密码协议的特征

安全协议,有时也称作密码协议,是以密码学为基础的消息交换协议,其目的是在网络环境中提供各种安全服务。密码学是网络安全的基础,但网络安全不能单纯依靠安全的密码算法。安全协议是网络安全的一个重要组成部分,我们需要通过安全协议进行实体之间的认证、在实体之间安全地分配密钥或其它各种秘密、确认发送和接收的消息的非否认性等。

特征:机密性、完整性、认证性、非否认性、正确性、可验证性、公平性、匿名性、隐私属性、强健性、高效性

6、健忘协议

7、使用对称密码学的位承诺

8、使用公钥密码的抛硬币协议

9、两方智力扑克协议

数据完整性算法:

为何要使用哈希函数

密码学hash函数的安全性需求

弱哈希函数、强哈希函数、原像、碰撞 生日攻击 SHA-512 什么是消息认证码MAC HMAC 为何要使用数字签名 数字签名能够实现的依据

八、网络安全:

1、SSL是一个两层协议,包含SSL握手协议、SSL修改密码规范协议、SSL警报协议、SSL记录协议

SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL记录协议

SSL记录协议为SSL连接提供两种服务:

(1)机密性:握手协议定义了共享的、可用于对SSL有效载荷进行常规加密的密钥。

(2)报文完整性:握手协议还定义了共享的、可用来形成报文的鉴别码(MAC)的密钥。

记录协议接收传输的应用报文,将数据分片成可管理的块,可选地压缩数据,应用MAC,加密,增加首部,在TCP报文段中传输结果单元。被接收的数据被解密、验证、解压和重新装配,然后交付给更高级的用户。

修改密文规约协议

修改密文规约协议(Change Cipher Spec Protocol)是使用SSL记录协议的三个SSL有关协议之一,并且它是最简单的,用于使用新协商的加密方法和完全性方法。这个协议由单个报文图4(a)组成,该报文由值为1的单个字节组成。

告警协议

告警协议是用来将SSL有关的告警传送给对方实体。和其他使用SSL的情况一样,告警报文按照当前状态说明被压缩和加密。该协议的每个报文由两个字节组成图4(b)。第一个字节的值是警告或致命的,用来传送报文的严重级别。如果级别是致命的,SSL立刻中止该连接。同一个会话的其他连接可以继续,但这个会话不能再建立新的连接了。第二个字节包含了指出特定告警的代码。

SSL中最复杂、最重要的部分是握手协议。这个协议用于建立会话;协商加密方法、鉴别方法、压缩方法和初始化操作,使服务器和客户能够相互鉴别对方的身份、协商加密和MAC算法以及用来保护在SSL记录中发送数据的加密密钥。在传输任何应用数据之前,使用握手协议。它由一系列在客户和服务器之间交换的报文组成。所有报文都具有图4(c)显示的格式。每个报文具有三个字段:

(1)类型(1字节):指示10种报文中的一个。表2列出定义的报文类型。(2)长度(3字节):以字节为单位的报文长度。(3)内容(大于等于1字节。

2、SSL会话和连接的区分

(1)连接:连接是提供恰当类型服务的传输,对于SSL这样的连接是点对点的关系。连接是短暂的,每个连接与一个会话相联系。

(2)会话:SSL的会话是客户和服务器之间的关联,会话通过握手协议来创建。会话定义了加密安全参数的一个集合,该集合可以被多个连接所共享。会话可用来避免为每个连接进行昂贵的新安全参数的协商。

在任何一对交互实体之间可能存在多个安全连接。理论上,在交互实体中间也可能存在多个同时的会话,实际上每个会话存在一组状态。一旦建立了会话,就有当前的操作状态用于读和写(即接收和发送)。另外,在握手协议期间,创建了挂起读和写状态。一旦握手协议成功,挂起状态就变成当前的状态。

3、SSL握手协议四个阶段的内容

1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;

2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;

3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器; 4)服务器回复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。

4、IPsec的传输模式和隧道模式

传输模式:用于主机之间,保护分组的有效负载,不对原来的IP地址进行加密

隧道模式:用于在Internet中的路由,对整个IP分组进行保护,首先对IP分组进行加密,然后将加密后的分组封装到另一个IP分组

5、什么是访问控制

按用户身份及其所归属的某项定义组来限制用户对某些信息项的访问,或限制对某些控制功能的使用。访问控制通常用于系统管理员控制用户对服务器、目录、文件等网络资源的访问。

6、访问控制的三个要素

主体、客体、访问控制策略

7、什么是访问控制矩阵

访问控制矩阵是用矩阵的形式描述系统的访问控制的模型,它由三元组(S,O,A)来定义,其中: S是主体的集合——行标对应主体 O是客体的集合——列标对应客体

A是访问矩阵,矩阵元素A[s,o]是主体s在o上实施的操作 客体以及在其上实施的操作类型取决应用系统本身的特点。

8、入侵检测的常用方法(异常统计、基于规则)

特征检测

特征检测对已知的攻击或入侵的方式作出确定性的描述,形成相应的事件模式。当被审计的事件与已知的入侵事件模式相匹配时,即报警。原理上与专家系统相仿。其检测方法上与计算机病毒的检测方式类似。目前基于对包特征描述的模式匹配应用较为广泛。该方法预报检测的准确率较高,但对于无经验知识的入侵与攻击行为无能为力。

统计检测

统计模型常用异常检测,在统计模型中常用的测量参数包括:审计事件的数量、间隔时间、资源消耗情况等。常用的入侵检测5种统计模型为:

1、操作模型,该模型假设异常可通过测量结果与一些固定指标相比较得到,固定指标可以根据经验值或一段时间内的统计平均得到,举例来说,在短时间内的多次失败的登录很有可能是口令尝试攻击;

2、方差,计算参数的方差,设定其置信区间,当测量值超过置信区间的范围时表明有可能是异常;

3、多元模型,操作模型的扩展,通过同时分析多个参数实现检测;

4、马尔柯夫过程模型,将每种类型的事件定义为系统状态,用状态转移矩阵来表示状态的变化,当一个事件发生时,或状态矩阵该转移的概率较小则可能是异常事件;

5、时间序列分析,将事件计数与资源耗用根据时间排成序列,如果一个新事件在该时间发生的概率较低,则该事件可能是入侵。

专家系统

用专家系统对入侵进行检测,经常是针对有特征入侵行为。所谓的规则,即是知识,不同的系统与设置具有不同的规则,且规则之间往往无通用性。专家系统的建立依赖于知识库的完备性,知识库的完备性又取决于审计记录的完备性与实时性。入侵的特征抽取与表达,是入侵检测专家系统的关键。在系统实现中,将有关入侵的知识转化为if-then结构(也可以是复合结构),条件部分为入侵特征,then部分是系统防范措施。运用专家系统防范有特征入侵行为的有效性完全取决于专家系统知识库的完备性。

文件完整性检查

文件完整性检查系统检查计算机中自上次检查后文件变化情况。文件完整性检查系统保存有每个文件的数字文摘数据库,每次检查时,它重新计算文件的数字文摘并将它与数据库中的值相比较,如不同,则文件已被修改,若相同,文件则未发生变化。

9、防火墙的设计目标和特性

防火墙:一种位于内部网络与外部网络之间的网络安全系统。

所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件。该计算机流入流出的所有网络通信和数据包均要经过此防火墙。

基本特性

(一)内部网络和外部网络之间的所有网络数据流都必须经过防火墙

(二)只有符合安全策略的数据流才能通过防火墙

(三)防火墙自身应具有非常强的抗攻击免疫力(四)应用层防火墙具备更细致的防护能力

(五)数据库防火墙针对数据库恶意攻击的阻断能力

10、什么是恶意软件

术语“恶意软件”用作一个集合名词,来指代故意在计算机系统 上执行恶意任务的病毒、蠕虫和特洛伊木马。

网络用户在浏览一些恶意网站,或者从不安全的站点下载游戏或其它程序时,往往会连合恶意程序一并带入自己的电脑,而用户本人对此丝毫不知情。直到有恶意广告不断弹出或色情网站自动出现时,用户才有可能发觉电脑已“中毒”。在恶意软件未被发现的这段时间,用户网上的所有敏感资料都有可能被盗走,比如银行帐户信息,信用卡密码等。

这些让受害者的电脑不断弹出色情网站或者是恶意广告的程序就叫做恶意软件,它们也叫做流氓软件。

11、什么是病毒

编制者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码被称为计算机病毒(Computer Virus)。具有非授权可执行性、隐蔽性、破坏性、传染性、可触发性。特点:

1、繁殖性

计算机病毒可以像生物病毒一样进行繁殖,当正常程序运行的时候,它也进行运行自身复制,是否具有繁殖、感染的特征是判断某段程序为计算机病毒的首要条件。

2、破坏性

计算机中毒后,可能会导致正常的程序无法运行,把计算机内的文件删除或受到不同程度的损坏。通常表现为:增、删、改、移。

3、传染性

计算机病毒不但本身具有破坏性,更有害的是具有传染性,一旦病毒被复制或产生变种,其速度之快令人难以预防。传染性是病毒的基本特征。

4、潜伏性

有些病毒像定时炸弹一样,让它什么时间发作是预先设计好的。比如黑色星期五病毒,不到预定时间一点都觉察不出来,等到条件具备的时候一下子就爆炸开来,对系统进行破坏。

5、隐蔽性

计算机病毒具有很强的隐蔽性,有的可以通过病毒软件检查出来,有的根本就查不出来,有的时隐时现、变化无常,这类病毒处理起来通常很困难。

6、可触发性

病毒因某个事件或数值的出现,诱使病毒实施感染或进行攻击的特性称为可触发性。为了隐蔽自己,病毒必须潜伏,少做动作。

12、病毒的3个部分:感染机制、触发器、有效载荷

13、病毒生命周期的4个阶段:潜伏、传染、触发、发作

本期部分参考答案: 篇2

用3厘米、4厘米、5厘米和4厘米、5厘米、8厘米的木棍都能围成三角形,其中,3厘米、4厘米、5厘米的木棍围成的是直角三角形。

在围成的直角三角形里,最长的边是5厘米。

悦读有我 快乐评刊(2014年第1+2期)

想得到《数学大王》编辑部送出的神秘礼物吗?想在封二的“快乐宝贝秀”上秀出你自己吗?那就赶快来参加“悦读有我 快乐评刊”活动吧!只要认真填好下面的资料并寄给我们,就有机会成为最闪亮的“快乐宝贝”,神秘礼物和各种惊喜等着你!

明星小档案

姓名 性别 生日

学校(详细到班级)

邮编 电话

用一句话描述自己吧!

你评刊,我快乐

1.请在本期你喜欢的文章前面打“√”,在你不喜欢的文章前面打“×”

□ 小熊一家和吵吵闹闹的怪物们 □ 定时传送魔法 □ 背黑锅

□ 鼠小弟的纸箱床 □ 新鲜的约定 □ 小公鸡,别打架

□ 暗礁迷阵 □ 螃蟹宝宝,你在哪儿 □ 谁打碎了花瓶

□ 谁杀了河马先生 □ 爱玩游戏的巨人 □ 贝卡的一月一记(2月)

2.你最喜欢本期内文中哪几页的插图?

P44《暗礁迷阵》:

P50《谁打碎了花瓶》:

那天晚上,气温突然降低,花瓶里的水结冰了。水结冰后,体积变大,把花瓶撑破了。

P52《谁杀了河马先生》:

因为青蛙探长审问喷嚏熊的时候,并没有告诉他河马先生被杀害了,也没有告诉他凶杀案发生在18楼,更没有提到18楼住着一只大胖熊,这一切都是喷嚏熊自己说出来的,说明他就是凶手。

3.本期介绍了复合分类,你喜欢吗?你还希望我们介绍哪方面的数学知识?

4.推荐一个小笑话吧,分享快乐,快乐就加倍!

5.你在数学学习上有什么心得吗?和大家分享一下吧!你在学习数学时有什么烦恼吗?来这里寻求帮助吧!记住哦,《数学大王》是一个温暖的大家庭,让我们彼此帮助,共同进步!

习题七参考答案部分 篇3

答案1—3CDC

年高考文综合的开篇,想必出题专家并没有想过多的难为考生,考场的学生估计一上来也并没有感受到太大的阻力,当时应该算是比较顺利地完成该组试题,只是事先没想到这三道题居然会有很多人一道都没选对,对答案时真是巨大的打击啊!言归正传,应该说此题设计巧妙,要求学生有缜密的心思和较强的知识迁移能力。首先根据图中的经纬度,确定该区域为新疆(备考中要求学生记忆乌鲁木齐的经纬度88°E,44°N,很有必要),这是考生必须能够做到的。定位后,就可确定第1题,北疆的水汽主要来自大西洋。第2题的迷惑性非常大,不仔细审题很多学生都会选择B,但那样出题就过于直白了。一定要注意时间段,材料中说的是“2010年5月初,该区域气温骤升”,试题问的是“自2009年冬至2010年4月底”,正是因为之前的气温偏低,积雪没有完全融化,等到5月气温骤升,“出现了比常年严重的洪灾”。第3题的关键依然在材料中给了提示“2010年5月初,该区域天气晴朗”,必须选择能够使天气晴朗的天气系统啊,这道题不应该错。4-8ADCCD9、D10、C11、C

12.A本题考查考生非洲自然地理特征。根据图中提供的纬度和非洲赞比西河流域水系的分布范围,可以判断其主要分布在10°S~20°S,结合非洲气候特点,可以判断该流域的气候特点是终年炎热。

【解析】13.B本题考查考生自然地理特征。由于该流域属于热带草原气候,干湿季明显,在干旱时期典型树种的特征就是要耐旱性突出,其根系比较发达,叶面比较小,气孔少,防止水分过度蒸发,因此其叶质坚硬,树皮厚。而板状根主要是指热带雨林地区的乔木特点,其树干长。

【解析】14.A

本题是考查区域的地形地势特征。在赞比西河上游地区,根据其高度表和图中上游河段有大量沼泽分布,可以判断上游河段的干流流速缓慢。因为在地势低洼,河流流速缓慢地区才容易形成沼泽。其支流分布较长,流速平稳;本区域应该以大气降水补给为主,其海拔高度不高,不可能有大量的冰雪融水补给。

15.B16. A17、C18、D19、A 20、D

21(1)(4分)夏季高温少雨(或炎热干燥)(2分),冬季温和多雨(或湿润)(或低温多雨)(2分)/或冬暖夏热(2分),冬季多雨,夏季少雨(2分)

评分细则:若缺失季节、则不得分。冬夏气温2分、冬夏降水2分

(2)(6分)马赛较阿尔及尔冬雨率更低 原因:受纬度位置影响,马赛受西风影响时间较长或阿尔及尔较马赛冬雨率更高 原因:受纬度位置影响,阿尔及尔受西风影响时间较短

评分细则:冬雨率:马赛低/或阿尔及尔高――2分

原因:纬度位置影响/ 马赛纬度较高/ 或阿尔及尔纬度较低――2分

(马赛)受西风影响时间长/或阿尔及尔受西风影响时间较短――2分说明:冬雨率高低与原因分析要相对应。

(3)(10分)A国:纬度较低,光热更充足,(上市时间早)劳动力成本较低(4分)

B国:离欧洲消费市场近; 交通更便捷;技术水平较高;(6分)

评分细则:A国:纬度较低/气温较高/热量充足――2分,只写光照充足不得分劳动力成本低/廉价――2分,劳动力丰富不得分

B国:离(欧洲)消费市场近/市场广阔――2分

交通便利――2分(农业)科技/技术发达/或劳动力素质高――2分

(4)(6分)板块挤压碰撞,地壳褶皱隆起冰川侵蚀作用显著

评分细则:板块挤压/或板块碰撞――(3分)冰川侵蚀作用/冰川作用――3分,只写外力作用不得分

22、(1)热带荒漠 温带荒漠

(2)深居大陆内部,各方面水汽难以到达 水分

(3)终年受副热带高气压带控制,气候炎热干燥,同时该地受来自内陆的东北信风的 影响,增加了干燥程度

(4)该地地处亚欧大陆东南部,濒临辽阔的太平洋,海陆热力差异显著,形成亚热带 季风气候,夏季风带来丰沛的降水,所以不会形成荒漠

(5)B、D、E三处都位于中低纬度大陆西岸,沿岸均有强大的寒流经过,而寒流有降 温降湿作用,造成荒漠带直逼海岸

(6)南北走向而又高大的安第斯山脉阻挡了西风带来的湿润气流,在其背风坡形成了 荒漠

(7)由于气候变异和人类破坏森林、草原植被和不合理的灌溉等因素引起的,后者为 主 会使农田减产,耕地、牧场严重退化致使耕地、草场面积锐减,并使气候变化,生态环境遭到破坏,影响人类社会的可持续发展

(8)“三北防护林” 土地荒漠化

23、(1)地形以山地丘陵为主,沿海以平原为主;地势中间高,四周低;地形崎岖。

(2)相同点:最高温和最低温出现季节相同;最冷月气温均在0℃以上;最热月气温均在25℃以上;

不同点:A为横滨,B为金泽。横滨冬季气温较金泽高;横滨夏季降水多于冬季且季节差异较大,金泽冬季降水多于夏季且季节差异较小。

(3)常规能源短缺;工业发达,对能源需求量大。

(4)分布特点:日本的工业集中分布在太平洋沿岸和濑户内海沿岸

形成原因:日本本国能源、资源短缺,需大量进口;日本是工业大国,运输需求量大;沿海地区海运交通便利;

24、⑴该地属于热带雨林气候,终年高温多雨,位于刚果盆地,地势低平,这种气候和

地形条件,造就了流量丰富的刚果河水系;湿热气候又为热带雨林植被的发育提供了良好的条件,从而形成了该地的地理环境整体性特征。

⑵甲地降水年内分配差异较大,7、8、9月多,12、1、2月少;而乙地全年降水均匀,因此造成两地植被景观的差异。

⑶ 该地处于迎风坡,终年受东南信风带来的海洋水汽影响;沿岸有马达加斯加暖流常年

数控部分简答题参考答案 篇4

2.简要说出CNC装置的工作过程?一个零件的加工程序首先要输入到CNC装置中,经过译码、数据处理、插补、位置控制,由伺服系统执行CNC输出的指令以驱动机床完成加工。

3.简述数控机床的加工特点?答:(1)适应性强(2)精度高,质量稳定(3)生产效率高(4)能实现复杂的运动(5)良好的经济效应(6)有利于生产管理的现代化

4.简述数控编程中刀具补偿指令主要作用?刀具补偿作用:简化零件的数控加工编程,使数控程序与刀具半径和刀具长度尽量无关,编程人员按照零件的轮廓形状进行编程,在加工过程中,CNC系统根据零件的轮廓形状和使用的刀具数据进行自动计算,完成零件的加工。

5.数控机床对位置检测有何要求?答:位置检测元件是数控机床伺服系统的重组成部分,起作用是检测长度、角度、位移,并发出反馈信号,构成闭环(半闭环)控制。实践表明,闭环伺服 系统的定位精度和加工精度主要由位置检测元件决定。数控机床对位置检测要求有:(1)受温度、湿度的影响小,工作可靠,能长期保持精度,抗干扰能力强。(2)在机床执行部件移动范围内,能满足精度和速度的要求。(3)使用维护方便。(4)成本低。

6.什么是伺服驱动系统?由几部分组成?

答:伺服驱动系统是一种执行机构,它接受来自CNC装置发来的控制信号,转化为运动命令,精确控制执行部件的运动方向、速度和进给量。伺服驱动系统组成包括比较环节、驱动电路、执行元件、传动装置、位置检测元件及反馈电路、测速发电机及反馈电路。

7.简述确定数控加工路线的基本原则。

答:在数控加工中,刀具刀位点相当于工件运动的轨迹称为加工路线。

编程时,加工路线的确定原则主要有:(1)加工路线应保证被加工零件的精度和表面粗糙度,且效率较高。(2)使数值计算简单,以减少编程工作量。(3)应使加工路线最短,这样既可以减少程序段,又可以减少空刀时间。

8.数控加工程序通常包含那些内容?(书上有的)

通常数控加工程序应包括以下内容:程序的编号;工件原点的设定;所选刀具号,换刀指令,主轴旋转和相应的切削速度,进给量等;刀具引入和退出的路经;加工方法和刀具轨迹;其他说明,如冷却、加紧、放松等;程序结束语句。

9.在数控机床操作中,为什么要执行回参考点操作?何时使用?

答:在CNC机床上,设有特定的机械位置,在这个位置上交换刀具及设定坐标系,该位置称为参考点。数控机床启动后,只有回零后机床控制系统进行初始化,才能建立机床坐标系。或者回答:回参考点主要是为了建立机床坐标系。因此初次开机后、停电再启动后、故障急停解除后等情况,必须返回参考点。

10.简述数控机床中,坐标系设定指令G92的应用?在编程中,一般要选择工件或夹具上的某一点作为编程零点,并以这一点为原点,建立一个坐标系,称为工件坐标系,这个坐标系的原点与机床坐标系的原点之间的距离用G92进行设定

11.简述机床原点、机床参考点与编程原点之间的关系。

答:(1)机床原点:现代数控机床都有一个基准位置,称为机床原点或机床绝对原点,是机床制造商设置在机床上的一个物理位置,其作用是使机床与控制系统同步,建立测量机床运动坐标的起始点。(2)机床参考点:在CNC机床上,设有特定的机械位置,它是机床制造商在机床上用行程开关设置的一个物理位置,与机床原点的相对位置是固定,在这个位置上交换刀具及设定坐标系。(3)编程原点:是编程人员在数控编程过程中定义在工件上的几何基准点。

12.在数控机床编程中,圆弧编程有哪几种表示方法?

《梯子》习题及参考答案 篇5

2.他在观察儿子的反应,也给儿子思考回味的时间

3.不可以。写儿子笑是为了渲染场面的欢快,表明孩子纯真无忧无虑,与下文紧张严肃的场景形成反差和对比,行文富于变化

4.不可以,这些词语表明爸爸稳妥、谨慎地接儿子的情状,揭示爸爸对儿子的浓浓爱意,与儿子想象和期待的结果形成鲜明的反差,效果更强烈

5.不能轻信任何人,但不能太过,别人的话也是可以信任的

c语言备考习题及部分答案 篇6

1.在函数定义中,形参变量有时也可以是全局变量。(×

2.在C程序中,函数调用可以作为函数的形参。× 3.在C程序中,函数调用可以作为函数的实参。√ 4.在C程序中,函数的形式参数是指针类型时,调用时对应的实参也必须是指针类型。×

5.对任一变量一旦被指定为某一确定类型后,该变量在程序运行时所占存储空间的

多少和所能参加的运算类型便已确定了。(√ 6.C语言程序必须包含库函数。(×

7.如果被定义函数的返回值是整型,可以不必进行说明。(√

8.一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量。(√

9.return语句可以带有表达式也可以不带。(√ 10.若某自定义函数中无return语句,则该函数一定没有返回值。×

11.在C语言中,变量的初始化都是在编译阶段完成的。×

12.在同一源文件中,全局变量与局部变量同名,在局部变量作用范围内,全局变量的值等于局部变量的值。×

13.return语句作为函数的出口,在某一个函数体内必须唯一。(×

14.C语言程序必须包含库函数。(×

15.C语言中,任意两个函数间不能嵌套定义,但可以互相调用。(×

16.在函数的定义中,若函数没有参数,则可以省略函数名后的括号。×

17.函数返回值的数据类型取决于return语句中表达式的数据类型。×

18.函数返回值的数据类型取决于主调函数传递过

来的实参的数据类型。×

19.函数返回值的数据类型取决于函数定义时为函数指定的数据类型。√ 20.在C程序中,函数的形式参数是指针类型时,调用时对应的实参也必须是地址量。√

21.C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是整个数组。×

22.C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是数组的首元素值。× 23.C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是数组的首地址值。√ 24.求n!既可以用递归的方式,也可以用递推的方式。(√

25.递归函数在实现过程中,要使用“堆栈”这种数据结构来保存递归调用过程中的值。√

26.在C语言中,所有函数之间都可以相互调用。×27.一个C程序无论有多少个源程序文件组成,在其中一个源程序文件中定义的全局变量的作用域默认为整个C程序。×

28.一个C程序无论有多少个源程序文件组成,在其中一个源程序文件中定义的全局变量的作用域默认为其所在的源程序文件。√

29.在C程序的主函数main中定义的变量就是全局变量。×

30.在C程序的主函数main中定义的变量也是局部变量。√

31.在函数定义中,形参变量是局部变量。√ 32.在函数定义中,形参变量可以是静态变量。× 33.在一个函数定义中,只能有一个return语句。×34.在一个函数定义中,可以根据需要使用多个return语句。√

35.在C程序中,函数可以嵌套定义,也可以嵌套

调用。×

36.在C程序中,函数不能嵌套定义,但可以嵌套调用。√

37.在C程序中,函数既不能嵌套定义,也不能嵌套调用。×

38.在C程序中,函数调用只能作为单独语句出现。×

39.在C程序中,函数调用不能作为单独语句出现。×

40.在C程序中,函数调用只能出现在表达式语句中。×

41.在C程序中,函数调用不能出现在表达式语句中。×

42.在C程序中,函数调用既可以出现在表达式语

二、单选题

1.C语言中,以下叙述中错0的是(A)。A)主函数中定义的变量是全局变量

B)同一程序中,全局变量和局部变量可以同名

句中,也可以作为单独的语句出现。√

43.在C函数中,形参可以是变量、常量或表达式。×

44.在C程序中,实参可以是变量、常量或表达式。√

45.C语言规定,函数调用时,若形参和实参都是简单变量,则它们之间的数据传递方式是双向值传递。×

46.C语言规定,函数调用时,若形参和实参都是简单变量,则它们之间的数据传递方式是单向值传递。√

47.如果一个函数只能被本文件中的其他函数所调用,则该函数为外部函数。×C)全局变量的作用域从定义处开始到本源程序文件结束 D)局部变量的作用域被限定在其所定义的局部范围中 2.C语言中,以下叙述正确的是()。A)函数不能嵌套定义但可以嵌套调用

B)函数可以嵌套定义也可以嵌套调用 C)函数可以嵌套定义但不能嵌套调用

D)函数不能嵌套定义也不能嵌套调用

3.C语言中,函数调用时若实参是数组名,则被调函数对应形参()。A)可以是相应类型简单变量

B)必须是相应类型数组名 C)可以是相应类型数组名

D)必须是相应类型的指针变量

4.C语言中,函数调用时若实参是数组名,则被调函数对应形参(D)。A)可以是相应类型简单变量

B)必须是相应类型的指针变量 C)必须是相应类型数组名

D)可以是相应类型的指针变量 5.在下面C语言的函数说明语句中,正确的是()。A)int fun(int , int);

B)int fun(int x,y);C)int fun(x,y);

D)int fun(int x;int y);6.在C程序中,如果限定一个局部变量只能在所定义的范围中起作用,那么这个变量的存储类型(C)。A)只能是auto

B)只能是extern C)可以是auto或static

D)可以是extern或static 7.在C语言中,若定义函数时未说明函数的类型,则该函数的数据类型为(A)。A)int

B)float C)char

D)double 8.在C语言中,函数默认的存储类型为(D)。A)auto

B)register C)static

D)extern 9.C语言中规定,简单变量做实参时,它和对应形参之间的数据传递方式是(B)。

(A)地址传递

(B)单向值传递

(C)有实参传给形参,再由形参传回给实参

(D)由用户指定传递方式

10.如果在C程序中有main(int argc,char *argv[]),那么(D)是指命令行中的参数个数。

(A)argv

(B)argv[]

(C)argc,argv[]

(D)argc 11.如果程序中有static char c;则编译程序会对其自动设置初值为(D)。

(A)'n'

(B)“n”

(C)0

(D)'' 12.在C函数中,局部变量的隐含存储类型是(A)。

(A)auto

(B)static

(C)register

(D)extern 13.C程序在(C)可以使用表达式

A)函数内部

B)函数外部

C)程序的任何地方

D)变量出现的地方 14.在C语言中,函数返回值的数据类型取决于(C)。A)函数的名字

B)return语句中表达式的数据类型 C)在定义该函数时所指定的数据类型

D)主调函数的数据类型

15.在一个源程序文件中定义的全局变量,其作用域为(B)。A)整个源程序文件

B)从定义处开始到本源程序文件结束 C)整个主函数

D)所处C程序的所有源程序文件中

16.C语言中,以下叙述中错0的是(C)。A)同一程序中,全局变量和局部变量可以同名 B)局部变量的作用域被限定在其所定义的局部范围中 C)同一程序中,全局变量和局部变量不能同名

D)全局变量的作用域从定义处开始到本源程序文件结束 17.在C程序中,同一程序中的各函数之间(A)。A)既允许直接递归调用也允许间接递归调用 B)既不允许直接递归调用也不允许间接递归调用 C)允许直接递归调用但不允许间接递归调用 D)允许间接递归调用但不允许直接递归调用 18.C语言中,以下叙述错0的是(D)。A)函数调用可以是单独的语句

B)函数调用可以出现在表达式中 C)函数调用可以作为函数的实参

D)函数调用可以作为函数的形参

19.在C语言中,函数调用时如果相应的形参和实参都是简单变量,则主调函数和被调函数之间传递数据的方式是(C)。A)单向地址值传递

B)双向地址值传递 C)单向数值传递

D)双向数值传递

20.在C程序的函数调用时,主调函数中的实参和被调函数中的形参(B)。A)个数、次序必须相同,但数据类型可以不考虑 B)个数、次序和对应参数的数据类型都应该相同 C)个数、次序和数据类型均可以不相同

D)对应参数数据类型应相同,但个数和次序可以不考虑 21.C语言中,以下叙述错0的是(C)。A)函数被调用时,系统才为形参分配内存 B)实参和对应形参的数据类型必须一致 C)实参可以是变量、常量或表达式 D)形参可以是变量、常量或表达式

22.C语言中,函数调用时若实参是数组名,则传递给被调函数对应形参的是(D)。A)整个数组

B)数组元素的个数

C)数组占用的内存单元个数

D)数组在内存中存放的首地址

23.在一个void类型函数的定义中,函数体中有return;语句,该语句(B)。A)是错0的B)表示向主调函数返回程序控制 C)在执行时不予理睬

D)在执行时会中断程序运行 24.下列程序的输出结果是(A)

viod f(int *m)

{while((*m)--);

printf(“%d”,++(*m));}

main()

{int x=50,*p=&x;

f(p);}(A)0

(B)(C)49

(D)50

25.下述函数的功能是(D)。int fun(char *x){char *y=x;

while(*y++);

return y-x-1;}(A)将字符串x连接到字符串y的后面

(B)求字符串的存放位置(C)比较两个字符串的大小

(D)求字符串的长度 26.以下对C语言函数的有关描述,正确的是(A)。

(A)在C中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参(B)C函数既可以嵌套定义又可以递归调用(C)函数必须有返回值,否则不能使用函数

(D)C程序中有调用关系的所有函数必须放在同一个源程序文件中 27.以下程序的输出结果是(B)

int m=4,n=6;

max(int x,int y)

{int max;

max=x>y?x:y;return(max);}

main()

{int m=10;

printf(“%d”,max(m,n));

}

A)

4B)10

C)6

D)5 28.在C语言的函数概念中,以下叙述正确的是(A)。A)函数调用时,形参和与其对应的实参各占独立的存储单元

B)函数调用时,形参和与其对应的实参再不同名时才各占独立的存储单元 C)形参在函数调用时不占存储单元

D)函数没有被调用时,形参也要占据内存单元

29.在C语言的函数概念中,以下叙述正确的是(A)。A)函数没有被调用时,形参不会占据内存单元

B)函数调用时,形参和与其对应的实参再不同名时才各占独立的存储单元 E)形参在函数调用时不占存储单元

F)函数没有被调用时,形参也要占据内存单元

30.C语言中,一个函数调用语句为fun((e1,e2,e3),(e4,e5),e6);,其实参个数为(A A)3个

B)4个 C)5个

D)6个

31.在一个char类型的函数定义中,函数体中有return 0;语句,该语句(B)A)是错0的B)能正确向主调函数返回整型数0 C)在执行时不予理睬

D)在执行时会中断程序运行 32.下面函数fun的功能是(D)。

int fun(char *s,char *t){ while(*s==*t)

if(*s=‟‟)

return 0;

else)。

s++,t++;return *s-*t;} A)测字符串s和t的长度

B)将字符串s拷贝到t C)将字符串t拷贝到s

D)比较字符串s和t的大小 33.在下列程序中,调用f(8)的值是(D)

int f(int n)

{ if(n==1)return(1);

else if(n==2)return(2);

else return(f(n-1)+f(n-2));

}(A)1(B)21

(C)5(D)34 34.在执行程序china.exe时,若输入的命令行为:china enlish Beijing,则程序执行结果为(A)。#include void main(int argc,char *argv[]){ while(argc>1){ printf(“%c”,**++argv);argc--;}}(A)eB

(B)ceB

(C)china enlish Beijing

(D)enlish Beijing 35.在下面C语言的函数说明语句中,正确的是(A)。A)int fun(int x, int y);

B)int fun(int x,y);C)int fun(x,y);

D)int fun(int x;int y);

三、多选题

1.下列说法正确的是(BDE)

A)若某自定义函数中无return语句,则该函数一定没有返回值。

B)C语言的编译系统对宏命令的处理是在对源程序中其他成份正式编译之前进行的。C)在C语言的源程序中,注释使用越多,编译之后的可执行程序的执行效率越低。D)如果strcmp(s1,s2)的返回值为负数,则表明字符串s1一定小于字符串s2。E)一个C程序可由多个源文件组成。

2.C语言中,若在一个复合语句和复合语句所在的函数中都定义了一个同名的变量,则该两变量(C)。A)实际是同一变量

B)是不同变量但作用域相同 C)是不同变量且作用域不同

D)是同一变量,但作用域不定

3.C语言的函数定义中,如果函数的返回值为0~255之间的整数,则函数的返回类型可以定义为(ACE)。A)int

B)float

C)char

D)double

E)long 4.C语言中,若要限定一个全局变量只能在其所定义的源程序文件中使用,定义是必须使用关键字(D)。

A)auto

B)register C)extern

D)static 5.C语言中,形式参数不能使用的存储类型说明为(BCDE)。A)auto

B)register C)extern

D)static E)static register 6.一个函数的返回值类型为void,则函数体中(AB)。A)可以没有return语句

B)可以有return;语句 C)仍然需要return exp;语句

D)可以有return 0;语句 E)可以有return 0.0;语句

7.一个函数的说明语句为int fun(int x);,a、b为整型变量且初值为0,则正确的函数调用语句为ABCDE A)printf(“%dn”,fun(a+b));B)b=fun(a);C)a=fun(b);

D)fun(a);E)printf(“%d”,fun(a+b+10));

8.以下说法正确的是(ACD)

A)形参类型定义属于函数的首部

B)凡是用{ }括起的部分称为函数体

C)任何 表达式加上一个分号均构成语句 D)一行可以写多个语句

E)C语言的输入输出是用输入输出语句实现

9.下列符号中可以用作自定义函数名的是(BCD)。

(A)int

(B)go_to

(C)INT

(D)Getchar

(E)typedef 10.在C语言中,存储类有(BCDE)。

A)char

B)extern

C)static

D)register

E)auto 11.在C语言中,对函数而言正确的概念有(BCD)。A)函数可以嵌套定义

B)函数不能嵌套定义 C)函数可以嵌套调用

D)函数可以递归调用 E)函数可以没有返回值

12.C语言中,对存储类型static而言,正确的是方法为(ABCD)。A)作用于局部变量

B)作用于全局变量 C)作用于数组

D)作用于构造数据类型变量 E)作用于形式参数

13.一个函数定义中的形式参数如果为简单变量形式,调用时对应的实参可以是(ABCD)。A)同类型的简单变量

B)同类型的常数 C)同类型的数组元素

D)同类型的地址量 E)同类型的数组名 14.在定义函数时,函数的存储类型可以(ADE)。A)是static

B)是auto C)是register

D)是extern E)省略

15.假设变量a,i均已正确定义并赋值,则以下合法的C语句有(ACDE)

A)a= =1;

B)++i

C)a=(int)i+2.5;

D)sqtr(a);

E);16.C语言规定,调用一个函数时,实参变量和形参变量之间的数据是(BE)。(A)地址传递

(B)值传递(C)由实参传给形参,并由形参传回给实参(D)由用户指定传递方式

(E)类型必须一致

17.在函数调用过程中,下列说法正确的是(ACDE)(A)形式参数和实在参数各占一个独立的存储单元(B)形式参数和实在参数存储空间都是在函数调用时分配的(C)在函数的执行过程中,形参变量值的改变不会影响实参值的改变(D)函数调用结束时,临时存储区被撤消

(E)在函数调用过程中,实在参数与形式参数在个数、类型上必须匹配 18.以下正确的说法是(ABE)

A)C语言有四种存储类:auto、register、static和extern。

B)C语言提供的for、while和do-while等三种循环语句可以做等价变换。C)C语言提供的结构类型不允许其成员具有不同的数据类型。D)C语言允许用typedef来定义一种新的数据类型。E)C语言允许经常在程序中使用的常量用宏定义来定义。19.C语言中,局部变量默认的存储类型是(A)。

A)auto

B)register C)extern

D)static 20.在下面C语言的函数说明语句中,正确的是(AE)。A)int fun(int , int);

B)int fun(int x,y);C)int fun(x,y);

D)int fun(int x;int y);E)int fun(int x,int y);

四、填空题

1.下面程序的功能是求三个数的最小公倍数,请填空完成程序。

#include void main(){ int max(int x,int y,int z);int x1,x2,x3,k=1,j,x0;

scanf(“%d,%d,%d”,&x1,&x2,&x3);

x0=max(x1,x2,x3);

while(1)

{ j=x0*k;

if(___________)

break;

k+=1;

}

printf(“The result is %dn”,j);

} int max(_________)

{ if(x>y&&x>z)

return x;

else if(__________)

return y;

else

return z;

}(8)J%X1==0&&J%X2==0&&J%X3==0(9)INT X,INT Y,INT Z(10)Y>X&&Y>Z 2.函数fun的功能是求一个整数num各位数字之积,请填空完成函数。

#include long fun(_______________)

{ long k=1;

num=abs(num);

do

{ k*=_____________;

num/=10;

}while(____________)

return k;}(1)INT NUM(2)NUM%10(3)NUM(或NUM!=0)3.下面程序的功能是用递归的方法将一个整型数num的各位数字转换为对应的数字字符输出,请填空完成程序。

#include void main(){ void convert(int n);

int num;scanf(“%d”,&num);

if(num<0)

{ putchar(„-„);

num=__________;

}

convert(num);

} void convert(int n)

{ int j;

j=n/10;

if(_______________)

convert(___________)

putchar(_____________)

}(18)-NUM(19)J!=0(20)J(21)N%10+‟0‟

4.下面程序的功能是将十进制数转换为二进制数输出,请填空完成程序。

#include void main()

{ int convert(int a);

int a,e[10],c,j=0;

scanf(“%d”,&a);

while(a!=0){ c=_____________;

a/=2;

e[j]=c;

j++;} for(____________)

printf(“%d”,e[j-1]);

} int convert(int a)

{ int c;

c=___________;

return c;

}(22)CONVERT(A)(23);J>0;J--(24)A%2 5.函数binsearch的功能是对具有n个按升序排列元素的整型数组st按折半查找法(二分查找法)查找其中的关键字key,请填空完成函数。

int binsearch(int st[],int n,int key){ int low=0,high= ______ ,mid;

while(low<=high){ mid=(low+high)/2;

if(key==st[mid])

return ___________;

else if(key

return ___________ ;

else

return ____________;

}

return 0;

}(14)HIGH=N-1(15)MID(16)LOW=MID+1(17)HIGH=MID-1

6.任何程序都可调用标准函数exit(),当它被调用时,它(_________)程序的执行。终止

7.以下函数的功能是求一个3*4矩阵中最小元素。请填空。

fun(int a[ ][4])

{int i,j,k,min;

for(i=0;i<3;i++)

for(j=0;j<4;j++)

if(______________)

min=a[i][j];

return(min);

} A[I][J]>MIN

8.下列程序利用二分法求解方程2x3-4x2+3x-6=0在(0,3)之间的根,请填空

#include

#include

#define f(x)((2*x-4)*x+3)*x-6

void main()

{float eps=1.0e-5;

float x1=0,x2=3,x,fval;

x=(x1+x2)/2;

fval=f(x);

while(____________)

{if(f(x)<0)x1=x;

else x2=x;

_____________;

fval=f(x);

}

printf(“the root is:%f”,x);

} ①FABS(FVAL)>EPS ② X=(X1+X2)/2

9.下面程序的功能是将字符串中的数字字符删除后输出。请填空。#include void delnum(char *s){ int i,j;for(i=0,j=0;s[i]!='';i++)

if(________________)

{ s[j]=s[i];

j++;

}

s[j]='';} void main(){ char *item;

printf(“ninput string:”);

gets(item);

delnum(item);printf(“n%s”,item);} S[I]< '0'||S[I]>'9'

10.下面的程序通过average计算数组中各元素的平均值,请填空。float average(int *pa,int n){ int x;

float avg=0.0;

for(x=0;x

avg=avg+ _________

;

avg=avg/n;

return(avg);} void main(){ int a[5]={2,4,6,8,10};

float mean;

mean=average(a,5);

printf(“mean=%fn”,mean);

} *(PA+X)或PA[X]

11.下列函数的功能是判断一个正整数是否是素数。若是素数,则返回值为1,完善程序。int prime(int n){ int y=1,i;

for(i=2;i<=n/2;i++)

if(__________){y=0;break;}

return(y);} N % I==0

否则返回值为0。请下列 12.以下函数的功能是:求x的n次方。请完善程序。double f1(double x,int n){ int i;

double k;

for(i=1,k=x;i

return(k);} K*X

13.以下递归函数f是求n!之值。long f(int n)

{ long r;

if(n>1)r= ____________ * f(n-1);

else r=1;

return(r);

N

14.下面的函数用以验证命题:100以内的奇数的平方被8整除,余数均为1,若命题成立,则返回1,否则返回0。请填空完成该函数。

int func()

{ int a,flag=1;

for(a=1;a<=100;a+=2)

if(___________)

{ flag=0;

break;

}

return(flag);} A*A % 8!=1

15.使用以下函数来计算xy,其中y为整型变量并且y>=0。float power(float x, int y){

float z;

for(z=1;y>0;y-=1)z_____ x;

return(z);} =Z* 16.以下程序用于求取两个整数的最大公因子。

int mcf(int a, int b){ int temp;

while(b)

{

temp = __________

;

a = b;

b = temp;

}

return(a);} A%B

17.函数rewind的作用是_________________。

使指针指向文件的开头

18.以下函数的功能是比较两个字符串的大小,若相等返回值为0,若不相等则返回第一个不相等字符之差。请填空。

fun(char *s,char *t)

{while(*t++= =*s++);

return(_____________);} *S-*T

19.在C语言中,一个函数一般均由两个部分组成,他们分别称为 ___________ 和 ____________。

(2)函数首部(或函数头)

20.下列函数是用于求n个学生成绩的平均分、最低分和最高分。可通过调用该函数返回到调用函数。请完善程序。

float average(float array[],int n,_________){ int i;float sum;

sum=array[0];

___________________;

for(i=1;i

{if(array[i]>*max)*max=array[i];

if(array[i]<*min)*min=array[i];

sum=sum+array[i];}

return(__________);} ①FLOAT *MAX,FLOAT *MIN

②*MAX=*MIN=ARRAY[0]

③ SUM/N

21.下述函数是用二分法查找key值。数组中元素值已按递增次序排列。若找到key则返回对应的下标,否则返回-1。请填空。

int bin(double a[],int n,double key)

{ int low,high,mid;

low=0;

high=n-1;

while(_____________)

{ mid=(low+high)/2;

if(key

;

else

if(key>a[mid])

_____________;

else

return mid;

}

return-1;

} ①LOW<=HIGH

②HIGH=MID-1 ③ LOW=MID+1

22.下述函数是从字符串s中删除从第I个字符开始的n个字符。请填空。

void del(char s[],int I,int n)

{int j,k,length=0;

while(s[length])_____________;

--I;

j=I;

if(____________)

{k=I+n;

if(I+n<=length)

while(k

s[j++]=s[k++];

s[j]=';

}

} ①LENGTH++ ②I*S1-*S2

24.以下递归函数是求n!之值。float fac(int n){ float f;

if(n==0|| n==1)

f=1;

else

f=n*___________________;

return(f);}FAC(N-1)

五、阅读程序

1.下列程序的执行结果是多少? #include void main(){ int fun(int a);

int a=2,j,k;

for(j=0;j<2;j++)k=fun(a++);

printf(“%dn”,k);} int fun(int a){ int b=0;

static int c=3;

a=c++,b++;

return a;} 2.下列程序的执行结果是多少? #include int m=13;void main(){ int fun(int x,int y);

int a=7,b=5;

printf(“%dn”,fun(a,b)/m);} int fun(int x,int y){ int m=3;

return x*y-m;}

3.下列程序的执行结果是多少? #include int d=1;void main(){ void fun(int p);

int a=3;

fun(a);

d+=a++;printf(“%dn”,d);} void fun(int p){ int d=5;

d+=p++;printf(“%d,”,d);} 8,4

4.下列程序的执行结果是多少? #include int d=1;void main(){ int fun(int p);

int a=3;

printf(“%dn”,fun(a+fun(d)));} int fun(int p){ static int d=5;

d+=p;

printf(“%d,”,d);

return d;} 6,15,15

5.下列程序的执行结果是多少? #include void main(){ void fun(int *k);

int w=5;fun(&w);} void fun(int *k){

(*k)++;

printf(“%dn”,*k++);} 6

6.下列程序的执行结果是多少? #include void main(){ void fun1(int x,int y,int *sum);

void fun2(int x,int y,int *product);

void(*f)(int x,int y,int *pt);

int a=10,b=20,c=100;

f=fun1;

(*f)(a,b,&c);

printf(“%d,%d,%dn”,a,b,c);

f=fun2;

(*f)(a,b,&c);

printf(“%d,%d,%dn”,a,b,c);} void fun1(int x,int y,int *sum){

*sum=x+y;} void fun2(int x,int y,int *product){

*product=x*y;} 10,20,200

7.下列程序的输出结果是

#include

main()

{int k=4,m=1,p;

p=func(k,m);

printf(“%d,”,p);

p=func(k,m);

printf(“%dn”,p);

}

func(int a,int b)

{static int m=1,n=2;

n+=m+1;

m=n+a+b;

Return(m);

} 9,19

8.给出以下程序的运行结果。#include int x,y,a=15,b=10;void num(){ x=a-b;

y=a+b;} void main(){ int a=7,b=5;

x=x+a;

y=y-b;

num();

printf(“%d,%dn”,x,y);} 5,25

9.给出下面程序的运行结果。#include f(int num,int run){static int fact,i;if(run==0)

{ fact=1;

i=1;}

fact *=i;

if(++i<=num)

f(num,1);

return(fact);} void main(){ int i=0;

printf(“f=%dn”,f(3,0));} F=6

10.以下程序的运行结果是()。#include unsigned fun6(unsigned num){ unsigned k=1;

do

{ k*=num%10;

num/=10;

}while(num);return(k);} void main(){ unsigned n=26;printf(“%dn”,fun6(n));} 12

11.以下程序的运行结果是(#include increment(){ static int x=0;

x=x+1;

printf(“%dn”,x);} void main(){ increment();

increment();

increment();} 1

12.以下程序的运行结果是(#include void num(){ int x,y;

int a=15,b=10;

x=a-b;

y=a+b;} int x,y;void main(){ int a=7,b=5;

x=a+b;

y=a-b;

num();printf(“%d,%dn”,x,y);})。

2)。

12,2

13.下列程序的输出结果是()。#include void main(){ int f(int n);

int i,k,s=0;

for(i=1;i<=5;i++)

{ k=f(i);

if(k%6!=0)

continue;

if(k>100)

break;

s=s+k;

} printf(“%d”,s);} int f(int n){ static int f=1;

f=f*n;

return f;} 30

14.下列程序的运行结果是(#include void main(){ void add();

int i;

for(i=0;i<3;i++)

add();} void add(){ static int x=0;

x++;

printf(“%d ”,x);} 1 2 3

15.#include void main(){ long fun(int n);

printf(“%ldn”,fun(4));} long fun(int n){ long s;

if(n==1||n==2))。

s=2;

else

s=n+fun(n-1);

return s;} 9

16.#include void main(){ int fun(int x);

int k=2,m=1,n;

n=fun(k);

n=fun(m);

printf(“%dn”,n);} int fun(int x){ static int a=3;

a+=x;

return a;6

17.#include void main(){ int fun(int a);

int a=2,j;

for(j=0;j<3;j++)printf(“%d”,fun(a));} int fun(int a){ int b=0;

static int c=3;

b++,c++;

return a+b+c;} 789

18.下列程序的输出结果是(#include int x=1,y=2,z=3;main(){ int x=6;

y=5;

funcA(x++,y);

printf(“%d,%d,%dn”,x,y,z);} funcA(){ register int c=10;)

int x;

y=7;x=c;

funcB();

printf(“%d,%d,%dn”,x,y,z);

funcB();

printf(“%d,%d,%dn”,x,y,z);} funcB(){ static int a=2;

z=++a;

printf(“%d,%d,%dn”,x,y,z);} 1,7,3 10,7,3 1,7,4 10,7,4 7,7,4

19.下列程序的输出结果是

#include unsigned f(unsigned num)

{ unsigned k=1;

do

{k*=num%10;

num/=10;

}while(num);

return k;

}

void main()

{int x=35,y=550;

printf(“%d,%d”,f(x),f(y));

} 运行结果: 15,0

20.下列程序的输出结果是:

#include

void main()

{ static int a[][3]={9,7,5,3,1,2,4,6,8};

int m,n,s1=0,s2=0;

for(m=0;m<3;m++)

for(n=0;n<3;n++)

{ if(m==n)s1+=a[m][n];

if(m+n==2)s2+=a[m][n];

}

printf(“%d,%dn”,s1,s2);

} 运行结果:

18,10

21.下列程序的输出结果是

#include

void main()

{int f(int n);

int n,k,s=0;

for(n=1;n<10;n++)

{k=f(n);

if(k%6!=0)continue;

if(k>100)break;

s=s+k;

}

printf(“%d”,s);

}

int f(int n)

{static int f=1;

f=f*n;

return f;

} 运行结果 30

22.下述程序的运行结果是()。

main()

{ static int a[]3}={9,7,5,3,1,2,4,6,8};

int I,j,s1=0,s2=0;

for(I=0;I<3;I++)

{ if(I==j)s1+=a[I][j];

if(I+j==2)s2+=a[I][j];

}

printf(“%d,%dn”,s1,s2);} 18,10

23.以下程序的运行结果是()

#include

void fun(int x)

{putchar('0'+x%10);

fun(x/10);}

main()

{int m=1234;

fun(m);} 4321

24.下面程序的输出结果是()。#include extern int j=1;void main(){ void add();

int sum(int x);

int k,s;

add();

j++;

printf(“j=%dn”,j);

for(k=1;k<=10;k++)

s=sum(k);

printf(“s=%dn”,s);} void add(){ int j=0;

j++;}

int sum(int j){ int x=0;

x+=j;

return(x);} j=2 s=10 25.以下程序的运行结果是(#include

f(int a)

{int b=0;

static int c=3;

a=c++,b++;

return(a);}

main()

{int a=2,i,k;

for(i=0;i<3;i++)

k=f(a++);

printf(“%dn”,k);} 6

六、编程题)1.实现判断一个正整数是否为素数的函数首部为int isprime(int x),当x是素数时函数返回1,否则返回0。要求编制该函数并用相应的主函数进行测试。

#include #include void main(){ int isprime(int x);int a;printf(“Input the number:n”);

scanf(“%d”,&a);

if(isprime(a))

printf(“The %d is a prime.n”,a);

else

printf(“The %d is not a prime.n”,a);

} int isprime(in

2.函数adddigit的原型为int adddigit(int num);,其功能是求num各位数字之和。要求编制该函数并用相应的主函数进行测试。

3. #include #include void main(){ int adddigit(int num);int n;scanf(“%d”,&n);

printf(“sum=%dn”,adddigit(n));} int adddigit(int num){ int s=0;num=abs(num);do { s+=num%10;num/=10;}while(num);return s;} 3.函数fac的原型为long fac(int j);,其功能是利用静态变量实现n!。要求编制该函数并用相应的主函数进行测试。

5. #include void main(){ long fac(int j);int num,j;long ff;scanf(“%d”,&num);

for(j=2;j<=num;j++)ff=fac(j);printf(“num!=%ldn”,ff);} long fac(int j){ static long ff=1;ff*=j;return ff;} 4.编程实现求两个整型量之和的功能,要求参加操作的两个整数从命令行提供。

#include #include void main(int argc,char *argv[]){ if(argc!=3){ printf(“command error!n”);

return;} printf(“%dn”,atoi(argv[1])+atoi(argv[2]));} 5.编写一主函数先输入一个6*6的矩阵,然后再输入一个整型变量 n,若 n≤6,则对6*6的矩阵中的左上角的n*n矩阵进行转置,要求编写出实现这一要求的函数 transf()。

参考程序 #DEFINE M 6 #INCLUDE

MAIN(){ CHAR CC[M][M];INT I,J,N;

FOR(I=0;I

FOR(J=0;J#INCLUDE

7.输入正整数n,k,输出n中从右端开始的第k个数字的值。如n=2678,其右边第2个数字为7。要求将求n中右端第

k个数字定义成函数。在实现中,可用函数pow(x,y),其功能是x的y次方。#INCLUDE

8.有一个一维数组,内有n个学生的成绩,编写一个函数,要求能够将其中的平均值、最高分、最低分返回到调用函数中。注意:不允许使用全局变量来实现。

FLOAT AVER(FLOAT A[],INT N,FLOAT *MAX,FLOAT *MIN)

{ INT I;

FLOAT SUM;

*MAX=*MIN=SUM=A[0];

FOR(I=1;I

{SUM=SUM+A[I];

IF(*MAX

IF(*MIN>A[I])*MIN=A[I];

}

RETURN(SUM/N)

9.有一字符串,包含n个字符。写一个函数,将此字符串从第m个字符开始的全部字符复制成为另一个字符串并输出这个字符串。例如,要求把字符串abcdefg 中第3个字符开始的全部字符复制成为另一个字符串cdefg。

#include #include void main()

/*字符串的部分复制*/ {void copystr(char *p1,char *p2,int m);int m;char str1[20],str2[20];scanf(“%s”,str1);

/* 输入一个字符串*/ scanf(“%d”,&m);

/* 从第几个字符开始复制*/ if(strlen(str1)

10.从键盘上输入n(n<50)个任意位的正整数m(m<32767),将每个整数的各位数字之和存放在a数组中。要求:求每个整数k的各位数字之和用自定义函数来实现。

#include void main(){ int sumnum(int k);int n,m,i;int a[50];scanf(”%d“,&n);

/* 输入所求的1整数的个数*/ for(i=0;i

if(m>0&&m<32767)

{ a[i]=sumnum(m);

上一篇:企业管理培训班学习心得总结下一篇:离散数学考试题型之定理应用题