请问一下这道零基础学c语言言题目

1980年代初布莱德·确斯(Brad Cox)在其公司Stepstone发明Objective-C,它以一种叫做SmallTalk-80的语言为基础Objective-C建立在零基础学c语言言之上,意味着它是在零基础学c语言言基础上添加了扩展而创造出来的能够創建和操作对象的一门新的程序设计语言对Objective-C最主要的描述是他1986年出版的《Object-oriented Microsystem)联合发布了一个针对NEXTSTEP系统的标准典范,名为OPENSTEPOPENSTEP在自由软件基金会的实现名称为GNUStep。1996年12月20日苹果公司宣布收购NeXT Software公司,NEXTSTEP/OPENSTEP环境成为苹果操作系统下一个主要发行版本OS X的基础这个开发环境的该版本被苹果公司称为Cocoa。

苹果公司最早于2007年1月9日的Macworld大会上公布这个系统最初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad以及Apple TV等苹果产品上iOS与苹果的Mac OS X操作系統一样,它也是以Darwin为基础的因此同样属于类Unix的商业操作系统。原本这个系统名为iPhone OS直到2010年6月7日WWDC大会上宣布改名为iOS

Objective-C是零基础学c语言言的严格母集合,意指任何原始的零基础学c语言言程式都可以通过Objective-C编译器而不需修改也允许 Objective-C 使用任何原始的零基础学c语言言代码。Objective-C 形容自己为覆盖于零基础学c语言言上的一层薄纱这是因为Objective-C的原意就是在原始零基础学c语言言主体上加入面向对象的特性。Objective-C的面向对象语法源于Smalltalk讯息傳递风格所有其他非面向对象的语法,包括变量型别前处理器(preprocessing),流程控制函数声明与调用皆与零基础学c语言言完全一致。

新版夲的Xcode blogs.com/stoic/原创欢迎转载分享。请尊重作者劳动转载时保留该声明和作者博客链接,谢谢!

}

COBOL中有几类典型结构的表这几類典型结构的表在大体上可分为下标表和索引表两大类。另外根据表的重复次数定义又有定长表和变长表。此外表还允许嵌套,因此還有嵌套表这几类表均符合表的基本定义,都是一组连续存储的相似数据的集合但每种类型的表在此基础上又各有特色。以下几种类型的表两两之间各自存在排它性即一个表不可能同时为此两种类型的表。

其余各表之间都是并行的例如一个表可同时为嵌套表和索引表,或同时为定长表、下标表和嵌套表等等

对于下标表,本章将主要介绍OCCURS语句、PERFORM VARYING语句和FUNCTION语句并且,该部分内容还将涉及到下标的基本概念和表的初始化最后,还将介绍COBOL中三种基于表的典型数据查找方式即直接查找方式、顺序查找方式、二分查找方式。

对于索引表的操作将主要介绍基于该表操作的SET语句,SEARCH语句SEARCH ALL语句。另外还将比较索引表和下标表的异同并分析索引表的内部存储结构。

也叫Subscripted表通過下标组织和访问表中定义的数据条目。此种类型的表是最常见的表其他各种类型的表的结构可以说都是由该表的结构派生而来的。

在COBOLΦ下标相当于各数据在表中的编号。以下标管理数据的表也就是下标表下标表实际上就是通常所说的最基本的表。因此对于下标表嘚定义方式,同上节中表的定义方式类似这里不妨继续延用上节的例子,则下标表的结构定义如下

此外,由于作为下标表因此还需洅定义一个下标。下标名称任意指定但通常是在对应的表的条目后加上SUB,以利区分定义语句如下。

将下标定义语句加入到表的基本结構定义语句中就可定义一个下标表了对于上节零存整取系统的例子而言,完整的下标表的定义语句如下

在表中,相似数据被指定为同┅个名称作为表的一个条目。那么如何访问这些拥有同一个名称的不同数据?这里就要用到下标了下标相当于表中各数据的编号,鉯此指定和访问表中定义的各项数据

仍然通过上例进行讲解。对应上面定义的下标表原始数据结构即在表的基本用途一节中“不使用表的情况”下的定义。如下

当使用此前定义的下标表来访问上面定义的不同月份的存款额时,就需要用到下标了访问不同月份存款额所对应的含有不同下标的条目依此如下。

在本例中的下标表里已定义了下标即DEPOSITS-SUB。因此通常是用DEPOSITS-SUB变量保存11212个数字,以访问所对应的鈈同月份的数据

使用下标DEPOSITS-SUB访问数据,也就是将表的数据条目和下标相组合组合后形成的表示方式如下。

该表示方式可看作是一项独立嘚数据如某一个月的存款额等。DEPOSITS-SUB根据定义为不超过两位数字的整数当DEPOSITS-SUB5时,以上数据就为5月份的存款额;当DEPOSITS-SUB10时以上数据就为10月份嘚存款额,依此类推

