程序设计语言基础

程序设计语言基础
程序设计语言基础

先来认识一下程序,要使计算机能完成人们预定的工作,就必须把要完成工作的具体步骤编写成计算机能执行的一条条指令,计算机执行这些指令序列后,就能完成指定的功能,这样的指令序列就是程序。简单地说,程序是能完成一定功能的指令序列。要想学会编写程序,首先要学习能提供指令的程序设计语言;其次要学习更多和程序设计有关的知识和技巧,就好像认识许多字不一定能写出好文章一样,仅仅学习了程序设计语言还不能编写出好的程序。

程序的功能一般是指其处理数据的能力,所以一个程序包括以下两个方面的内容。

(1)对数据的描述。在程序中要指定处理数据的类型和组织形式,即数据结构(data structure)。

(2)对操作的描述。即操作步骤,也就是算法(algorithm)。数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。

作为程序设计人员,必须认真考虑和设计数据结构与操作步骤(即算法)。因此,著名计算机科学家沃思(Nikiklaus Wirth)提出一个公式:

程序=数据结构+算法

当然这些要素都离不开一个与计算机交互的平台——语言工具和环境。因此,可以这样表示程序:

程序=算法+数据结构+语言工具和环境

算法是程序的灵魂,是解决问题所需要采用的合适方法,决定程序“做什么”和“怎么做”;数据结构是加工对象的组织方式;程序设计语言是程序设计的工具和环境。

大家更熟悉的一个词可能是“软件”,软件是具有一定综合功能的程序、数据及相关文档的集合。只有打好程序设计的基本功,并掌握一定的软件开发技术后,才有可能去开发具有实用性的软件。

1.1 引言

1.1.1 程序设计语言及其分类

1.什么是程序设计语言?其功能又如何

“程序设计语言是一种指挥机器的工具?一种程序员之间交流的方式?一种表述高层

20

设计的媒介?一种算法的记述方式?一种表述观念间关系的途径?一种试验工具?一种控制计算机化的设备的途径?我的观点是,一种通用程序设计语言必须是所有这些东西,这样才能服务于它缤纷繁杂的用户集合。”——这是Stroustrup[1994] 对程序设计语言的论述。

程序设计语言是一种记法,它们被用做计算过程的描述、组织和推导。发明它的目的就是为了使机器更容易使用。程序设计语言是计算机软件中非常独特的一部分,它属于系统软件,但又和应用软件息息相关。它的作用是使人类能够用某些命令、指令去让计算机为人类进行数值、逻辑运算。

2.程序设计语言可以按对硬件依赖的程度分类

人们把程序设计语言按其与计算机硬件依赖的程度分为低级语言和高级语言。低级语言包括机器语言和汇编语言。

机器语言就是一台机器本身的语言,是这台机器可以直接响应的指令的记述形式,是唯一可以被计算机直接执行的语言。面向机器程序语言的指令由许多的0、1组成,一条计算机指令指示计算机一次完成一个最基本的操作。由于这种语言编写的程序冗长、可读性差、移植性差,容易出错,晦涩难懂,是一般人所无法接受的语言。但这样的程序冗余小,执行效率高,节省内存,运行速度快,所以一般用于直接控制计算机的硬件。

为了克服机器语言的缺点,汇编语言应运而生。汇编语言是机器语言的一种变形,它是将机器指令助记成为可读易懂的符号,但仍只能完成机器层次的操作。用汇编语言编写的程序要在计算机上执行,先要将用汇编语言编写的源程序转换成机器语言程序,完成这个转换功能的程序称为“汇编程序”。

低级语言的缺点是:指令功能简单,即使完成一个算术表达式的运算也需编写大段程序,而且需要对硬件进行了解,完成的程序不具有可移植性。低级语言的优点是:执行速度快,可直接控制硬件,适用于实时性要求较高的自动控制系统。

为了克服以上两种语言的缺陷,产生了许多高级语言。高级语言的共同特点是:完全不依赖于硬件,是接近于自然语言(当然是英语)记法的程序设计语言。其基本构成是语句,而语句的功能要比机器语言指令的功能强大得多,另外还提供了丰富的函数库。

3.程序设计语言还可以按其采用的范型分类

(1)面向过程的语言

面向过程的语言虽可独立于计算机编写程序,但用这类语言编写程序时,程序不仅要说明做什么,更重要的是要非常详细地告诉计算机如何做,程序需要详细描述解题的过程和细节。

(2)面向问题的语言

不必关心问题的求解算法和求解的过程,只需指出问题是做什么,数据的输入和输出形式,就能得到所需结果。面向问题语言又称为非过程化语言或陈述性语言,如报表语言、SQL(Structured Query Language)语言等。SQL语言是数据库查询和操纵语言,能直接使用数据库管理系统。使用面向问题语言解题只要告诉计算机做什么,不必告诉计算机如何做。

(3)面向对象的语言

第1章程序设计语言基础

21

为克服面向过程语言过分强调求解过程的细节,程序不易复用的缺点,产生了面向对

象程序设计方法和面向对象语言。面向对象语言引入了对象、消息、类、继承、封装、抽

象和多态性等机制和概念。用面向对象语言进行程序设计时,以问题域中的对象为基础,

将具有类似性质的对象抽象成类,并利用继承机制,仅对差异进行程序设计,可以提高软

件开发效率。

4.其他分类方式

按应用领域分类有人工智能程序设计语言(如lisp)、逻辑推理程序设计语言(如Prolog)

和系统程序设计语言(如C语言)。

命令式程序设计语言,由于其适用性强、应用范围广、语句简捷、灵活而得到广泛的

使用,如Pascal、Basic、Fortran和C等都属于这类语言。程序设计初学者一般首先学习的

就是命令式程序设计语言。

程序设计语言只是程序设计的工具,通过对一种程序设计语言的学习,掌握了程序设

计的思想方法后是可以触类旁通的。

1.1.2 程序的执行

高级程序设计语言接近于自然语言,用其编写的程序对人而言可读性是增强了,但其

实现是靠机器来完成的,因此机器与高级程序之间需要一个“翻译”——就是要把高级语

言转化为机器能读懂的指令。就像现实中的翻译有口译(同声翻译)和笔译两种形式一样,

程序的翻译也有两种方式:解释和编译。解释就像口译一样,解释一句执行一句,不保留

翻译结果;编译和笔译一样,是把一个程序全部翻译并保存翻译结果,以后机器直接运行

的是翻译后的结果。

用高级程序设计语言编写的程序称为源程序;经编译生成后的机器可识别的程序称为

目标程序;最后经过对目标程序进行链接(详见3.2.3节),生成的是可脱离编译环境,在

操作系统下执行的程序称为可执行程序。多数高级程序设计语言采用编译方式,也有的高

级程序设计语言,既可以是解释方式,也可以是编译方式。C语言采用的是编译方式。

目前流行的C语言编译系统有以下几个版本。

?Microsoft C(或称MS C)

?Borland Turbo C(或称Turbo C)

?AT&T C

这些C语言版本不仅实现了ANSI C标准,而且在此基础上各自作了一些扩充。本书

主要针对其标准(共同)的部分,以Turbo C为例进行讲解。附录C、附录D中以Turbo C

为例,介绍了程序设计环境和函数库。

高级语言系统不仅提供编译功能,还有很好的编程环境。在该环境下,可以对程序进

行编辑、编译、链接、调试和运行等工作(详见附录D)。还提供了将编译、链接和运行三

项工作集成完成的命令(或菜单),Turbo C对编辑好的源程序只需单击菜单RUN,就对程

序进行编译、链接和运行的全部工作。这在方便编程人员的同时,容易让人误解,以为编

辑好的程序可以直接运行。程序需要先编译再运行这个基本常识,可以使读者对程序设计

20

语言的某些语法现象有深入的了解,必须引起注意。

1.2 数据及其类型

前面已经讨论过程序的主要功能就是处理数据,那么C 语言能够处理哪些类型的数据?又是如何表示它们的?下面进行介绍。

1.2.1 数据类型

首先介绍C 程序设计语言中,可以存储和处理的数据类型,如图1-1所示。

短整型(short ) 整型(int )

长整型(long )

整型

实型(浮点类型)

单精度(float )

双精度(double )

字符型

枚举类型(enum ) 数组类型

结构体类型(struct ) 共用体类型(union ) 文体类型(file )

基本类型

构造类型

指针类型 空类型(void )

C 语言数据类型

图1-1 数据类型

1.2.2 数据类型的作用

通过数据类型的定义,决定了该类型数据的存储空间的大小和存储方式,进而决定了

该类数据的取值范围和精度。另外,数据类型还决定了数据运算(操作)的规则,这一点在1.2.3节介绍运算符时会予以详细说明。不同类型数据的取值范围如下。

表1-1 整 数 表

数据类型描述符 占用字节数

取 值 范 围

有符号整数

int short int 2 –32 768~+32 767

long long int 4

–2 147 483 648~2 147 483 647

无符号整数

短 unsigned

unsigned int unsigned short 2 0~65 535 长

unsigned long

4

0~4 294 967 295

第1章程序设计语言基础

21

表1-2实数表

【注意事项】

(1)当计算结果超出范围时,其他高级程序设计语言,输出的结果以“*”代表,提

示程序设计人员改写程序中的数据类型。而C语言的输出方式,不容易发现这类错误,因

为它输出的是溢出以后(忽略超过存储空间的进位)的数据结果,例:

执行int a=32767; b=a+1; printf ("%d",b); 的输出为–32 768。

显然输出的结果与真实结果完全背离,因此,读者在编程时一定要认真分析实际问题中数

据可能的范围,并依此来选择数据类型。

(2)对于实型数据除了有数据范围的限制,还有精度的概念。对正常范围的整型数据

计算机是精确存储的,但对实型数据计算机就不能精确存储了。虽然float实型数据范围是

±(3.4e–38~3.4e+38),但计算机认为:

