信息系统测试形成性考核册参考答案

来源:互联网 发布:java 500错误原因 编辑:程序博客网 时间:2024/05/01 23:23

 

1   

一、       单项选择题

1.信息系统发展成为管理信息系统,是因为信息系统的功能集中于(D)。

A.对管理信息进行处理

B.对生产管理进行控制

C.进行信息处理和信息传输

D.提供信息和支持决策

2.管理信息系统最重要的内部信息来源是(A)。

A.事务处理系统

B. 决策支持系统

C. 数据处理系统

D.管理信息系统本身

3.传统的软件测试的角度包括单元测试、系统测试、集成测试和(B)。

A.过程测试

B. 验收测试

C. 压力测试

D.安全测试

4.用来支持操作管理层人员的日常活动的信息系统是(B)。

    A.指挥信息系统            B 事务处理系统

    C.管理信息系统            D 决策支持系统

二、       填空题

1.  信息主要有以下几个特性:  正确性    完备性    相关性    及时性 

2.  信息系统是由  硬件    软件    数据库    远程通信    人员  组成的信息处理的统一体。建立信息系统的目的是实现信息的   管理    调节    控制 

3.  信息系统的基本功能可以归纳为:  信息收集    信息处理    信息存储    信息传输     信息输出 

4.  信息系统测试分为:  负载测试    压力测试     用户界面测试    兼容性测试    安全测试    接口测试 

5.  决策支持系统通常由三部分组成,  人机交互  子系统、  数据库  子系统、  模型库  子系统。

6.  系统调查报告由  高层管理者    用户  进行审查,一旦系统调查阶段的成果被  管理层    用户  接受,系统开发就进入了系统分析阶段。

7.  软件公司和许多其他组织通常根据系统维护中的变更量来确定维护的类型。维护的类型包括:  微小改进    修补    版本发布    版本 

 

三、       简答题

1.  什么是数据?什么是信息?简述它们之间的联系和区别。

答:

数据是可以被记录、通信和识别的符号,用来描述客观事物的原始事实。信息是按特定方式组织在一起的原始事实的集合,信息已经具有了超出客观事物原始事实本身的额外价值和含义。在信息系统中,数据只是简单的原始事实,而信息则是人们对原始数据进行加工处理以后得到的结果,是人们做出决策的依据。

 

2.  在信息系统的测试中只需采用传统的软件测试技术,是否正确?为什么?

答:

不正确。

在信息系统开发的过程中,首先要按照软件工程的要求,利用传统的软件测试技术对信息系统进行测试。但对信息系统除了要进行传统的软件测试外,由于信息系统本身的特性,信息系统测试与传统的软件测试相比还有许多不同之处。信息系统测试不但需要检查和验证系统是否完成系统功能,而且还要从最终用户的角度进行安全性和可用性测试。特别是由于网络的不可预见性使对信息系统的测试变得更加复杂。

 

3.  简述管理信息系统的特点。

答:

管理信息系统可以为管理人员和决策者提供管理信息,包括人员、过程、数据库及各种设备几个部分。它能够帮助管理者实现企业目标,向管理者提供信息及其反馈,使他们能将现有结果与预定目标进行比较,确定问题所在,寻求改善的途径和机会。管理信息系统的输入数据包括内部数据和外部数据两个数据源。同时管理信息系统只是一种辅助管理系统,它所提供的信息需要由管理人员分析、判断和决策,所以当面对一些复杂的决策问题时,它往往显得无能为力。

 

 

第2章         软件测试基础

一、       单项选择题

1 软件缺陷产生的最主要原因(D)。

A.编码错误

B. 测试错误

C. 设计错误

D.产品说明书错误

2 软件测试过程中单元测试的意思是(A)。

A 对软件中的各个模块进行测试

B 对软件中的各个基本过程进行测试

C 对软件中的每个子程序进行测试

D 对软件中的各个子系统进行测试

二、       判断题(从下列叙述中选择正确的叙述,在括号中划上;对于你认为是错误的叙述要划上´并说明原因。)