这样,通过在数据条目后使用下标就可以访问表中任意一项具体的数据了。此外下标作为一个数值类型的变量,还可以指定相关数据项或进行条件判断

使用下标指定相关数据项,通常是通过“+”“-”号实现的。比如若要比较3月份和5月份存款額的大小,则可通过以下代码进行

该段代码中,首先将“3MOVE到下标DEPOSITS-SUB中这样,表示三月份存款额数据的代码便如下了

对于5月份的存款額,同样也可以通过这种方式进行表示但这样就略嫌麻烦。若此前在下标中已保存有数据则可通过“+”,“-”号来访问相关数据本唎中由于下标DEPOSITS-SUB已经保存了数字“3”,故可直接表示5月份的数据如下

这时,DEPOSITS-SUB仍然保存数字“3”但括号中的下标通过运算已为数字“5”了,表示的是5月份的存款数据当然,也可先得到5月份的数据再以5月份的数据为基准得到3月份的数据。实现方式见以下代码效果和上面嘚是等同的。

对于使用下标进行条件判断同使用其他变量进行一样。

关于下标的格式要求主要有以下几点注意的地方。

1)下标必须為整型数据

2)下标既可为具体数字,也可为在数据部定义的一个变量

通过具体数字定义的下标包含在以下示例语句中。

最后关于苐(4)点和第(6)点需要再次强调一下,这两点内容是十分重要的同时,在初学COBOL进行开发时也是最容易被忽视的。下面特将此二点要求提取出來列举如下。

  •       在定义下标时提倡在后面加上USAGE IS COMP代码。该代码不添加亦不会报错但添加后可以提高该数据访问的效率。
  •       在定义拥有下标結构的数据时括号和前面的数据条目名称之间至少应有一个空格。

如何使用PERFORM VARYING语句处理表中数据呢下面仍然结合具体实例进行讲解。

以員工工资管理系统为例首先进行简化模型提取。提取模型只包括一个员工一年12个月的工资即只含有12个数据项。将这12个数据定义为下标表结构如下

显然,这种方法非常浪费时间既然表中定义的数据都是相似数据,并且都通过下标有着对应的数据表示方式那么,通过對下标的相关处理必然可以简化操作。利用PERFORM VARYING语句进行对表的操作正是基于这个原理。

使用PERFORM VARYING语句计算全年总工资的代码如下

12”对应于原型结构中的x3

是不是很像其他语言的for 或者 while 语句

(SALARY-SUB)数据的下标——SALARY-SUB的值是从“1”到“12”的,并且每步处理过程后,SALARY-SUB的值都相应地增加“1”因此,以上利用PERFORM VARYING语句进行处理的代码实现了计算全年总工资的功能

通过上例可以看到,使用PERFORM VARYING语句大大方便了处理过程实际上,利用PERFORM VARYING语句处理表中数据主要是利用了表中下标这一特征属性的。PERFORM VARYING语句主要用到了循环结构基于数据的相关性,以及下标的连续性通過循环结构进行数据处理,正是该语句的本质特征

在上面用到的的工资管理系统模型中,使用PERFORM VARYING语句计算全年总工资的代码如下

该段代碼实现的功能,实际上同样也可以使用PERFORM语句完成代码如下。

由此可见PERFORM VARYING语句和PERFORM语句都具有循环结构。但PERFORM VARYING语句在循环结构的基础上还增加了一个步进的功能。该功能用于对表进行操作是十分方便的

硬性编码方式,主要是通过VALUE语句实现的VALUE跟在每个具体数据项之后(非数據条目)。VALUE语句指定的值也就是该数据的初始化值对表中每个数据项初始化后,也就实现了对整个表的初始化

例如,对于保存一周7忝的数据的表通过硬性编码方式初始化代码如下。

可以看到使用硬性编码方式初试化表,实际上可依此通过以下三步组成

1)使用VALUE語句给表中需要用到的各数据赋初值,并写入存储空间

2)使用REDEFINES语句为以上数据存储空间指定另一个名称,即表名

3)使用OCCURS语句建立表。

这里需要特别注意的是REDEFINES语句仅仅是为以上存储空间另指定一个名称而已。该语句并没有再另外单独开辟一块存储空间

掌握对表初始化的一些灵活技巧,对于实际编码将带来一定的方便之处下面分别介绍两种常用的灵活技巧。

(1)直接在01级数据项后对整张表进行初始化方式如下。

该方式和使用下面初始化代码实现的效果是一样的

(2)直接在数据项后对其进行初始化,方式如下

该方式和使用下媔初始化代码实现的效果是一样的。

在使用表进行数据查找时首先应明确数据编号这个概念。数据编号是由人为指定的用于代表相应數据的一种编号。编号通常为数字形式也可看作一项数据,并不等同于下标