1234567(f)等于1234566(f)、1e–7等于0、0.1234567等于0.1234568…

这就是表1-2中所描述的6位精度。这同样是由于存储空间有限造成的。

(3)数据类型还决定了数据运算,如一般语言都限定只对整数进行求余运算,C语言

对整数的求余运行符为“%”,另外C语言还提供了对实型数据求余的函数fmod(x,y)。

(4)C语言支持不同类型数据的混合运算,运算结果类型由参与运算的数据决定。C

语言规定同类型数据运算结果类型不变,如整数与整数运算的结果一定是整数,所以4/5

的运算结果为0。不同类型数据运算时,运算结果取高一级的数据类型(图1-1中自上而下,类型由低到高)。

算式1/2*2.22的值为0,而非1.11;而1.0/2*2.22的值才为1.11。

1.2.3 数据表示——常量、变量

数据一般以常量(或符号常量)和变量两种基本的形式在程序中出现。

1.常量

常量是在程序运行过程中不可改变的量,其类型根据其书写形式和范围决定。

(1)整型常量(常量后缀:L或l表示长整型数、U或u表示无符号数)

?十进制整数(基本数字0~9):110、456、139L、32769U和233445(为长整型)等。

?八进制整数(基本数字0~7,以0打头):037、010L、–026和0776等。

?十六进制整数(基本数字0~9,而10~15记为A~F,以0X打头):0X331、0X、

0X3AC0和–0XAF等。

(2)实型常量(常量后缀:F或f表示浮点数)

实型也称为浮点型。实型常量也称为实数或者浮点数。在C语言中,实数只采用十进制。它有十进制小数形式和指数形式两种形式。

20

?十进制小数形式:由数码0~9和小数点组成(后缀为“f”或“F”即表示该数为浮点数)。

例如:

0.0、25.0、5.789、0.13、5.0、300、-267.8230、234F、67f等

均为合法的实数。

?指数形式:由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为:

a E n(a为十进制数,n为十进制整数)

其值为a*10n。如:

2.1E5 (等于2.1*105)

3.7E-2 (等于3.7*10-2)

0.5E7 (等于0.5*107) -2.8E-2 (等于-2.8*10-2)

以下是不合法的实数:

345 (无小数点) E7 (阶码标志E之前无数字)

-5 (无阶码标志) 53-E3 (负号位置不对) 2.7E (无阶码)

【注意事项】

(1)数学意义上的常量在程序设计语言中不一定是常量,如1/2、π和e(自然数)等。

特别是23%,在程序设计语言中既不是常量,也不是后面将介绍的表达式。

(2)单精度浮点型,有效位数只有7位。双精度型,有效位为16位。但Turbo C 规定小数后最多保留6位,其余部分四舍五入。

(3)字符常数。

字符常数通常就是将单个字符写在一对单引号内表示,如'a'、'A'、'7'、'0'等。

C语言提供一些特殊意义的转义字符,它们被当做一个单字符,也是字符常数。转义字符包括反斜线、转义字符和一对单引号等,如表1-3所示。

表1-3转义字符表

符号序列名称符号序列名称

\n 回车换行\' 单引号

\t 水平制表\" 双引号

\b 退格\\ 反斜线

\r 回车不换行\ddd 八进制ASCII码值(0~377)

\f 换页\xdd 十六进制ASCII码值(0~F9)

字符类型的数据和数值类型的数据存储方式是不同的。字符类型是以其ASCII码的二进制方式存储的(参见附录5),每个字符占1个字节,字符 'a' 的ASCII码是97,存储它占一个字节。而数值类型是按类型分配存储空间的,整型的97、197和1297等都是占2个字节。

字符类型与数值类型的操作方式也是有区别的。大多数程序设计语言规定,字符类型

第1章程序设计语言基础

21

的数字只是一个符号,不能参与算术运算。但在C语言中允许字符以ASCII码值参与算术

运算,其结果以字符模式或数值模式输出。例如:'A'的ASCII码为65,printf ("%d",'A'+3);

的输出结果为68,printf ("%c",'A'+3);的输出结果为D。

(4)字符串常量

字符串常量是一个字符序列,且被括在双引号中。字符串的语法形式是"characters"。characters可以是0或多个字符集中的字符,包括任意转义字符。

其中若出现双引号、反斜线或回车换行符必须用其转义字符(\",\\,\n)来表示。不可

显示的字符也是用相应的转义字符表示。每个转义字符均被看做一个单字符。

例如:"123"、"C program"和"11.11%" 等都是合法的字符串常量。

字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字符的个

数加1。增加的一个字节中存放字符"\0"(ASCII码为0)。这是字符串结束的标志。

例如:字符常量'a'和字符串常量"a"虽然都只有一个字符,但在内存中的情况是不

同的。

'a'在内存中占一个字节,可表示为:

"a"在内存中占两个字节,可表示为:

(5)符号常量

符号常量就其表面意思就是用符号代表的常量。一般用大写字母做符号常量。C语言

是通过宏来定义符号常量的,如#define PI 3.1415926定义后,程序中所出现的PI,在程

序编译时将被3.1415926替换。详见第3章的3.4.1节。

2.变量

1)变量、变量名

表面上理解“变量”就是可以改变的量。就其实质而言,变量就是数据的存储空间。

变量之所以能改变,就像一个房间可以换不同的人住宿一样,变量存储空间中的内容是可

以更改的。

变量的存储空间是开辟在内存中的,我们无须清楚它具体的物理地址,只要知道变量

的逻辑名称——变量名就可以使用它了。变量名是对数据存储空间的一个抽象名称,它一

方面代表存储空间或其地址(表示方式:&变量名,&为C语言的地址符);另一方面又代

表其中存储的数据(表示方式:变量名本身),因此通过变量名就可以对它空间中的内容进

行改变或引用。

C语言的变量名命名规则是“以字母或下划线开头的,字母、数字或下划线的序列”。

变量名可以是任意长度,但编译器只识别31个或更少(因编译系统不同而不同)。C语言

的关键词是不可以作为变量名的,参见附录A中有关标识符的内容。

【注意事项】

在对变量名命名时应注意:

(1)所有语言都允许26个英文大小写字母出现在变量名中,特别地要注意C语言认

20

为A与a是不同的变量,即C语言的变量名是区分大小写的。

(2)变量名最好与其所存储的数据意义有关联,这样可增加程序的可读性。如“累加”

和用sum或s做变量名、“姓名”用name或xm做变量名、圆周率(3.1415926)用PI做变量名等。

(3)变量名最好不要用到字母l(小写l)、o、z I(大写I)等易与数字混淆的字母。

2)变量定义及赋初值

变量需先定义后使用。所谓变量定义就是说明变量类型,其功能是为说明的每一个变量按类型开辟存储空间(编译系统在对程序进行“编译时”,根据变量定义的类型为其分配逻辑空间,运行时分配物理的内存空间)。从而决定其存储数据的范围,参与运算的种类等。

变量定义的格式如下:

变量类型描述符变量表;

其中变量类型描述是指C语言允许使用的有效类型,而变量表是由一个或多个被定义的变量名组成,若定义多个变量,则变量之间用“,”分隔。

特别的,C语言可以定义常变量,即程序中不可改变其值的变量。其定义的格式如下:

const 变量类型描述符变量表;

向变量空间中存储数据的方法很多,在后面会有介绍,为了更好地理解变量的意义,下面先来认识其中的一种方法。

变量=算术表达式;("="称为赋值号,不是等号)

称为赋值语句,操作过程为先计算表达式的值,然后将数值存储在变量中。

例如:int a; a=8; a=9; a=a+8;,执行这些语句的功能是,先为变量a开辟2个字节的整型数据存储空间,然后存入8,变量值为8;再将9存入变量a,以前存入的8被覆盖,变量值为9。第三个赋值语句,右边是一个表达式,要先计算其值,取变量a的值为9,9+8=17,将17存入变量a,变量的值就变成了17。

在定义变量的同时,还可以对其中全部或部分的变量赋初始值,例如:

int i,j,k=1,s=0,n=k+6,m;

【注意事项】

变量使用时要注意:

(1)变量类型的选择是根据其所存储数据的逻辑意义决定的。如工资一般是实型数据又不会太大,相关变量应该定义为float型;年龄,身高等数据一般为整型且不会很大,相关变量应该定义为int型。当有些整型数据或其运行结果较大时,可以考虑定义为长整型。

当整型意义的数据或结果很大时,如n!、1+2+22+23+…+2n等,在不考虑精度的情况下,应考虑用实型变量存储数据或运算结果。当数据很大而且需要很高的精度时,可参见 5.5节,学习关于高精度数据的处理方法。

(2)变量除了需要先定义后使用外,还必须先赋值后引用。

例如:

第1章程序设计语言基础

21 int i; i=i+1;

经过定义后的变量i,可以存储数据了,但在计算i+1时,要注意:其他程序设计语言

认为这是语法错误,在编译时会指出变量没有赋初始值的错误,只有改正后程序才能通过

编译,然后运行。而C语言则不做错误指示,即可以通过编译,那么它又是怎么运行的呢?

很简单,C语言就是将i空间“原有”的值加1后再赋给i。那么“原有的”值是什么呢?哪儿来的?

有计算机基础的人都知道,当删除一个文件时,这个文件其实并没有真正被删除,只

是在文件目录中对该文件做一个删除“标记”,文件内容仍保留在原来的空间中。若该文件

空间没有被占用,只需去掉删除“标记”就可将文件恢复。程序运行时要进入内存,执行

完就“退出”内存。后一个程序运行时,可能正好被分配到这部分内存空间,这些空间确

实是可用的,但不是真正意义的“空白空间”,和文件空间一样原来程序的内容并没有被清零,所以变量“原有”的值就是在该程序之前占用此空间的软件代码或数据的值,我们无

法知道它具体是什么。

因此一定要注意:“变量必须先定义后使用”。为此程序设计语言还提供了在变量定义