1.  测试是使用人工的或自动的手段来运行或检测某个系统的过程, 其目的在于检验它是否满足约定的需求或是比较预期结果与实际结果之间的差别。(   

2.  软件测试是为了发现并改正错误而运行程序的过程。(  ´ 

原因:软件测试是为了发现错误而运行程序的过程。

3.  软件测试主要指程序测试,在软件生存期个阶段所产生的文档不是软件测试的对象。(  ´ 

原因:软件测试并不等于程序测试,在软件生存期个阶段所产生的文档都是软件测试的对象。

4.  在白盒测试中,如果覆盖率达到100% ,就基本可以保证把所有的隐藏程序缺陷都已经揭露出来了。(  ´ 

原因:无论何种测试覆盖,即使覆盖率达到100% ,都不可能保证把所有的隐藏程序缺陷揭露出来。

 

三、 填空题

1.  对软件正确性的描述可以划分为6种不同的情况分别为: 程序编写得无语法错误 程序运行中未发现明显的运行错误 程序中无不适当语句 程序运行中能通过典型的有效测试数据,而得到正确的预期效果   程序运行中能通过典型的无效测试数据,而得到正确的预期结果    程序运行中能通过任何可能的输入数据,并给出正确的结果

2.  从软件错误的性质看,可以把软件错误分为8种类型,分别为:  需求错误   功能与性能错误   程序结构错误 数据错误   实现和编码错误    集成错误   系统结构错误  以及  测试定义与测试执行错误 

3.  软件错误产生的原因有:  产品说明书错误    设计错误   编码错误    测试错误 

4.  在软件测试中,IPO原则是指  测试用例应由测试输入数据,测试执行步骤和预期输出结果三部分组成  

5.  对一个成功的软件来说,只有经过  编码、测试、再编码、再测试  这样一个不断的循环过程,才能获得较高的产品质量。

6.  人工测试的主要方法包括  软件审查    代码审查    人工走查 

7.  软件审查通常的步骤为:  制定计划    预审    准备 审查会   返工   终审 

8.  黑盒测试方法包括  等价类划分    边界值分析   因果图    判定表驱动法     功能测试 

 

四、 简答题

1.  软件测试的原则是什么,并说明在软件测试过程中使用这些原则的原因。

答:

测试的目标是以最少的时间和人力找出软件中潜在的各种错误和缺陷。基于这样的测试目的,软件测试的原则应该是:(1)提早原则:应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。据统计约60%的错误来自设计阶段以前,并且修复一个软件错误所需的费用将随着软件生存周期的进展而上升。错误发现得越早,修复它所需的费用就越少。反之,错误发现得越晚,修改它的费用就越高,而且是呈指数增长。(2IPO原则:测试用例应由测试输入数据,测试执行步骤和预期输出结果三部分组成。(3)独立测试原则:开发人员应避免测试自己的程序。程序开发机构不应测试自己的程序。独立测试能带来客观性、专业性、权威性和资源有保证等好处。

 

2.  简述确认和验证有什么异同点。

答:

确认是软件开发过程中的一系列活动和过程,其目的是想证实在一个给定的外部环境中软件的逻辑正确性。验证是软件开发过程中的一系列活动,试图证明程序在软件生存周期各个阶段,以及各阶段间的逻辑协调性、完备性和正确性,以确保软件能够正确无误地实现软件的需求。验证和确认的差别是:确认要证实开发的软件产品的正确性;而验证是要证实软件是否满足了需求。

 

3.由于单元测试要写测试驱动程序,非常麻烦,能否等到整个系统全部开发完后,再集中精力进行一次性地单元测试呢?

答:

不能这样做,因为如果这样做,在开发过程中,缺陷会越积越多并且分布得更广、隐藏得更深,反而导致测试与改错的代价大大增加。最糟糕的是无法估计测试与改错的工作量,使进度失去控制。因此为图眼前省事而省略单元测试或者“偷工减料”,是“得不偿失”的做法。

 

4.试比较白盒测试与黑盒测试。

答:

黑盒测试只能观察软件的外部表现,即使软件的输入输出都是正确的,却并不能说明软件就是正确的。因为程序有可能用错误的运算方式得出正确的结果,例如“负负得正,错错得对”,只有白盒测试才能发现真正的原因。白盒测试能发现程序里的隐患,象内存泄漏、误差累计问题。在这方面,黑盒测试存在严重的不足。

 

5.如果每个单元都通过了测试,把它们集成一起难道会有什么不妥吗?集成测试是否多此一举?

答:

要把N个单元集成一起肯定靠接口耦合,这时可能会产生在单元测试中无法发现的问题。例如:数据通过不同的接口时可能出错;几个函数关联在一起时可能达不到预期的功能;在某个单元里可以接受的误差可能在集成后被扩大到无法接受的程度。所以集成测试是必要的,不是多此一举。

 

6.请根据下图简述软件测试的过程。

 

 

 

 

单元

测试

单元

测试

单元

测试

集成

测试

确认

测试

系统

测试

设计信息

测试

软件需求

测试

系统信息

测试

已测模块

测试

模块

测试

模块

测试

模块

测试


答:

如图中所示,我们可以把软件测试过程按测试的先后次序分成四个阶段进行:单元测试、集成测试、确认测试和系统测试。单元测试是分别针对每个程序单元进行测试,以确保每个单元都能正常工作。在单元测试中,大量采用白盒测试方法,以便尽可能发现程序单元内部的错误。单元测试后进行集成测试,在集成测试过程中,首先把已经通过单元测试的模块组装起来,构成一个在设计阶段所定义的程序结构,然后通过集成测试发现与接口有关的问题。

集成测试之后进行确认测试,确认测试就是检验所开发的软件是否能按用户提出的需求运行。若能达到这一要求,则认为开发的软件是合格的。最后进行验收测试,验收测试是以用户为主的测试,软件开发人员和质量保证人员也应参加,并由用户参加设计测试用例和分析测试的输出结果。除考虑功能,性能以外,还应对软件的如可移植性,兼容性,可维护性,错误的恢复功能等进行确认。

 

 

3 软件测试技术

一、       单项选择题

1 下面说法正确的是(C)。

A 经过测试没有发现错误说明程序正确

B 测试的目标是为了证明程序没有错误

C 成功的测试是发现了迄今尚未发现的错误的测试

D 成功的测试是没有发现错误的测试

2 覆盖准则最强的是(D)。

A.语句覆盖

B. 判定覆盖

C. 条件覆盖

D.路径覆盖

3 发现错误能力最弱的是(A)。

A.语句覆盖

B. 判定覆盖

C. 条件覆盖

D.路径覆盖

4 实际的逻辑覆盖测试中,一般以(C)为主设计测试用例。

A.    条件覆盖

B.    判定覆盖

C.    条件组合覆盖

D.    路径覆盖

5 下面(D)方法能够有效地检测输入条件的各种组合可能引起的错误。

A.    等价类划分

B.    边界值分析

C.    错误推测

D.    因果图

6 超出软件工程范围的测试是(D)。

A.    单元测试

B.    集成测试

C.    确认测试

D.    系统测试

7 软件测试不需要了解软件设计的(D)。

B.    功能

C.    内部结构

D.    处理过程

E.    条件

8 B)方法需要考察模块间的接口和各模块之间的联系。

A.    单元测试

B.    集成测试

C.    确认测试

D.    系统测试

9 调试应该由(B)完成。

A.    与源程序无关的程序员

B.    编制该源程序的程序员

C.    不了解软件设计的机构

D.    设计该软件的机构

10 召开审查会,在会中由小组成员阅读程序,以发现程序错误,同时测试员利用测试数据人工运行程序并得出输出结果,然后由参加者对结果进行审查, 以达到测试的目的。这种测试方法是(C)。

A.    软件审查

B.    错误推测法

C.    人工走查

D.    代码审查

二、       填空题

1.       白盒测试是以仔细检查程序的细节为基础,通过提供一组指定条件和循环的___测试用例_,对软件中的__逻辑路径__进行测试,可以在不同的检查点检查程序的状态,以确定___实际运行状态    预期状态___是否一致。

2.       具体的白盒测试方法有   程序控制流分析     数据流分析    逻辑覆盖    域测试    符号测试    路径分析    程序插装  等。

3.       覆盖包括的常用覆盖方法有:  语句覆盖    分支覆盖    条件覆盖    判定-条件覆盖    路径覆盖 

4.       白盒测试过程中使用静态分析技术主要目的为:  程序逻辑和编码检查    一致性检查    接口分析    I/O规格说明分析    数据流    变量类型检查    模块分析 

5.       通常对源程序进行静态分析的方法为:  生成引用表    程序错误分析    接口分析 

6.       动态测试包括  功能确认与接口测试    覆盖率分析    性能分析    内存分析 

7.       面向对象测试包括  面向对象分析的测试    面向对象设计的测试    面向对象编程的测试    面向对象单元测试    面向对象集成测试    面向对象系统测试 

 

三、       简答题

1.  为什么说软件测试是软件开发中不可缺少的重要一环,但不是软件质量保证的安全网?

答:

软件测试是软件开发中不可缺少的重要一环,原因是:测试的工作量约占整个项目开发工作量的40%左右,几乎一半。如果是关系到人的生命安全的软件,测试的工作量还要成倍增加。软件测试代表了需求分析、设计、编码的最终复审。

软件测试不是软件质量保证的安全网,因为软件测试只能发现错误,不能保证没有错误。

 

2.  简述代码审查与人工走查的区别与联系。

答:

代码审查以通过召开代码审查会的方式进行。代码审查小组通常由四人组成,其中有一个是组织者,一般是由能力较强的程序员担任,但他不能是被审查程序的作者。组织者负责为代码审查会分发材料,安排并主持会议,记录所有已查出的错误,并且保证这些错误随之得以改正。小组的其余成员通常是被审查程序的设计者或程序员。另外,审查小组还需要一个测试领域的专家;人工走查与代码审查一样,采用召开审查会的方式,在会中由小组成员阅读程序,以发现程序错误。人工走查与代码审查的不同之处在于,在人工走查会上除了阅读程序外,还需要由测试员利用测试数据人工运行程序并得出输出结果,然后由参加者对结果进行审查,以达到测试的目的。

 

3.  简述使用边界值分析法选择测试用例时应该遵循的原则。

答:使用边界值分析法选择测试用例时,应遵循以下几条原则:

                (1)      如果输入条件规定了值的范围,则应取刚达到这个范围的边界值,以及刚刚超过这个范围边界的值作为测试输入数据。

                (2)      如果输入条件规定了值的个数,则用最大个数,最小个数,比最大个数多1,比最小个数少1的数作为测试数据。根据规格说明和每个输出条件,使用前面的原则(1)

                (3)      根据规格说明和每个输出条件,使用前面的原则(2)

                (4)      如果程序的规格说明给出的输入域或输出域是有序集合(如有序表、顺序文件等),则应选取集合的第一个元素和最后一个元素作为测试用例。

                (5)      如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。

                (6)      分析规格说明,找出其它可能的边界条件。

 

4.  传统的测试模型对面向对象软件不再适用,原因是什么?

答:

面向对象程序的结构不再是传统的功能模块结构,作为一个整体,原有集成测试所要求的,逐步将所开发的模块搭建在一起进行测试的方法已成为不可能。而且,面向对象软件抛弃了传统的开发模式,对每个开发阶段都有不同以往的要求和结果,已经不可能用功能细化的观点来检测面向对象分析和设计的结果。因此,传统的测试模型对面向对象软件已经不再适用。

 

四、       应用题

1.某商场在“五一”期间,顾客购物时收费有4种情况:普通顾客一次购物累计少于100元,按A类标准收费(不打折),一次购物累计多于或等于100元,按B类标准收费(打9折);会员顾客按会员价格一次购物累计少于1000元,按C类标准收费(打8折),一次购物累计等于或多于1000元,按D类标准收费(打7折)。测试对象是按以上要求计算顾客收费模块,按照路径覆盖法设计测试用例。

解:① 被测模块的程序流程图

 

按照路径覆盖法设计测试用例如下:

是会员,累计消费900元,     覆盖路径127

是会员,累计消费2000元,    覆盖路径128

不是会员,累计消费80元,    覆盖路径134

不是会员,累计消费300元,   覆盖路径135

 

 

2.  变量的命名规则一般规定如下:变量名的长度不多于40个字符,第一个字符必须为英文字母,其他字母可以英文字母、数字以及下划线的任意组合。请用等价分类法设计测试用例。

解:(一)划分等价类

输入软件

合理等价类

不合理等价类

长度

(1)  小于40个字符

(2)  等于40个字符

5)大于40个字符

第一个字符

3)英文字母

6)非英文字母

其他字母

4)英文字母、数字或下划线的任意组合