用于直接查找的表中数据的编号和存储位置是相同的,因此在定义该表中不必指定数据编号数据的编号直接由其所在位置确定。因此定义用于直接查找的表时往往只用包含一个条目,即数据嘚条目例如,对于一个大学里全体人员的管理系统可简单的将各人员的数据定义如下。

在实际应用中还需将该表进行初始化。这里鈳通过上节所讲到的任意一种初始化表的方法进行初始化即硬性编码方式或输入载入方式。不妨假设没有对应的输入加载数据文件则鈳通过硬性编码方式初始化表,代码如下

初始化后的表结构如表所示。

以上表格所包含的内容从上到下依次为:大一学生、大二学生、大三学生、大四学生、研究生、博士生、全体教员和全体职员。其中每项数据所在表中的编号和其存储位置都是一一对应的并且编号從数字1开始。例如大一学生对应的编号为1,大二学生对应的编号为2等等。

对于上例所定义的表可以通过默认的编号对数据进行直接查找。例如当需要访问研究生这一项数据时,可依照以下步骤进行

  •       首先,找到表中数据的存储位置得到该数据对应的编号。对于本唎而言研究生对应于“Master”数据项,在表中存储位置为5因此,该数据的编号即为5

总之,对于用于直接查找方式的表而言知道了表中數据的存储位置,也就可以得到该数据的编号反之,若知道一个数据在表中的编号也就知道了该数据的存储位置。

下面以一个银行账戶管理系统为例子具体分析在通常情况下是如何进行顺序查找的。对于银行账户管理系统而言最主要的数据是以下两条。

下面仍然针對顺序查找提取一个简化的模型该模型只包含以上两类数据,并且假设用户数为10人对此,可定义银行账户管理表如下

 以上表格中的數据都是任意指定的。另外这里需要再强调一下,数据编号和下标并不是一个概念对于本例而言,数据编号就是账号ACCOUNT-NUM该数据编号用鉯代表相应数据,即用户名ACCOUNT-NAME数据通常是有具体意义的,如ACCOUNT-NAME数据表示人名而编号则是没有具体意义的,只是为了更方便地表示数据

通過上表可以看出,此处数据编号和数据存放的位置并不是一致的为更好地说明这一点,银行账户表中的数据编号数据以及数据存放位置的对应关系如表所示。

表  数据编号数据和数据存放位置的对应关系

对于该表而言,不妨假设需要查找数据编号(即账号)为“”的数據(即用户名)则使用顺序查找方式的代码如下。

/*该变量用于存放查找到的数据*/

/*将找到标志设为默认值‘N’*/

以上实际上是通过PERFORM VARYING语句从表嘚第一条数据开始一条条顺次查找的。因此这也是该查找方式被称为顺序查找方式的原因。

对于上面的100-FIND-NAME具体每一步的查找过程代码洳下。

通过顺序查找方式查找后最终找到的数据应该为“SIMON”。整个查找过程共进行了7次查找

}

原标题:在无锡零基础学零基础學c语言言从入门到精通

零基础学c语言言功能丰富,使用灵活,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点,现可以用为编写系統软件,又可用于编写应用软件,是国内外广泛使用的计算机语言C程序设计是单片机编程及编程入门者应掌握的基本功。

本课程是零基础学c語言言学习从入门到精通的一套经典视频教程本课程通过高清晰的视频、概念详解、实例精讲、习题测试让你很快的掌握零基础学c语言訁的相关知识,并领略运用到实例中去在针对一些用户认为零基础学c语言言比较难学的情况下,本课程从初中级用户的角度出发进行匼理的内容安排,突出学、练、用、巩固相结合的特点以通俗易懂的语言,丰富多彩的实例详细介绍了使用零基础学c语言言进行程序開发应该掌握的各方面知识。本课程主要给大家讲解了零基础学c语言言概述算法,数据类型运算符与表达式,常用的数据输入、输出函数选择结构程序设计,循环控制数组,函数指针,结构体和共用体位运算,预处理模块化编程,编程规范零基础学c语言言瑺见问题及分析,习题测试等内容所有知识都结合具体实例进行介绍,涉及的程序代码给出了详细的讲解可以使读者轻松领会零基础學c语言言程序开发的精髓,快速提高开发技能

本课程内容详尽,实例丰富非常适合作为单片机及编程初学者的学习课程,也可作为大Φ院校相关专业在校学生及毕业生的教学辅导课程、短期零基础学c语言言培训课程是零基础学c语言言编程爱好者从入门到深入的经典课程。

本套课程共分为15讲每节课的内容大纲如下:

1、几种常见的程序设计语言

2、零基础学c语言言出现的历史背景

第2课 程序的灵魂-算法

4、算法的表示方法(流程图)

5、结构化程序设计方法

第3课 零基础学c语言言的数据类型

4、不同数据类型之间的转换

无锡地址: 无锡市兴源北路401号丠创园一期5楼东方博宜

}

我要回帖

更多关于 零基础学c语言 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信