的同时对其赋初始值的功能,如int i=0,a=6;。

(3)初学者在编写程序时,程序中经常出现变量意义混淆,变量使用混乱的情况。建

议初学者在编程时养成以下良好的习惯。

①对有固定意义的信息用固定的变量名,如循环变量一般用i、j、k;问题的规模(问

题中要处理数据的数量),如人员的数量等用变量m或n等。

②在程序首部加注释语句,说明每个变量的意义,这样对程序以后的维护也非常有

好处。

注释语句的格式为/*……*/。注释语句可以出现在程序的任意位置,与程序的运行没

有任何关系。

3)变量的作用

初学者往往不明白什么时候用常量表示数据,什么时候该用变量方式表示数据。举几

个简单的例子来说明。

下面的程序是求半径为1.234 567 cm的圆的周长和面积。printf()的功能是计算并输出

计算结果。

若不用变量程序1如下。

程序1:

main()

{printf ("L=%f ", 2*3.1415926*1.234567);

printf ("s=%f", 3.1415926*1.234567*1.234567);

}

程序1不但书写起来麻烦、易出错,读起来也不好懂。使用变量后,再看程序2。

程序2:

main()

{float pi=3.1415926,r=1.234567;

20

printf ("L=%f", 2*pi*r);

printf ("s=%f", pi*r*r);

}

像数学上的代数一样,引入变量后程序简洁,克服了程序1的缺点。

再来看下一个程序——程序3会有哪些改进呢?

程序3:

main()

{float pi=3.1415926,r=1.234567,temp;

temp=pi*r;

printf ("L=%f", 2*temp);

printf ("s=%f", temp*r);

}

程序中引入临时变量temp,用来记录pi*r的值,这样在以后的程序中就减少了重复的乘法运算。当然由于临时变量的引入同时降低了程序的可读性,鉴于现代计算机运行速度的提高和计算机资源的普及,读者在程序书写时可以在时间效率和可读性之间权衡利弊。

其次若不引入变量,以上程序都只能求半径为1.234 567cm的圆的周长和面积,而不方便对其他半径的圆进行求解。引入变量并通过键盘输入语句,可以使程序得到优化——增强程序的通用性。程序4如下。

程序4:

main()

{float pi=3.1415926,r;

scanf ("%f ", &r);

printf ("L=%f", 2*pi*r);

printf ("s=%f", pi*r*r);

}

这个程序在执行到scanf ("%f ", &r);语句时暂停执行,等待用户从键盘输入圆的半径,用户输入任何半径程序都能计算出相应的周长和面积。

这几个例子并不能概括变量的全部作用,但至少可以理解如下几点。

①引入变量可以减少对常量的录入,不但提高了编写程序的效率,还可能减少录入

错误。因为编译系统不可能发现常量的拼写错误,而若变量拼写错误,系统会因变量没有进行说明而报错的。

②对某些数据不直接使用常量,而引入变量通过键盘输入语句为其赋值,可以使程

序的通用性更强。

③引入临时变量来记录运算的中间结果,可减少运算,从而提高程序运行的时间效率。

1.3 程序结构

1.3.1 程序基本构成

1.函数

C语言源程序由函数构成,函数又由程序设计语言提供的具有一定功能的语句构成。

第1章程序设计语言基础

21

一个源程序中必不可少且只能有一个的是主函数(main函数)。在第3章之前只针对仅包

含主函数的程序进行讨论。为了说明C语言源程序结构的特点,先看一个简单的程序,来

表现C语言源程序基本组成结构。虽然有关内容还未介绍,但可从这些例子中了解到组成

一个C源程序的基本部分和书写格式。

main()

{ printf ("Hello!"); }

以上例子是一个可以编译运行的最简单的C语言程序,仅包括一个主函数,其功能是

把字符串"Hello!"送到显示器去显示。printf函数调用语句的功能就是显示输出。

C语言的函数由如下两部分组成。

?函数首部:由函数名main和一对“()”构成。

?函数体:由一对“{ }”和其中的一条或多条语句构成。

2.书写格式

C语言函数体中的每一个语句都是以“;”为结束符的。它们的书写非常自由,可以在

一行的任意位置开始写程序语句,一个语句可写成多行,一行可以写多个语句。从便于阅读、理解和维护的角度出发,在书写程序时应遵循:每个语句占一行。

3.语句简述

程序(或者说是函数)的基本组成是语句。语句一般有输入、输出、赋值或控制等功能,是程序设计语言提供的最基本的处理数据的功能。我们就是通过对这些语句的组织,

来完成不同数据处理功能的函数。因此语句是程序设计语言的基础。

语句并不是只能按书写顺序执行,在控制语句作用下它们可以有选择地、重复地执行

某些语句。在结构化程序设计规范下,程序只有顺序结构、选择结构和循环结构三种结构。

下面将结合相关语句分类进行讲解。关于C语言语句的详细构成参见附录1。

【问题思考】

C语言中的“函数”与数学中“函数”的异同点是什么?查一下英语单词function的

含义。

1.3.2 顺序结构

顺序结构语句的特点是按照语句的书写顺序执行,主要有赋值语句和输入、输出函数

调用语句。

1.格式输出语句(函数)

一个程序必须至少执行一个输出功能,将程序处理的信息显示在屏幕上;否则人们无

法知道程序的处理结果。多数程序设计语言的输出语句同时具有计算功能。

C语言的输出功能是通过调用一个格式输出printf()函数的语句来完成的,简称函数调

20

用语句。函数printf()的调用形式如下:

printf (格式控制字符串,表达式表);

其中格式控制字符串主要是由文本字符、转义字符和格式说明符组成。格式说明符如表1-4第一列所示。另外,格式控制中还可出现格式字符和格式说明符以外的任何字符,它们将被原样输出。转义字符则按其字符的意义“工作”,如格式控制中常出现的“\n”就是表示将使其后的输出内容换行输出(其他转义字符如表1-3所示)。

表1-4格式字符表

格式字符输出形式举例输出结果

%d 十进制整数int i=21; printf ("2i=%d",i*2); 2i=42

int i=12345678; printf ("i=%d",i); i=24910 %x(或x) 不带符号十六进制整数int i=21; printf ("%x",i); 15

%o 八进制整数int i=21; printf ("%o",i); 25

%c 单一字符char c='B'; printf ("%c",c); B

%s 字符串char a[ ]="CHINA"; printf ("%s",a); CHINA

%f 小数型实型float r=12.21; printf ("%f",r); 12.210000

float r=12.123456789; printf ("%f",r); 12.123457 %e(E) 指数型实型float r=12.21; printf ("%e",r); 1.22100e+01

%g(G) e和f中较短的一种,不

印无效0

float r=12.21; printf ("%g",r); 12.21 %% 输出字符% printf ("%%"); %

表1-5格式说明符表

格式说明符使用的格式作用(类型、格式)

1(固定字符)%1格式字符作用于整型量(d,o,x,u),将其转换为长整型,作用于实型量(f),将其转换为双精度

m(整型常量)%m格式字符作用于d,c,s,f(指定输出字段的宽度),当|m|小于实际宽度,按实际宽度输出;当|m|大于实际宽度,按m宽度输出。m>0右对齐,左补空格;m<0左对齐,右补空格

.n(整型常量) .n格式字符作用于e,f型,指定小数点及其后数据的位数

为了使C语言的编译系统在编译时能找到要调用的输入函数,在使用输出函数和下面介绍的输入函数时,要用到stdio.h文件,源文件开头应有以下预编译文件包含命令(详见第3章的3.2.3节)。

#include< stdio.h > 或 #include "stdio.h"

文件包含命令是在编译之前由编译预处理系统(参见附录2)执行的,编译预处理类命令有以下特殊性。

①命令位置必须在文件的开头。

②命令以“#”开头。

③命令尾不需要语句结束符“;”。

第1章程序设计语言基础

21

事实上,若程序仅用到输入、输出函数,程序开头往往并不写这个命令,程序也能正

常运行,那是因为输入输出函数较为常用,系统允许省略这个命令。

【注意事项】

在对数据进行输出时需注意以下几点。

(1)建议给所有输出数据加标志,以说明其逻辑意义。如:

printf ("sum is %d",s);

(2)变量的输出不是按变量类型,而是按格式类型进行输出的。数据溢出时输出低位

的内容,若对实型数据按整数格式"%d"输出,则仅输出低位2个字节中存储的数据。因此,

程序设计时要注意设计数据类型。

(3)实数的输出,默认的输出格式是小数点后保留6位小数,不够时补0,超过时四

舍五入,实数溢出的处理方式类似整数溢出的处理。

(4)设计良好的输出格式。如保持多项输出格式的一致性,注意适当地换行或不换行,

当有多行输出时应注重不同行各列数据的对齐情况等,利用长度格式说明符,就能保证不

同行各列数据的对齐,当然同时要注意数据的范围,别把宽度定小了,特别是在输出带小

数的实型量时还要注意,一般输出宽度是包括正、负符号、小数位和小数点的,语句printf ("%3.2f",s);是无法输出整数位的。

(5)程序中一般只需输出最终结果,当然要知道输出数据处理的中间结果会在调试程

序时起到重要作用,详细内容见第7章的7.2节。

(6)输出语句还具有计算功能,如printf ("%d,%d",3+4,3*4);的输出结果为7,12。

【问题思考】

(1)填空:int a=3,b=5; printf ("",a,b); 输出结果为a=3,b=5。

(2)填空:int a=3,b=5; printf ( ,a+b,a*b); 输出结果为3+5=8,3*5=15。

(3)char c='a', printf ("",c+1,c+1); 输出结果为b,98。

(4)int a=1234,b=5678;输出结果为1234 4 3 12

5 6 67 5678

2.格式输入语句(函数)

输入功能是程序在运行中与使用者交互的接口,程序执行到此函数会等待从键盘输入

的数据常量,以赋给对应的变量。没有它程序的通用性无法得到保证。