(7)  空格

(8)  标点符号

(9)    运算符号

(10)      其他可显示字符

(二) 设计测试用例

 

测试数据

测试范围

期望结果

s_name12

等价类(1),(3),(4)

有效

a1b2c3d4e5f6g7h8i9j1k2l3m4n5o6p7q8r9s_tr

等价类(2),(3),(4)

有效

a1b2c3d4e5f6g7h8i9j1k2l3m4n5o6p7q8r9s_trff

等价类(5)

无效

234name

等价类(6)

无效

ab gh

等价类(7)

无效

ab!2f

等价类(8)

无效

fg+ghh

等价类(9)

无效

H@gh

等价类(10)

无效

 

 

 

4 Web信息系统测试方法

一、       填空题

1.  绝大多数Web应用系统中都可能拥有六种属性:  网络集约性    内容驱动性    持续演化性    即时性    安全性  以及  美观性 

2.  Web应用系统测试通常包括:  功能测试    性能测试    可用性测试    安全性测试    系统兼容性测试    接口测试 

3.  性能测试包括以下内容:  压力测试    连接速度测试    负载测试 

4.  压力测试必须对 Web 服务应用四个基本条件进行有效的压力测试,这四个基本条件为:  重复    并发    量级    随机变化 

5.  客户端兼容性测试包括的内容为:  平台测试    浏览器测试    分辨率测试    连接速率测试    打印机测试    组合测试 