和输出功能一样,C语言的输入功能也是通过调用格式输入函数scanf()完成的。输入

数据必须解决两个问题:以什么格式输入数据,输入的数据送入哪个存储单元(赋给哪个

变量)。所以scanf()函数的调用形式如下:

scanf (格式控制字符串,变量地址表);

其中格式控制字符串主要是由格式字符构成的,格式字符表如表1-6所示,还可以有

其他C语言允许的字符,包括转义字符。C语言提供了地址运算符&来表示变量的地址。

其一般形式为:

&变量名;

20

变量地址之间用“,”分隔。

表1-6格式字符表(↓为回车符□为空格)

格式字符输入形式举例输入举例%d 十进制整数int k1,k2;scanf ("%d%d",&k1,&k2); 21↓22↓

%x(或X) 不带符号十六进制整数int k; scanf ("%x",&k); 15↓

%o 八进制整数int k; scanf ("%o",&k); 25↓

%c 单一字符char c; scanf ("%c",&c); B↓

%s 字符串char a[6 ]; scanf ("%s",a); CHINA↓

%f 小数型实型float r; scanf ("%f",&r); 12.210000↓

%e(E) 指数型实型float r; scanf ("%e",&r); 1.22100e+01↓

表1-7格式说明符表

格式说明符使用的格式作用(类型、格式)

1(固定字符)%1格式字符

作用于整型量(d,o,x,u),将其转换为长整型,作用于实型量(f),将其转换为双精度

m(整型常量)%m格式字符作用于d,c,s,f指定输入字段的宽度

【注意事项】

在使用输入语句过程中应注意以下问题。

(1)明确提示交互式输入的请求,详细说明可用的选择或输入的范围,是用户正确输入的保证。虽然从语法上说格式控制中除格式字符外可以存在任何其他字符,但C语言在执行时,格式控制中的非格式字符并不会输出(这与其他程序设计语言不同)。因为C语言规定:如果在“格式控制”字符串中除了格式说明以外,还有其他字符,在输入数据时,用户应输入与这些字符相同的字符。所以C语言中提示交互的信息要通过输出语句辅助完成。例:

int a,b,c;

printf ("Input three integer data:");

scanf ("%d%d%d",&a,&b,&c);

注意:受别的程序设计语言的影响,有人可能将提示信息也写入输入语句,写成:scanf ("Input three integer data: %d%d%d", &a,&b,&c);

这样做Input three integer data:是不会被显示的,而是要求用户进行输入。

(2)多个数据输入时,要在数据后用一个或多个“空格”(或Tab键)或“回车”做分隔符,若习惯用“,”做分隔符,则要用以下输入格式:

scanf ("%d,%d,%d",&a,&b,&c);

(3)输入语句没有计算功能,即交互时从键盘上只能输入常量,注意不要输入类似1/2、a=9或34*5等表达式。当输入1/2时第一个数值变量得到的是常量1。

(4)要注意C语言在字符输入时,其后是不需要任何分隔符的。计算机操作中都将“回车”作为编辑工作的结束,同样输入的结束也是通过“回车”完成的。但程序设计语言的

第1章程序设计语言基础

21字符输入语句却将“回车”作为一个字符,如下所示:

char a,b;

scanf ("%c",&a);

scanf ("%c",&b);

若输入a

则变量a得到值'a',而变量b得到的值是“回车”。

(5)C语言的输入函数(语句)中格式串后一定是变量地址表,而非变量表,不要忘

了变量前的地址符号&,如scanf ("%c",&a);。若丢失了地址符&,用户的输入将不知去向,

变量保持原有的值(参见本章1.2节变量使用中的注意事项)。因为C语言并不把它作为语

法错误进行报错提示,所以要特别注意。

3.标准库函数

为了减少编程人员的工作量,提高程序设计的效率,满足不同用户对程序设计语言功

能的需求,程序设计语言为用户提供了丰富的标准库函数,如数学类函数、字符串类函数

和图形类函数等。

和输入函数一样,为了使C语言的编译系统在编译时能找到所要调用的函数,在使用

函数时要知道函数所在的头文件(可查阅附录3),并在文件开头用预编译文件包含命令(详见第3章的3.2.3节)链接它。如使用以下介绍的数学函数,就需要在文件开头写如下

指令:

#include "math.h"

然后就可以调用所需要的函数了。

在使用它们时有一些共同需要注意的问题如下。

(1)函数及参数的单位,如三角函数参数或函数值的单位一般为“弧度”。

(2)函数及参数的类型、顺序,如scanf ()函数格式串后的参数是地址(指针)类型。

(3)函数及参数的范围,如log()、log10()函数的参数必须大于0,tan(3.1415926/2)的

值是要“溢出”的。

函数的应用方式也是多样的,如下所示。

(1)可以单独引用,如int t; t=sqrt(50);。

(2)可以出现在表达式中,如int t;t=3*sqrt(50)+90*pow(2,3);。

(3)可以嵌套引用,如char s[50]= "abcd";strlen(strcat(s,"1234"));等。

4.算术表达式

程序设计语言中的表达式种类很多,有算术表达式、关系表达式、逻辑表达式和字符

串表达式等。后三类将在以后的章节中介绍,下面主要介绍算术表达式。算术表达式是最

直接地“指挥”计算机对数据进行运算的形式,算术表达式由运算符(如表1-8所示)、数

据(常量或变量)、函数和括号组成,并有一定的优先级规则。

20

表1-8运算符表

运算符作用运算符作用

–减法,或作为一元运算符时是负号% 求余(模) (只针对整型数据运算)

+ 加法,或作为一元运算符时是正号––自减1 (只针对变量运算)

*乘法++ 自加1 (只针对变量运算)

/ 除法

一个表达式有一个值及其类型,它们等于计算表达式所得结果的值和类型。表达式求值按运算符的优先级和规定的顺序进行,基本算术运算符按先乘除后加减的规则,对特殊运算的优先级和运算顺序参见附录A。

单个的常量、变量和函数可以看做是表达式的特例。

例如方程ax2+bx+c=0的两个解的算术表达式为:

(-b+sqrt(b*b-4*a*c) )/(2*a) 和 (-b+sqrt(b*b-4*a*c) )/(2*a)

【问题思考】

(1)求4位数据a的个位和千位。

(2)今年是兔年,50年后是什么生肖?

【注意事项】

下面的(1)~(3)是对表达式语法规则、表达式的意义的注意事项。(4)~(8)是关于运算效率的注意事项(当表达式需要多次重复计算时,其效率更是要特别注意)。

(1)算术表达式类似数学上的公式,所以总有人把算术表达式误写成对应的数学式子。

如sinx(丢了括号),3x+2y(少了“*”)等。

(2)以上的错误并不可怕,因为程序设计语言的编译系统会在编译时发现它们,直到改正后才能通过编译而运行。可怕的是表达式错误地表示了数据计算的实际意义而造成的逻辑错误。如“a+b/c*d”与“(a+b)/(c*d);”的运算意义是完全不同的。

(3)不能有运算符或数据以外的符号,如π、β、ξ等。又如程序中将e视为变量,而不是数学领域认为的“自然数”,在程序中可以用函数调用exp(1)表示自然数e。

(4)23%在程序设计语言中既不是常量,也不是表达式,在程序中只能用0.23表示或23/100等形式表示(注意23/100的结果是0)。

(5)利用括号可改变运算的优先级,但有时即使无须改变运算的优先级也可利用括号使算术表达式的运算次序清晰直观。如表达式A/B/C,就不如A/(B*C)更容易理解。

(6)C语言支持不同类型数据的混合运算,但计算机在计算时实质要将低精度的类型转换为高精度后才运算。考虑到运行效率,应尽可能地减少这种转换。例如float a,b=3; a=b/2;

就不如float a,b=3.0; a=b/2.0; 效率高。

(7)为了易读、写,会把1 000 000写成106,但有的初学者在程序中将它写成指数函数运算表达式,那么计算机将要做不必要的指数运算。写程序时若怕误写数据中0的个数,可用科学记数法写成1.0e6。

(8)利用中间变量记录需要重复计算的表达式,可以提高运行效率。具体实例见 1.2节变量的作用。

第1章程序设计语言基础

21

(9)书写表达式时要考虑计算结果的精度,特别是在较大的实数之间进行运算时。如

当a、b、c都是较大的实型数时,要计算算术表达式a*b/c的值,若先计算a*b,则有可能

会发生数据溢出或损失掉一些精度,但若将表达式写成a/c *b,则可避免溢出或精度的

损失。

5.赋值操作

(1)赋值语句

当需要计算,并记录计算结果时就要使用赋值语句。赋值语句的功能是先计算,然后

将计算结果赋给(存储到)变量。它的格式是:

变量名=表达式;

赋值号“=”的意义与数学上的等号不同,不能出现方程格式“x+1=9”的语句。

(2)赋值表达式

特别的,C语言认为:“=”为赋值运算符,“变量名=表达式”为赋值表达式。区别于

其他大多数运算符,赋值运算符的结合性是从右到左结合的。因此别的程序设计语言不允

许出现的连续赋值格式,如a=b=4; 在C语言中是允许的,其实现过程如下。

先将4赋给b;并得到赋值表达式b=4的值4;再将赋值表达式b=4的值4赋给a。

(3)复合赋值运算

为提高书写效率,C语言还提供了一些复合算术赋值:+=、– =、*=、/=、%=。意义

如下:

a+=b; 等价于:a=a+(b); a–=b; 等价于a=a–(b); a*=b; 等价于a=a*(b);

a/=b; 等价于:a=a/(b); a%=b; 等价于a=a%(b);

其中a是一个变量,b是一个算术表达式。

例如程序段int a=8; a*=3+3; printf("%d",a); 的运行结果为48。

(4)自加1、自减1运算

k++等价于:先做有关k的操作,再执行k=k+1。

++k等价于:先执行k=k+1,再做有关k的操作。