6.  漏洞扫描按功能可分为:  系统漏洞扫描    网络漏洞扫描    数据库漏洞扫描 

7.  TEMPEST技术是指  抑制和防止电磁泄漏  ,这种技术是物理安全策略的一个主要问题。

8.  访问控制是  网络安全防范和保护  的主要策略,它的主要任务是  保证网络资源不被非法使用和访问 

9.  数据传输加密技术主要是对传输中的  数据流  进行加密,常用的有  链路加密    节点加密    端到端加密  三种方式。

 

二、       判断题(从下列叙述中选择正确的叙述,在括号中划上;对于你认为是错误的叙述要划上´并说明原因。)

1.         SSL协议建立在可靠的网络层协议(IP)之上,而与应用层协议无关。应用层协议(例如:HTTPFTPTELNET)通常能透明地建立于SSL协议之上。(  ´ 

原因:SSL协议建立在可靠的传输层协议(TCP)之上,而与应用层协议无关。

2.         文件完整性检查系统具有相当的灵活性,可以配置成为监测系统中所有文件或某些重要文件。(   

3.         网络入侵检测系统发生故障不会影响正常业务的运行,但部署一个网络入侵检测系统的风险比主机入侵检测系统的风险要高一些。(  ´ 

原因:部署一个网络入侵检测系统的风险比主机入侵检测系统的风险要小得多。

4.         文件的数字信息可以通过Hash函数计算得到。不管文件长度如何,它的Hash函数计算结果是一个固定长度的数字。(   

5.         与双绞线、同轴电缆不同的是,光缆不发射能量,因此对于防止窃听很有效果,用光缆传输也是安全性最好的。(   

 

三、       简答题

1.  说明基于主机的入侵检测系统的优缺点。

答:基于主机入侵检测系统的优点:

(1)主机入侵检测系统对分析“可能的攻击行为”非常有用。

(2)主机入侵检测系统通常情况下比网络入侵检测系统误报率要低,因为检测在主机上运行的命令序列比检测网络数据流更简单,系统的复杂性也少得多。

(3)主机入侵检测系统可部署在那些不需要广泛的入侵检测、传感器与控制台之间的通信宽带不足的情况下。主机入侵检测系统在不使用诸如“停止服务” 、“注销用户”等响应方法时风险较少。

基于主机入侵检测系统的弱点:

(1)主机入侵检测系统安装在需要保护的设备上。

(2)主机入侵检测系统的另一个问题是它依赖于服务器固有的日志与监视能力。如果服务器没有配置日志功能,则必需重新配置,这将会给运行中的业务系统带来不可预见的性能影响。

(3)全面部署主机入侵检测系统代价较大,企业中很难将所有主机用主机入侵检测系统保护,只能选择部分主机保护。那些未安装主机入侵检测系统的机器将成为保护的盲点,入侵者可利用这些机器达到攻击目标。

(4)主机入侵检测系统除了监测自身的主机以外,根本不监测网络上的情况。对入侵行为的分析的工作量将随着主机数目增加而增加。

 

2什么是基于Web的信息系统?

答:基于Web的信息系统是采用Browser/Server模式的信息体系结构,以企业内部互联网技术为核心,以Web技术为基础的集成环境之上,它基于网络对象超连接技术,能成功地访问各种服务器以及数据库和其他文件系统。

 

 

5  信息系统测试的设计、组织和实施

一、   单项选择题

1 将基于功能的和基于实现的测试设计结合在一起的测试,我们称这种测试为(B)。

    A.基于故障的测试

B.灰盒测试

C.黑盒测试

D.白盒测试

2 在软件开发初期,即需求分析阶段制定的测试计划是(B)。

    A.详细测试计划

B.概要测试计划

C.需求分析测试计划

D.测试实施计划

3 从测试的要求来讲,如果想让测试完成的效果更好,测试部门与开发部门的关系最好是下面四种中的(C)。

A.测试组织与开发组织为同一公司同一部门同一小组,但测试人员与开发人员为不同人员。

B.测试组织与开发组织为同一公司,但不在同一部门。

C.测试组织与开发组织为不同公司。

D.测试组织与开发组织为同一公司同一部门同一小组,并且测试人员与开发人员为同一组人员,即开发人员测试自己的程序。

 

二、   判断(从下列叙述中选择正确的叙述,在括号中划上;对于你认为是错误的叙述要划上´并说明原因。)

1.         系统可靠性并不是在系统运行时才需要关注,而是在系统分析、设计、编码和实施的开发过程中,通过测试过程实现的。(   

2.         基于实现的测试设计,根据对源代码的分析开发测试用例,它和白盒测试设计是同义的。(   

3.         测试部门与开发部门的耦合程度越密切,测试质量越有保证。(  ´ 

原因:测试部门与开发部门的耦合程度越密切,测试的独立性越低,测试质量越难以保证。

 

三、   填空题

1.  测试设计是  使用一个测试策略产生一个测试用例集的过程  ,其设计得步骤分为:  识别    设计    补充    评估 

2.  测试用例实际上是对软件运行过程中所有可能存在的  目标   运动 行动    环境    结果  的描述,是对客观世界的一种抽象。

3.  一个典型的测试用例应该包括下列详细信息:  测试目标    待测试的功能    测试环境及条件    测试日期    测试输入    测试步骤    预期的输出    评价输出结果的准则 

4.  在生命周期中软件问题报告共包括五个状态:  新建状态    打开状态    待验状态    解决状态    关闭状态 

5.  测试报告应具备下列内容:  产品标识    使用的配置    使用的文档    产品说明    用户文档,程序和数据的测试结果    与需求不相符的功能项列表    测试的最终日期 

 

四、   简答题

1.  简述测试计划的层次,并说明各层次测试计划的主要内容。

答:

一般而言,测试计划可分为三个层次。

首先是概要测试计划。概要测试计划是软件项目实施计划中的一项重要内容,应当在软件开发初期,即需求分析阶段制定。这项计划应当定义测试对象和测试目标;确定测试阶段和测试周期的划分;制定测试人员、软硬件资源和测试进度等方面的计划;规定软件测试方法、测试标准以及支持环境和测试工具。

第二层是详细测试计划。详细测试计划是针对子系统在特定的测试阶段所要进行的测试工作制定的详细计划。它详细规定了测试小组的各项测试任务、测试策略、任务分配和进度安排等。

最后一层是测试实施计划。测试实施计划是根据详细测试计划制定的测试者的测试具体实施计划。它规定了测试者在每一轮测试中负责测试的内容、测试强度和工作进度等。测试实施计划是整个软件测试计划的组成部分,是检查测试实际执行情况的重要依据。

 

2.  说明设计一个测试用例的基本原则。

答:

一个好的测试用例在于能够发现至今没有发现的错误;测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成;在测试用例设计时,应当包含合理的输入条件和不合理的输入条件。

 

五、   应用题

请分析下段程序,综合之前所学过的白盒测试的知识,设计测试用例要求覆盖所有分支,并且对边界情况,非法情况进行测试。

#include <stdio.h>

main()

{

       int n;

       char opt;

       int i,j,k;

       int sum[50][50];

       int a,b;

       //输入nopt

       scanf("%d",&n);

       scanf("%c",&opt);

      

       i=0,j=0,k=0;

      

       for(a=0;a<50;a++)

       {

              for(b=0;b<50;b++)

              {

                     sum[a][b]=a+b;

              }

       }

   

       while(i<50)

       {           

              if(opt == '+')

              {

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

                     {

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

                            {

                                   sum[j][k] = sum[j][k] + 1;

                                   printf("%5d",sum[j][k]);

                            }

                            i++;

                     }

              }

              else if(opt == '-')

              {

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

                     {

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

                            {

                                   sum[j][k] = sum[j][k] -1;

                                   printf("%5d",sum[j][k]);

                            }

                            i++;

                     }

 

              }

              else if(opt == '#')

              {

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

                     {

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

                            {

                                   printf("%5d",sum[j][k]);

                            }

                            printf("/n");

                     }

                     break;

              }

              else

              {

                     printf("illegal operator/n");

                     break;

              }

       }

 

}

 

解:

合法情况:

n

opt

150之间的自然数

+-#

 

 

非法情况:

n

opt

-1051100

其它符号如&%$