例如k=2; printf ("%d",k++); 输出2; 而k=2; printf ("%d", ++k); 则输出3。

同样

k--等价于:先做有关k的操作,再执行k=k–1。

--k等价于:先执行k=k-1,再做有关k的操作。

【问题思考】

(1)赋值号“=”与数学上的等号的差别是什么?赋值表达式与数学上方程的差别是

什么?

(2)如何交换两个变量中存储的数据?

(3)如何用相同的操作,求一个4位数a的个位、十位、百位和千位。

【注意事项】

(1)包括C语言的大多数程序设计语言支持不同类型数据的混合运算及赋值,但运算

20

过程中的运算仍旧按参与运算的数据类型进行,赋值时才进行类型转换。

例如运行int a; a=3.0/2;先运算得1.5,然后赋给a的值为1(不进行四舍五入)。

而运行float a; a=3/2;同样是先按参与运算的数据类型做整除得到1,后又赋给a的值为1.0而非1.5。因此要想得到按实型运算的结果,必须将参与运算的数据转换为实型,如运行float a; a=3.0/2;后a的值为1.5。

又若float a; int c=3,d=2; 对a=c/d;要想得到按实型运算的结果,要进行强制类型转换。

强制类型转换格式为:

(类型名)变量名;

其功能是将变量中存储的数据进行类型转换。

则赋值方式为a=(float)c/d; 时,a存储的结果为1.5。注意:c,d的类型并没有被改变,还是整型。

(2)赋值中将低精度的值赋给高精度变量时,一般不会出现问题。但当将高精度的值赋给低精度变量时,就要注意可能会出现溢出的问题。要注意C语言是这样处理溢出的:将高精度数的低位赋给低精度数,如int i=256;char c; c=i;printf ("%d",c);的输出结果为0。

因为是将i的二进制数0000000100000000低8位赋给c值为0,因此应特别引起注意。

(3)赋值语句同样要注意其可读性,如t=a;a=b;b=t;大家一看就知道这组语句完成了变量a,b值的交换;那么a=a+b;b=a–b;a=a–b; 语句的功能又是什么呢?仔细理解它和上一组语句的功能是完全一样的,只是少占用了一个存储空间,通过算术运算完成了数据交换的功能。

(4)注意C语言的自增、减运算符实际是赋值语句的变形,所以只针对整型变量进行运算,即i++、i––、––i、++i都是正确的,但(–i)++是不合法的。

(5)为提高程序书写效率,C语言还提供了许多复合赋值运算符和自加减运算,并给出了赋值表达式的概念,这些将大大降低程序的可读性和二义性,如下面的输出语句:int a=2;printf ("%d,%d",i,i++);

在不同版本的C系统下运行,结果可能不同,有的可能是先从右到左计算所有的表达式的值,然后从左到右输出,结果为“3,2”;有的版本则按相反的顺序计算表达式的值,结果为“2,2”。这样同样的程序在不同的C语言编译版本下输出结果不同,因此除在简单的表达式中,不建议初学者使用复合赋值运算符和自加减运算。

6.逗号运算符

C语言通过逗号运算符可以实现几个表达式同时运算或赋值,格式如下:

表达式1, 表达式2, 表达式3…;

变量1=表达式1, 变量2=表达式2, 变量3=表达式3,…;

逗号表达式的值为最后一个表达式的值。

例如:int i=0,j=19; i++,j––; 逗号表达式的值是19

int i=0,j=19,k; k=(i++, ––j); k得到的是18

第1章程序设计语言基础

21

int a=4,b=6,t; t=a,a=b,b=t; 逗号表达式的值是4

【注意事项】

在输出格式中不同输出项之间本来就是用逗号作分隔符的,所以,逗号表达式在输出

函数中出现要加括号才能正常使用。如:

printf ("%d",3+5,3*5);输出的是8,输出函数不把输出内容作为逗号表达式,由于第二

个表达式没有对应的输出格式不能被输出。

printf ("%d",(3+5,3*5)); 格式下输出函数把输出内容作为逗号表达式,输出其值

为15。

7.return语句

程序运行到主函数main()的右边“}”就自动结束。但若在某种情况下,需要提前结束时,就要用到return语句,其功能是结束函数运行,格式一般为:

return;

此语句一般与选择结构一起使用。

1.3.3 条件的表示

由以上三类语句只能构成顺序结构,也就是只能按程序书写的顺序进行运行。和现实

生活中的工作安排一样,程序也时常需要根据不同条件做不同的事情,或在某种条件(情况)下(当满足条件时)重复地进行某些工作。程序设计语言是通过逻辑表达式来区分不

同的条件(情况),条件表达式只有两种可能的结果值“真”或“假”。结果为“真”称为“满足条件”;结果为“假”称为“不满足条件”。

C语言没有专门的逻辑常量,非0数值均表示“真”,0表示“假”。

条件表达式为“真”时,其值为数值1;条件表达式为“假”时,其值为数值0。

C语言条件表达式有以下几种形式。

1.算术表达式

最简单的条件表达式就是一个算术表达式。它只能表示两种情况:算术表达式的值为

非0时,则条件表达式为“真”,即“满足条件”;算术表达式的值为0时,则条件表达式

为“假”,即“不满足条件”。

例:算术表达式A–10,当A=10时,值为0;否则,值为1。

2.关系表达式

条件表达式多数情况下是一个关系表达式。它表示两个数据间的关系(大于、小于、

等于和不等于等):关系成立时,条件表达式值为1,即“满足条件”;关系不成立时,条

件表达式值为0,即“不满足条件”。

在C语言中有以下关系运算符。

?<:小于

20

?<=:小于或等于

?>:大于

?>=:大于或等于

?= =:等于

?!=:不等于

例:关系表达式A>9,当A=10时,值为1;而A=6时,值为0。

关系运算符都是双目运算符,其结合性均为从左到右结合。关系运算符的优先级低于算术运算符,高于赋值运算符。在6个关系运算符中,<、<=、>、>=的优先级相同,高于==和!=,==和!=的优先级相同。

【问题思考】

a是偶数的条件表达式;a是奇数的条件表达式。

3.逻辑表达式

较复杂的条件表达式是用逻辑运算符连接的关系表达式或算术表达式的逻辑表达式。

它可以表示多个数据信息间的关系。不同程序设计语言的逻辑运算符记号各不相同,如其他程序设计语言多用and表示两个条件间的与关系,or表示两个条件间的或关系,not表示对某个条件的非运算。而C语言的逻辑运算符分别如下。

?!:非运算

?&&:与运算

?||:或运算

逻辑运算符优先级的关系可如下:!(非)→&&(与)→||(或)。

逻辑运算符的运算情况如表1-9所示。

表1-9逻辑运算符表

p q p&&q p||q ! p ! q

0 0 0 0 1 1

0 1 0 1 1 0

1 0 0 1 0 1

1 1 1 1 0 0

例:a*2–6 || b>7 当a=3,b≤7时值为0,否则值为1。

a*2–6 && b>7 当a≠3,b>7时值为1,否则值为0。

!(a>b)&& (c

【问题思考】

(1)x∈[a,b]的条件表达式,x?[a,b]的条件表达式。

(2)a,b,c是三角形三条边的条件表达式。

(3)a,b是一奇一偶的条件表达式。

(4)a是a,b,c中第二大数的条件表达式。

(5)表达式x与①x= =0、②x!=0、③x= =1、④x!=1哪个等价?

【注意事项】

04747java语言程序设计(一)20120年01月试卷

全国2012年1月高等教育自学考试 Java语言程序设计(一)试题 课程代码:04747 一、单项选择题(本大题共10小题,每小题1分,共l0分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.下面供选字符序列中,不属于 ...Java语言关键字的是( ) A.inner B.throw C.false D.throws 2.表达式“-1>>>1”的十进制值是( ) A.-2 B.231-1 C.-(231-1) D.232-1 3.Java语言中,在类定义时用final关键字修饰,是指这个类( ) A.子类必须实现父类未实现的方法 B.没有具体实现代码 C.必须要有实例 D.不能被继承 4.表达式"java程序设计".1ength()的值是( ) A. 0 B.12 C. 8 D.13 5.以下关于BorderLayout布局的叙述中,不正确 ...的是( ) A.把容器内的空间划分成5个区域 B.加入组件应该指明要放入的区域 C.是框架窗口的默认布局 D.一个位置可直接放多个组件 6.利用文件对话框打开或保存文件,在打开文件对话框之前,可用FileFilter类设置筛选条件,其所用的两个方法是( ) A.accept()和getSelectedFile() B.accept()和getDescription() C.accept()和setDescription() D.setDescription()和getDescription() 7.设已经有Graphics2D对象g2d,RoundRectangle2D对象rRect,绘制对象rRect的代码是( ) A.g2d.draw(rRect) B.g2d.drawRoundRect(rRect) C.rRect.draw() D.rRect.drawRoundRect() 8.以下关于线程互斥和同步的叙述中,正确的是( ) A.临界段是线程互斥使用资源的程序段 B.临界段能使线程使用其它线程的资源 浙04747# Java语言程序设计(一)试卷第1页(共12页)

java程序设计基础(含参考答案)

“Java程序设计基础”课程习题 一、填空 1.Java程序分两类___Applet___和application,Java Application 类型的程序,程序从 ___main方法___开始执行。 2.定义一个Java类时,通过关键字__extends____指明该类的父类。一个类可以有___1___ 个父类。 3.用public修饰的类称为_公有类或公用类__。用public修饰的类成员称为公有成员。被 说明为public的内容可以被__所有其他类___ 使用。如果public类文件与使用它的类文件不在同一目录中,需要通过__import____语句引入。 4.用___private___ 修饰的类成员称为私有成员。私有成员只能在__本类__ 中使用。 5.如果子类定义的成员变量与父类的成员变量同名,称为___方法覆盖___ ,要表明使用 子类的成员变量,可以在成员变量前加上关键字__super___ 。 6.____Object__ 类是Java类库中所有类的父类。 7.Java字符使用__16位的字符集,该字符集成为__Unicode____ 。 8.当子类中定义的方法与父类方法同名时,称子类方法___覆盖___ 父类方法,子类默认 使用自己的方法。使用父类的同名方法,必须用关键字__super__ 说明。 9.Java源程序文件名的后缀是___.java___,Java字节码文件名的后缀是_.class_____。 10.Java类名的第一个字母通常要求___大写___。 11.Java程序由____类__组成,每个程序有一个主类,Java程序文件名应与____主__类的 名称相同。 12.Java__Application_类型的程序需要main()方法,程序从__main____开始执行。 13.布尔型数据类型的关键字是_boolean__ ,占用位数是___1位___ ,有__true__ 和_false_ 两种值。整型数可以采用_十_ 、__八_ 和__十六_三种进制表示。 14.八进制整数以数字__0_开头。十六进制整数以_0x或0X_ 开头。 15.int整型数占用__32位内存。long整型数占用__64 位内存。 16.127L表示__长整型____ 常量。 17.根据占用内存长度将浮点常量分为_double_____ 和__float____ 两种。 18.单精度浮点常量占用__32_ 位内存,双精度浮点常量占用__64 位内存。 19.在Java语言中,字符串“ABC\tD\b\n”中包括__7个字符。 20.数学关系44&&x<9____ 。数学关系x>3且x<=10对应 的Java表达式是_x>3&&x<=10。数学关系x>3或x<-10对应的Java表达式是_x>3||x<-10_。 21.逻辑表达式true&&false&&true的结果是_false_ 。 22.__new__ 运算符的作用是根据对象的类型分配内存空间。当对象拥有内存空间时,会 自动调用类中的构造方法为对象_初始化_。 23.省略访问修饰符的类只能被同_一包_中的类使用,称之具有包访问特性。 24.用public修饰的类称为_公共类_。用public修饰的类成员称为公共成员。被说明为public 的内容可以被_所有类_ 使用。如果public类文件与使用它的类文件不在同一目录中,需要通过_import_语句引入。 25.用_private_ 修饰的类成员称为私有成员。私有成员只能在_本类使用。 26.在类中可以定义多个具有相同名称、但参数不同的方法,这种做法称为__方法重载_ 。 27.如果子类定义的成员变量与父类的成员变量同名,要表明使用子类的成员变量,可以在 成员变量前加上关键字__this__。

Java语言程序设计课后习题答案

Java语言程序设计(郑莉) 第二章习题答案 1.什么是对象、类,它们之间的联系 答:1)对象是包含现实世界物体特征的抽象实体,它反映系统为之保存信息和与它交互的能力。对象是一些属性及服务的封装体,在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”来表示。现实生活中对象是指客观世界的实体;在程序中对象是指一组变量和相关方法的集合。 2)类是既有相同操作功能和相同的数据格式的对象的集合与抽象!3)两者的关系:对象是类的具体实例.。 2.什么是面向对象的程序设计方法它有那些基本特征 答:面向对象程序设计从所处理的数据入手,以数据为中心而不是以服务为中心来描述系统。它把编程问题视为一个数据集合,数据相对于功能而言,具有更强的稳定性。 它的特征:抽象,封装,继承,多态。 3(无用) 4.请解释类属性、实例属性及其区别。 答:实例属性,由一个个的实例用来存储所有实例都需要的属性信息,不同实例的属性值可能会不同。 5.请解释类方法、实例属性及其区别。 答:实例方法表示特定对象的行为,在声明时前面不加static修饰符,在使用时需要发送给一个类实例。 类方法也称为静态方法,在方法声明时前面需加static修饰符,类方法表示具体实例中类对象的共有行为。 区别:实例方法可以直接访问实例变量,调用实例方法,实例方法可以直接访问类变量,调用类方法;类方法可以直接调用类变量和类方法,类方法不能直接调用实例变量和实例方法; 6.类的访问控制符有哪几种具体含义及其区别。 答:类的访问控制符只有public(公共类)及无修饰符(默认类)两种。 区别:当使用public修饰符时表示所有其他的类都可以使用此类;当没有修饰符时,则只有与此类处于同一包中的其他类可以使用类。 7类成员的访问控制符有哪几种他们对类成员分别有哪些访问限制的作用 答:类成员的访问控制符有 public,private,protecte及无修饰符. public(公有的):用public修饰的成分表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限). Private(保护的):类中限定为private的成员只能被这个类本身 访问,在类外不可见。 proteced(保护的)用该关键字修饰的成分是受保护的,只可以被同一类及其子类的实例对象访问。 无修饰符(默认的):public,private,protected这个三个限定符不是必须写的。如果不写,则表明是“friendly”,相应的成分可以被所在保重的各类访问。 8简述构造方法的特点答:构造方法主要有以下特点: (1)构造方法的方法名与类名相同; (2)构造方法没有返回类型(修饰符void也不能有);(3)构造方法通常被声明为公有的(public); (4)构造方法可以有任意多个参数; (5)构造方法的主要作用是完成对象的初始化工作; (6)构造方法不能在程序中显式的调用; (7)在生成一个对象时,系统会自动调用该类的构造方法为新生成的对象初始化。 9如果在类声明中声明了构造方法,系统是否还提供默认的构造方法 答: 用户在进行类声明时,如果没有声明任何构造方法,系统会赋给此类一个默认(无参)的构造方法。但是,只要用户声明了构造方法,即使没有声明无参的构造方法,系统也不会再赋默认的构造方法。 10:声明Patient类表示在门诊室中的病人。此类对象应包括name(astring)\sex(achar)、age(an integer)、weight(a float0、allergies(a boolean). 声明存取及修改方法。在一个单独的累中,声明测试方法,并生成两个patient的例子: Atient april=new Patient(); (“zhangli”) (‘f’);; (330; ; (true); 那么:”+()); ”+()); ”+()); (“weught: ”+());\ ”+()); 声明并测试toString()方法显示一个病人的aga、sex、name及allergies属性。 答: public class Patient { private String name; private char sex; private int age; private float weight; private boolean allergies; public void setname(String a) { name=a; } public void setsex(char b) { sex=b; }

Java语言程序设计基础篇前三章课后习题要点

第1章计算机、程序和Java概述 1.1(显示三条消息)编写程序,显示Welcome to Java、Welcome to Computer Science和Programming is fun。 程序: 显示: 1.2(显示五条消息)编写程序,显示Welcome to Java五次 程序: 显示: 1.3(显示图案)编写一个程序,显示下面的图案:

程序: 显示: 1.4(打印表格)编写程序,显示以下表格: 程序: 显示:

1.5(计算表达式)编写程序,显示(9.5x4.5- 2.5x3)/(45.5- 3.5)的结果 程序: 显示: 1.6(数列求和)编写程序,显示1+2+3+4+5+6+7+8+9的结果 程序: 显示: 1.7(近似求π)可以使用以下公式计算π: Π=4x(1-1/3+1/5-1/7+1/9-1/11+1/13+...) 编写程序,显示4x(1-1/3+1/5-1/7+1/9-1/11+1/13...)的结果。在程序中用1.0代替1 程序: 显示:

第2章基本程序设计 2.1(将摄氏温度转换为华氏温度)编写程序,从控制台读入double型的摄氏温度,然后将其转换华氏温度,并显示结果。转换公式如下所示: Fahrenheit-=(9/5)*celsius+32 (华氏度=(9/5)*摄氏度+32) 程序: 显示: 2.2(计算圆柱体的体积)编写程序,读入圆柱体的半径和高,并使用下列公式计算圆柱体的体积 面积=半径x半径xπ 体积=面积x高 程序: 显示:

2.3(将英尺转换为米)编写程序,读入英尺数,将其转换为米数并显示结果。一英尺等于0.305米。 程序: 显示: 2.4(将磅转换为千克)编写程序,将磅数转换为千克数。程序提示用户输入磅数,然后转换成千克并显示结果。1磅等于0.454千克。 程序: 显示: 2.5(财务应用程序:计算小费)编写一个程序,读入一笔费用与酬金率,就算酬金和总钱数。例如,如果用户读入10作为费用,15%作为酬金率,计算结果显示酬金为$1.5,总费用为$11.5. 程序:

汇编语言程序设计课后习题解答宋人杰2版

第1章汇编语言基础知识 1.简述汇编语言源程序、汇编程序、和目标程序的关系。 答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。 2. 简述汇编语言的优缺点。 答:(1) 汇编语言的优点: ①可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O端口等。. ②目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 ③可与高级语言配合使用,应用十分广泛。 (2) 汇编语言的缺点: ①通用性和可移植性较差 ②相对于高级语言来说较繁锁、易出错、不够直观。 3.CPU的寻址能力为8KB,那么它的地址总线的宽度为多少? 答:13 4. 1KB的存储器有多少个存储单元? 答:1024个字节。 5. 指令中的逻辑地址由哪两部分组成? 答:指令中的逻辑地址由段基址和偏移量组成。 6. 以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。 (1) 12F8:0100 (2) 1A2F:0103 (3) 1A3F:0003 (4) 1A3F:A1FF 答: (1) 13080H (2) 1A3F3H (3) 1A3F3H (4) 245EFH 7. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形式表示): 03 06 11 A3 13 01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据 的值。 答:字节型数据:11H 字型数据:0A311H 双字型数据:0113A311H 8. 内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为 多少?若段内偏移地址为2228H,则段基地址为多少? 答:若段基地址为1916H,则段内偏移地址为01B8H;若段内偏移地址为2228H,则段基地址为170FH 9. 在实模式环境中,一个段最长不能超过多少字节? 答:64KB 10. 实模式可寻址的内存范围是多少? 答:1MB

程序设计基础(知识点)

第三部分程序设计基础 3.1 程序、程序设计、程序设计语言的定义 ⑴程序:计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。 ⑵程序设计:程序设计是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。程序设计过程应当包括分析、设计、编码、测试、排错等不同阶段。 ⑶程序设计语言:程序设计语言用于书写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言有3个方面的因素,即语法、语义和语用。 3.2 高级语言和低级语言的概念及区别 ⑴高级语言:高级语言(High-level programming language)是高度封装了的编程语言,与低级语言相对。

它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),从而使程序编写员编写更容易,亦有较高的可读性,以方便对电脑认知较浅的人亦可以大概明白其内容。 ⑵低级语言:低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。 ⑶区别: 高级语言:实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好低级语言:实现效率低,执行效率高,对硬件的可控性强,目标代码小,可维护性差,可移植性差 了解知识:CPU运行的是二进制指令,所有的语言编写的程序最终都要翻译成二进制代码。越低级的语言,形式上越接近机器指令,汇编语言就是与机器指令一一对应的。而越高级的语言,一条语句对应的指令数越多,其中原因就是高级语言对底层操作进行了抽象和封装,

《Java语言程序设计基础教程》习题解答

《Java语言程序设计基础教程》练习思考题参考答案

第1章Java程序设计概述 1.9 练习思考题 1、Java运行平台包括三个版本,请选择正确的三项:() A. J2EE B. J2ME C. J2SE D. J2E 解答:A,B,C 2、Java JDK中反编译工具是:() A. javac B. java C. jdb D. javap 解答:D 3、public static void main方法的参数描述是:() A. String args[] B. String[] args C. Strings args[] D. String args 解答:A,B 4、在Java中,关于CLASSPATH环境变量的说法不正确的是:() A. CLASSPATH一旦设置之后不可修改,但可以将目录添加到该环境变量中。 B. 编译器用它来搜索各自的类文件。 C. CLASSPATH是一个目录列表。 D. 解释器用它来搜索各自的类文件。 解答:A 5、编译Java Application源文件将产生相应的字节码文件,扩展名为() A. .java B. .class C. .html D. .exe 解答:B 6、开发与运行Java程序需要经过的三个主要步骤为____________、____________和____________。 7、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是______类的子类并且存储该源程序文件的文件名为______。 8、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器编译该源程序文件将产生______个文件名与类名相同而扩展名为______的字节码文件。 9、开发与运行Java程序需要经过哪些主要步骤和过程? 10、Java程序是由什么组成的?一个程序中必须要有public类吗?Java源文件的命名规则是怎么样的? 11、编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。

(完整版)《C语言程序设计》基本知识点

《C语言程序设计》教学基本知识点 第一章C语言基本知识 1.C源程序的框架 尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 2.C语言源程序的书写规则: (1)C源程序是由一个主函数和若干个其它函数组成的。 (2)函数名后必须有小括号,函数体放在大括号内。 (3)C程序必须用小写字母书写。 (4)每句的末尾加分号。 (5)可以一行多句。 (6)可以一句多行。 (7)可以在程序的任何位置加注释。 3.语句种类 语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。 (1)流程控制语句 流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。 (2)表达式语句 表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。 (3)函数调用语句 函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。 (4)空语句 空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。 (5)复合语句 复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。 4.运算符 用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。 根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。 根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。 5.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

8086汇编语言程序设计

实验1 简单汇编语言程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握简单汇编语言程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG 工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG 工具调试程序,验证程序的正确性。 1. 若X、Y、R、W 是存放8 位带符号数字节单元的地址,Z 是16 位字单元的 地址。试编写汇编程序,完成Z←((W-X) ÷5-Y)?(R+ 2) 。 2.试编写一个程序,测试某数是否是奇数。如该数是奇数,则把DL 的第0 位置1,否则将该位置0。 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验2 分支及循环程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握分支程序和循环程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编写汇编程序,统计某存储区若干个数据中英文字母的个数,并将结果在屏幕上显示。 2.从键盘任意输入一组字符数据,请编写汇编程序将该组数据加密后在屏幕上显示。参考加密方法是:每个数乘以2。(说明:本题的加密方法,同学们可以自己拟定) 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验3 子程序程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握子程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编程以十进制形式和十六进制形式显示AX的内容,并把两个显示功能分别封装成子程序dispDEC和dispHEX。 2.设在以EXAMSCORE为首地址的数据缓冲区依次存放某班10名同学5门功课的成绩,现要统计各位同学的总分,并将总分放在该学生单科成绩后的单元,并调用第1个程序封装好的子程序,以十进制方式显示统计情况,显示格式自行设计。请编程完成此功能。数据缓冲区参考数据定义如下: EXAMSCORE DB 01 ;学号 DB 89,76,54,77,99 ;单科成绩 DW ? ;该学生的总分 DB 02 ;学号 DB 79,88,64,97,92 ;单科成绩 DW ? ;该学生的总分 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

程序设计基础试题(附答案)

程序设计基础复习题 一、单选 1、一个完整的计算机系统应该包括() A、系统软件和应用软件 B、计算机及其外部设备 C、硬件系统和软件系统 D、系统硬件和系统软件 2、“裸机”的概念是指() A、正在进行设计还没有组装好的计算机 B、已经组装好但还没有安装任何软件的计算机 C、仅安装了操作系统的计算机系统 D、安装了文字处理软件但没有安装专用数据处理系统的计算机 3、世界上第一台电子数字计算机研制成功的时间是() A、1936年 B、1946年 C、1956年 D、1970年 4、CASE的含义是() A、计算机辅助设计 B、计算机辅助制造 C、计算机辅助教学 D、计算机辅助软件工程5、当前广泛使用的微型计算机是() A、第一代 B、第二代 C、第三代 D、第四代 6、当代计算机的体系结构称为是() A、冯·诺依曼机 B、非冯·诺依曼机 C、图灵机 D、比尔盖茨机 7、硬盘是() A、输入设备 B、输出设备 C、存储设备 D、计算设备 8、下面4句话中,最准确的表述是() A、程序=算法+数据结构 B、程序是使用编程语言实现算法 C、程序的开发方法决定算法设计 D、算法是程序设计中最关键的因素

9、计算机能直接执行的语言是() A、机器语言 B、汇编语言 C、高级语言 D、目标语言 10、解释程序的功能是() A、将高级语言程序转换为目标程序 B、将汇编语言程序转换为目标程序 C、解释执行高级语言程序 D、解释执行汇编语言程序 11、下面4种程序设计语言中,不是面向对象式语言的是() A、JAVA B、Object Pascal C、Delphi D、C 12、不是C语言的基本数据类型是() A、int B、double C、char D、bool 13、在C语言中,为了求两个整数相除之后得到的余数,可以使用运算符() A、/ B、% C、* D、++ 14、数据的逻辑结构分为() A、纯属结构和非线性结构 B、顺序结构和非顺序结构 C、树型结构和图型结构 D、链式结构和顺序结构 15、用链表表示纯属表的优点是() A、便于随机存取 B、便于插入和删除操作 C、花费的存储空间较顺序存储少 D、元素的物理顺序与逻辑顺序相同 16、栈的最主要特点是() A、先进先出 B、先进后出 C、两端进出 D、一端进一端出 17、下面4句结论只有一句是错误的,它是()

新版汇编语言程序设计钱晓捷第1章习题答案

第1章汇编语言基础知识(全) 2010-10-18 19:32:40| 分类:答案集锦| 标签:|字号大中小订阅 第1章汇编语言基础知识 〔习题1.1〕简述计算机系统的硬件组成及各部分作用。 〔解答〕 CPU:包括运算器、控制器和寄存器组。运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为 处理单元提供所需要的数据。 存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。 外部设备:实现人机交换和机间的通信。 〔习题1.2〕明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 〔解答〕 主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速 度慢。 RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电 后能保存信息。 存储器由大量存储单元组成。为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常 称做I/O端口。 KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。 〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序? 〔解答〕 用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编 译通过的程序就是目标程序。

java语言程序设计课后习题答案

习题2 3.使用“= =”对相同内容的字符串进行比较,看会产生什么样的结果。 答:首先创建一个字符串变量有两种方式:String str = new String("abc"); String str = "abc"; 使用“= =”会因为创建的形式不同而产生不同的结果: String str1 = "abc"; String str2 = "abc"; =str2); ; public class Exercise51{ public static void main(String[] args) throws IOException{ "请输入一个整数:"); InputStreamReader isStream=new InputStreamReader; BufferedReader bfReader=new BufferedReader(isStream); String input=(); int length=()-1; int n=new Integer(input).intValue(); while(length>=0){ int divisor=(int) (10,length); length=length-1; int output=n/divisor; n=n%divisor; ","); } } } 法二:(建议使用) public class Exercise5{ public static void main(String[] args){ int n=1678; int unit; int decimal; int hundred; int thousand; thousand=n/1000%10; hundred=n/100%10; decimal=n/10%10; unit=n%10; "1678包含的数字分别是: "+thousand+','+hundred+','+decimal+', '+unit); } } ;

C语言程序设计基础测试题-答案

C语言程序设计基础测试题 一、单选 [1] 下面叙述中错误的是____。 A. 复合语句中定义的函数只在该复合语句中有效 B. return( )语句中的括号中,可以是变量,常量或有确定值的表达式 C. 形式参数也是局部变量 D. 主函数中定义的变量在整个程序中都是有效的 [2] 下列说法中正确的是____。 A.带参数的宏定义中的参数是没有类型的 B.宏展开将占用程序的运行时间 C.宏定义命令是C语言中的一种特殊语句 D.使用#include命令包含的头文件必须以“.h"为后缀 [3] 若函数的形参为一维数组,则下列说法中正确的是____。 A.调用函数时的对应实参必为数组名 B.形参数组可以不指定大小 C.形参数组的元素个数必须等于实参数组的元素个数 D.形参数组的元素个数必须多于实参数组的元素个数 [4] 系统的标准输出设备是____。 A.键盘 B.硬盘 C.内存 D.显示器 [5] 下面叙述中正确的是____。 A.全局变量在定义它的文件中的任何地方都是有效的 B.全局变量在程序的全部执行过程中一直占用内存单元 C. C语言的switch语句中case后可为常量或表达式或有确定值的变量及表达式 D. 说明函数时必须明确其参数类型和返回类型 [6] C程序的基本结构单位是____。 A.文件 B.语句 C.函数 D.表达式 [7] 对于定义,char *aa[2]={"abcd","ABCD"},选项中说法正确的是____。 A.aa数组元素的值分别是"abcd"和"ABCD" B.aa是指针变量,它指向含有两个数组元素的字符型一维数组 C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D.aa数组的两个元素中各自存放了字符'a'和'A'的地址 [8] 任何一个C语言的可执行程序都是从____开始执行的。 A.程序中的第一个函数 B.main( )函数的入口处

java语言程序设计基础篇8.9答案

在一个正n边形中,所以边的长度都相同,且所有角的度数都相同(即这个多边形是等边等角的)。 设计一个名为RegularPolygon的类,该类包括: 一个名为int型的私有数据域定义多边形的边数,默认值3。一个名为side的double型私有数据域存储边的长度,默认值1。 一个名为x的double型私有数据域,它定义多边形中点的x坐标,默认值0。一个名为y 的double型私有数据域,它定义多边形中点的y坐标,默认值0。一个创建带默认值的正多边形的无参构造方法。 一个能创建带指定边数和边长度、中心在(0,0)的正多边形的构造方法。一个能创建带指定边数和边长度、中心在(x,y)的正多边形的构造方法。所有数据域的访问器和修改器。一个返回多边形周长的方法getPerimeter()。 一个返回多边形面积的方法getArea().计算多边形面积的公式是:面积=(n*s*s)/(4*tan(p/n)) 画出该类的UML图。实现这个类。编写一个测试程序,分别使用无参构造方法、RegularPolygon(6,4)和RegularPolygon(10,4,5.6,7.8)创建三个RegularPolygon对象。显示每个对象的周长和面积。 代码: class Regularpolygon{ private int n=3;//边长 private double side=1;//边长 private double x=0; private double y=0;//x,y为多边形中点的x,y坐标 Regularpolygon(){ } Regularpolygon(int newN,int newS){ n=newN; side=newS; x=0; y=0; } Regularpolygon(int newN,int newS,double newX,double newY){ n=newN; side=newS; x=newX; y=newY; } public void setN(int newN){ n=newN; } public void setSide(double newS){ side=newS; }

C语言程序设计基础知识 习题一及参考答案

第一章:程序设计基础知识 一、单项选择题 1、以下( )是面向过程的程序设计语言。 A)机器语言B)汇编语言C)高级语言D)第四代语言 2、程序设计一般包含以下四个步骤,其中其中首先应该完成的是( )。 A)设计数据结构和算法B)建立数学模型 C)编写程序D)调试和运行程序 3、以下常用算法中适合计算等差级数的算法是( )。 A)枚举法B)递推法C)分治法D)排序法 4、以下不属于算法基本特征的是( )。 A)有穷性B)有效性C)可靠性D)有一个或多各输出 5、以下描述中不正确的是( )。 A)程序就是软件,但软件不紧紧是程序。 B)程序是指令的集合,计算机语言是编写程序的工具。 C)计算机语言都是形式化的语言,它有一个语法规则和定义。 D)计算机语言只能编写程序而不能表示算法。 6、下面描述中,正确的是( ) A)结构化程序设计方法是面向过程程序设计的主流。 B)算法就是计算方法。 C)一个正确的程序就是指程序书写正确。 D)计算机语言就是编写程序的工具而不是表示算法的工具。 7、下面描述中,不正确的是( )。 A)递归法的关键是必须有一个递归终止的条件。

B)递归算法要求语言具有反复自我调用子程序的能力。 C)对于同一个问题,递推算法比递归算法的执行时间要长。 D)递推算法总可以转换为一个递归算法。 8、N-S图与传统流程图比较,主要优点是( )。 A)杜绝了程序的无条件转移。 B)具有顺序、选择和循环三种基本结构。 C)简单、只管。 D)有利于编写程序。 A)B)C)D) 二、填空题 1、在流程图符号中,判断框中应该填写的的是________。(判断条件) 2、结构化程序设计是__________应遵循的方法和原则。(面向过程编程) 3、结构化程序必须用__________程序设计语言来编写。(具有结构化控制语句) 4、可以被连续执行的一条条指令的集合称为计算机的________。(程序) 5、只描述程序应该“做什么”,而不必描述“怎样做”的语言被称为________。(面向对象) 6、任何简单或复杂的算法都是由_____和_____这两个要素组成。(数据结构算法) 7、算法的_______特征是指:一个算法必须在执行有限个操作步骤后终止。(有穷性) 8、在三种基本结构中,先执行后判断的结构被称为_________。(直到型循环结构) 9、在程序设计中,把解决问题确定的方法和有限的步骤称为______。(算法) 10、程序设计风格主要影响程序的________。(可读性) 11、用模块组装起来的程序被成为________结构化程序。(模块化) 12、采用自上而下,逐步求精的设计方法便于____________。(结构化和模块化) 三、应用题

第四章MCS-51汇编语言程序设计

第四章MCS-51汇编语言程序设计 重点及难点: 单片机汇编语言程序设计的基本概念、伪指令、单片机汇编语言程序的三种基本结构形式、常用汇编语言程序设计。 教学基本要求: 1、掌握汇编语言程序设计的基本概念; 2、掌握伪指令的格式、功能和使用方法; 3、掌握顺序结构、分支结构和循环结构程序设计的步骤和方法; 4、掌握常用汇编语言程序设计步骤和方法。 教学内容 §4.1汇编语言程序设计概述 一、汇编语言的特点 (1)助记符指令和机器指令一一对应,所以用汇编语言编写的程序效率高,占用存储空间小,运行速度快,因此汇编语言能编写出最优化的程序。 (2)使用汇编语言编程比使用高级语言困难,因为汇编语言是面向计算机的,汇编语言的程序设计人员必须对计算机硬件有相当深入的了解。 (3)汇编语言能直接访问存储器及接口电路,也能处理中断,因此汇编语言程序能够直接管理和控制硬件设备。 (4)汇编语言缺乏通用性,程序不易移植,各种计算机都有自己的汇编语言,不同计算机的汇编语言之间不能通用;但是掌握了一种计算机系统的汇编语言后,学习其他的汇编语言就不太困难了。 二、汇编语言的语句格式 [<标号>]:<操作码> [<操作数>];[<注释>] 三、汇编语言程序设计的步骤与特点 (1)建立数学模型 (2)确定算法 (3)制定程序流程图 (4)确定数据结构 (5)写出源程序 (6)上机调试程序 §4.2伪指令 伪指令是程序员发给汇编程序的命令,也称为汇编命令或汇编程序控制指令。 MCS- 51常见汇编语言程序中常用的伪指令:

第四章MCS-51汇编语言程序设计91 1.ORG (ORiGin)汇编起始地址命令 [<标号:>] ORG <地址> 2.END (END of assembly)汇编终止命令 [<标号:>] END [<表达式>] 3.EQU (EQUate)赋值命令 <字符名称> EQU <赋值项> 4.DB (Define Byte)定义字节命令 [<标号:>] DB <8位数表> 5.DW (Define Word)定义数据字命令 [<标号:>] DW <16位数表> 6.DS (Define Stonage )定义存储区命令 [<标号:>] DW <16位数表> 7.BIT位定义命令 <字符名称> BIT <位地址> 8.DA TA数据地址赋值命令 <字符名称> DATA <表达式> §4.3单片机汇编语言程序的基本结构形式 一、顺序程序 [例4-1]三字节无符号数相加,其中被加数在内部RAM的50H、51H和52H单元中;加数在内部RAM的53H、5414和55H单元中;要求把相加之和存放在50H、51H和52H单元中,进位存放在位寻址区的00H位中。 MOV R0 ,# 52H ;被加数的低字节地址 MOV R1 ,# 55H ;加数的低字节地址 MOV A ,@ R0 ADD A ,@ R1 ;低字节相加 MOV @ R0 , A ;存低字节相加结果 DEC R0 DEC R1 MOV A ,@ R0 ADDC A ,@ R1 ;中间字节带进位相加 MOV @ R0 , A ;存中间字节相加结果 DEC R0 DEC R1 MOV A ,@ R0 ADDC A ,@ R1 ;高字节带进位相加 MOV @ R0 , A ;存高字节相加结果 CLR A

《Java语言程序设计基础教程》

第1章 Java程序设计概述 1.9 练习思考题 1、Java运行平台包括三个版本,请选择正确的三项:() A. J2EE B. J2ME C. J2SE D. J2E 解答:A,B,C 2、Java JDK中反编译工具是:() A. javac B. java C. jdb D. javap 解答:D 3、public static void main方法的参数描述是:() A. String args[] B. String[] args C. Strings args[] D. String args 解答:A,B 4、在Java中,关于CLASSPATH环境变量的说法不正确的是:() A. CLASSPATH一旦设置之后不可修改,但可以将目录添加到该环境变量中。 B. 编译器用它来搜索各自的类文件。 C. CLASSPATH是一个目录列表。 D. 解释器用它来搜索各自的类文件。 解答:A 5、编译Java Application源文件将产生相应的字节码文件,扩展名为() A. .java B. .class C. .html D. .exe 解答:B 6、开发与运行Java程序需要经过的三个主要步骤为___编辑源程序____、______编译生成字节码______和_____解释运行字节码____。 7、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是_Applet_类的子类并且存储该源程序文件的文件名为_MyApplet.java_。 8、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器编译该源程序文件将产生_3_个文件名与类名相同而扩展名为_.class_的字节码文件。 9、开发与运行Java程序需要经过哪些主要步骤和过程? 答:1编写Java源文件:使用文本编辑器(edit或记事本),拓展名为.java

相关文档
最新文档