第 1 章 C 语言的发展 特点与程序结构 本章主要介绍了 C 语言的发展 特点和程序结构, 重点阐述了程序设计的基本方法, 包括面向过程的程序设计和面向对象的程序设计 ; 算法的概念及其表示, 包括用自然语言 流程图 伪代码 N-S 流程图的表示方法 ; 最后介绍了 C 语言应用程序的开发过程 1

Size: px
Start display at page:

Download "第 1 章 C 语言的发展 特点与程序结构 本章主要介绍了 C 语言的发展 特点和程序结构, 重点阐述了程序设计的基本方法, 包括面向过程的程序设计和面向对象的程序设计 ; 算法的概念及其表示, 包括用自然语言 流程图 伪代码 N-S 流程图的表示方法 ; 最后介绍了 C 语言应用程序的开发过程 1"

Transcription

1 C 语言程序设计 电子教程 主编 : 杨健霑副主编 : 汪同庆 1

2 第 1 章 C 语言的发展 特点与程序结构 本章主要介绍了 C 语言的发展 特点和程序结构, 重点阐述了程序设计的基本方法, 包括面向过程的程序设计和面向对象的程序设计 ; 算法的概念及其表示, 包括用自然语言 流程图 伪代码 N-S 流程图的表示方法 ; 最后介绍了 C 语言应用程序的开发过程 1.1 C 语言的发展与特点 C 语言的发展 C 语言是一种广泛流行且深受用户青睐的高级程序设计语言 它适用于开发系统软件 ( 如操作系统 编译程序 汇编程序 数据库管理系统等 ), 也适用于开发应用软件 ( 如数值计算 文字处理 控制系统 游戏程序等 ), 目前已经成为计算机程序设计语言的主流语种 C 语言是在 B 语言基础上发展起来的, 与 PASCAL 语言一并同属于 ALGOL (Algorithmic language) 语言族系 1960 年 ALGOL60 问世, 这是一种适用于科学与工程计算的高级语言 这种语言不能操作硬件, 不适合编写计算机系统程序 ; 而汇编语言能充分体现计算机硬件指令级特性, 形成的代码也有较高的质量, 但它的可读性 可移植性以及描述问题的性能都远不及高级语言 能否开创一种既有汇编语言特性, 又有高级语言功能的计算机语言呢?C 语言就是在此背景下诞生的 1963 年英国剑桥大学推出了 CPL(Combined Programming Language) 语言, 这种语言虽然可以操作硬件, 但系统规模较大, 难以实现 1967 年英国剑桥大学的 M.Richards 对 CPL 语言进行了优化, 推出了 BCPL(Basic Combined Programming Language) 语言 BCPL 语言只是 CPL 语言的改良版, 使用起来仍有很大的局限性 1970 年美国 Bell 实验室的 K.Thompson 在 BCPL 语言基础上, 对 BCPL 语言进行了进一步的简化, 设计出了很接近硬件的 B 语言, 并用 B 语言编写了第一个 UNIX 操作系统 B 语言 的意思是将 CPL 语言煮干, 提炼出它的精华 1973 年,B 语言也给人 煮 了一下, 美国 Bell 实验室的 D.M.Ritchie 在 B 语言的基础上最终设计出了一种新的语言, 他使用了 BCPL 的第二个字母作为这种语言的名字, 这就是 C 语言 C 语言最初用于 PDP-11 计算机上的 UNIX 操作系统 1973 年 D.M.Ritchie 和 K.Thompson 合作将 UNIX 操作系统用 C 语言改写了一遍 ( 即 UNIX 第 5 版 ), 把 UNIX 推进到一个新阶段 以后的 UNIX 第 6 版 第 7 版, 以及 SystemⅢ 和 SystemⅤ 都是在 UNIX 第 5 版的基础上发展起来的 随着 UNIX 操作系统的日益广泛使用,C 语 2

3 言也得到了迅速的发展 1977 年, 出现了不依赖于具体机器的 C 语言编译文本 继而也出现了各种不同版本的 C 语言 1983 年, 美国国家标准化协会 (ANSI American National Standards Institute) 对已出现的各种 C 版本进行了扩充, 制定了一套 C 语言的标准, 称为 ANSI C 1987 年 ANSI 又推出了新的 C 语言标准, 即 87 ANSI C 目前流行的各种 C 语言编译系统都是以 87 ANSI C 设计的, 如 Microsoft C,Turbo C,Borland C,Quick C 和 AT&T C 等 本书采用 Borland C++3.1 的 DOS 版 ( 简称 BC31) 作为 C 语言程序设计的编译环境 BC31 是 Borland 公司继 Turbo C 2.0 后的更新产品, 它吸取了以往产品中几乎所有的优点, 而且能支持鼠标和多窗口操作 C 语言的特点 C 语言之所以广泛流行且深受用户青睐, 是因为它以其简洁 灵活 表达能力强 产生的目标代码质量高和可移植性好等为基本特色, 归纳起来有以下主要特点 : 1.C 语言是结构化程序设计语言 C 语言提供了结构化程序所必需的基本控制语句, 如条件判断语句和循环语句等, 实现了对逻辑流的有效控制 C 语言的源程序由函数组成, 每个函数各自独立, 把函数作为模块化设计的基本单位 C 语言的源文件可以分割成多个源程序, 进行单独编译后可连接生成可执行文件, 为开发大型软件提供了极大的方便 C 语言提供了多种存储属性, 通过对数据的存储域控制提高了程序的可靠性 2. 具有丰富的数据类型 C 语言除提供整型 实型 字符型等基本数据类型外, 还提供了用基本数据类型构造出的各种复杂的数据结构, 如数组 结构 联合等 C 语言还提供了与地址密切相关的指针类型 此外, 用户还可以根据需要自定义数据类型 3. 具有丰富的运算符 C 语言提供了多达 44 种运算符, 运算能力十分丰富, 它把括号 逗号 赋值等都作为运算符来处理 丰富的数据类型与丰富的运算符相结合, 使 C 语言的表达力更具灵活性, 同时也提高了执行效率 4.C 语言结构紧凑, 使用方便 灵活 C 语言只有 32 个保留字 ( 关键字 ),9 种控制语句, 大量的标准库函数可供直接调用 ;C 语言程序书写形式自由, 有些表达式可以用简洁式书写, 源程序简练, 大大提高了程序设计的效率和质量 5.C 语言具有低级语言的功能 C 语言既具有高级语言面向用户 可读性强 容易编程和维护等特点, 又具有汇编语言面向硬件和系统, 提供了对位 字节和地址等直接访问硬件的操作 所以也可以说,C 语言是高级语言中的低级语言 6.C 程序移植性好 3

4 C 语言具有执行效率高 程序可移植等特点 C 语言程序本身独立于机器硬件, 可以在多种环境下运行, 从而形成了多种版本的 C 语言 由于 C 语言具有以上诸多特点, 因此从 C 语言产生到现在一直长盛不衰, 迅速得到广泛的应用和普及 特别是在微型计算机系统的软件开发和各种软件工具的研制中, 使用 C 语言的趋势日益俱增, 呈现可能取代汇编语言的发展趋势 1.2 程序设计的基本方法 计算机程序为了利用计算机来处理问题, 必须编写使计算机能按人的意愿工作的程序 所谓程序, 就是计算机解决问题所需的一系列代码化指令 符号化指令或符号化语句 著名的计算机科学家沃思 (Wirth) 提出了一个著名的公式来表达程序的实质 : 程序 = 数据结构 + 算法即 程序就是在数据的某些特定的表示方式和结构的基础上, 对抽象算法的具体描述 当然, 在实际编写计算机程序时, 要遵循程序设计方法, 在运行程序时要有软件环境的支持 因此, 可以将上述公式扩充为 : 程序 = 数据结构 + 算法 + 程序设计方法 + 语言工具即一个应用程序体现了四个方面的成分 : 采用的描述和存储数据的数据结构, 采用的解决问题的算法, 采用的程序设计的方法和采用的语言工具和编程环境 在学习利用计算机语言编写程序时要掌握三个基本概念 一是语言的语法规则, 包括常量 变量 运算符 表达式 函数和语句的使用规则 ; 二是语义规则, 包括单词和符号的含义及其使用规则 ; 三是语用规则, 即善于利用语法规则和语义规则正确组织程序的技能, 使程序结构精练 执行效率高 此外, 要弄清 语言 和 程序 的关系 语言是构成程序的指令集合及其规则, 程序是用语言为实现某一算法组成的指令序列 学计算机语言是为了掌握编程工具, 它本身不是目的 当然, 脱离具体的语言去学习编程是十分困难的, 因此两者有密切的联系 面向过程的程序设计所谓面向过程的程序设计, 是指利用面向过程的语言工具 ( 如 Basic Pascal Fortran 和 C 语言等 ) 进行程序开发中的各项活动 1969 年, 荷兰学者 E.W.Dijkstra 对面向过程的程序设计语言提出了结构化的程序设计思想, 规定一个结构化程序由顺序结构 选择 ( 分支 ) 结构和循环控制结构三种基本结构组成 同时规定了三种基本结构之间可以并列和互相包含, 不允许交叉和从一个结构直接转到另一个结构的内部 这就是面向过程的程序, 也称结构化程序 4

5 使用面向过程的程序设计语言编写结构化程序, 其基本方法是 : 把一个需要求解的复杂问题分为若干个子问题来处理, 每个子问题控制在一个可调试或可操作的范围 ( 或模块 ) 内, 设计时遵循自顶向下 逐步细化 模块化设计和结构化编码的原则 自顶向下 就是将整个待解决的问题按步骤 有次序地进行分层, 明确先做什么, 再做什么, 各层包含什么内容 逐步细化 就是对分层后的每一层功能进行详细设计, 并仔细检验其算法的正确性 只有当本层功能及其算法正确无误之后, 才能向下一层细化 如果每一层的设计都没有问题, 则整个程序功能及其算法就是正确的 模块化设计 就是将处理问题的整个程序分为多个模块, 其中一个主模块和若干个子模块, 由主模块控制各个处理子问题的子模块, 最终实现整个程序的功能 模块化设计的思想是一种 分而治之 的思想, 即把一个复杂的问题分为若干个子问题来处理就简单多了, 也便于程序的检验和调试 所谓模块是指一个能完成某项特定功能 既可以组合又可以分解的程序单元 结构化编码 是指在进行结构化程序设计之后, 用结构化语言编写程序的过程 利用结构化语言编写程序是非常方便的 结构化程序的主要优点是编程简单 结构性强 可读性好, 执行时 ( 除遇到特殊流程控制语句外 ) 总是按事先设计的控制流程自顶而下顺序执行, 时序特征明显 遵循这种结构的程序只有一个入口和一个出口 但结构化程序也存在缺点, 如数据与程序模块的分离和程序的可重用性差等 面向对象的程序设计相对结构化程序设计而言, 面向对象的程序设计是一个全新的概念 在面向对象的程序设计中, 引入了类 对象 属性 事件和方法等一系列概念以及前所未有的编程思想 这里仅对面向对象的程序设计中的几个基本概念作简要说明, 不作详细讨论 在面向对象的程序设计中, 最重要的思想是将数据 ( 或称数据成员 ) 与处理这些数据的例程 ( 或称成员函数 ) 全部封装到一个类中 只有属于该对象的成员函数才能访问自己的数据成员, 从而达到了保护数据的目的 每一种面向对象的程序设计语言都提供了三类机制, 即封装 继承和多态 封装 就是把数据和操作这些数据的代码封装在对象类里, 对外界是完全不透明的, 对象类完全拥有自己的属性 程序设计者不需要了解对象类中的技术代码, 也无法对它们加以控制和干预, 而只需要重复调用其对象 继承 是允许在已有对象类的基础上构造新的对象类, 即由一个类获取另一个对象类的过程 多态 是指发出同样的消息被不同的对象类接收时会产生不同的行为 这里所说的消息是指对类的成员函数的调用, 而不同的行为是指不同的实现 利用多态 5

6 性用户只需发送一般形式的消息, 而将所有的实现留给接受信息的对象, 然后对象根据所接收的消息做出相应的动作或操作 面向对象程序的主要结构是 : 程序一般由类的定义和类的使用两部分组成 在主程序中定义各对象并规定它们之间传递消息的规律 程序中的一切操作都是通过向对象发送消息来实现的, 对象接收到消息后启动有关方法完成相应的操作 面向对象程序设计的最大优点就是程序代码的可重用性 这使得当需要对软件系统的要求有所改变时, 并不需要程序设计者做大量的工作, 而就能使系统做相应的改变 目前, 有很多面向对象程序的开发工具, 常用的有 Visual Basic Visual C++ C++ Builder Delphi Java 等 用户可以根据实际问题的应用选用相应的开发工具 1.3 算法及其表示 算法的概念所谓算法就是解决某一问题所采取的方法和步骤 人们在社会实践中从事的各项活动都涉及算法, 如学习 购物 处理家务 体育锻炼等活动, 都必须按既定的方法和步骤进行 不过, 我们在这里所关心的只限于计算机算法, 即计算机能够实现的算法 计算机算法具有以下特性 : ⑴ 有穷性一个算法应包含有限个操作步骤, 而且每一步都在合理的时间内完成 也就是说, 在执行若干个操作步骤之后, 算法就将结束, 而不能是无限的 ⑵ 确定性算法中的每一个步骤都应当是确定的, 而不是含糊的, 模棱两可的 也就是说, 在程序中的每一条指令都必须有确定的含义, 不能有二义性 ⑶ 有效性算法中的每一个步骤都应当能有效地执行, 并能得出确定的结果 例如, 如果 A=0, 则运算式 B/A 是无法有效执行的 ⑷ 有零个或多个输入所谓输入是指在执行指定的算法时, 需要从外界获取的信息 对于要处理的数据, 大多通过输入得到, 输入的方式可以通过键盘或文件等 一个算法也可以没有输入, 例如, 使用计算式 , 就能求出 5! ⑸ 有一个或多个输出执行算法的目的就是为了求解, 解 就是输出, 一个没有输出的算法是毫无意义的 因此, 当执行完算法之后, 一定要有输出的结果 输出的方式可以通过显示器 打印机 文件等 6

7 1.3.2 算法的表示算法的表示方法有很多种, 常用的有自然语言 伪代码 流程图 结构化流程图 PAD 图等 为便于说明和比较起见, 下面介绍如何用自然语言, 伪代码和流程图表示算法的方法 1. 用自然语言表示算法用自然语言表示算法, 就是用人们日常使用的语言来描述或表示算法的方法 例如, 从键盘输入 n 个整数, 求其中的最大数 的算法, 可以用自然语言表示如下 : 步骤 1: 声明整型变量 n i num max 其中:n 代表整数的个数,i 代表已参与取值比较的整数个数,num 代表参与取值比较的整数,max 代表 n 个整数中的最大数 步骤 2: 从键盘输入一个整数给变量 num, 再将 num 的值赋给变量 max, 并使 i=1; 步骤 3: 如果 i<n, 再从键盘输入一个整数给变量 num; 步骤 4: 如果 num>max, 将 num 的值赋给 max, 即 max=num, 否则 max 的值为原值 使 i 的值加 1, 即 i=i+1; 步骤 5: 如果 i 仍小于 n, 重复执行步骤 3 和步骤 4; 否则输出 max 的值, 即输出 n 个整数中的最大数 算法结束 用自然语言表示算法方便 通俗, 但文字冗长, 容易出现 歧义性, 不方便表示分支结构和循环结构的算法 因此, 除特别简单的问题外, 一般不用自然语言表示算法 2. 用伪代码表示算法伪代码是一种接近于程序设计语言, 但又不受程序设计语言语法约束的算法表示方法 例如, 以上 从键盘输入 n 个整数, 求其中的最大数 的算法, 可以用伪代码表示为 : input n input num max=num i=1 while i<n do input num if num>max then max=num end if i=i+1 end do 7

8 print max 可以看出, 用伪代码表示算法, 是自上而下用一行或几行代码形式表示一个基本操作, 步骤清楚, 功能明了, 便于分析和修改, 是程序员在设计算法过程中常用的一种算法表示方法 3. 用流程图表示算法用流程图表示算法, 就是用一些图框和方向线来表示算法的图形表示法 美国国家标准化协会 ANSI(American National Standard Institute) 规定了一些常用的流程图符号, 如图 1-1 所示 起止框输入输出框判断框处理框 过程框连接框流程线注释框 图 1-1 例如, 以上 从键盘输入 n 个整数, 求其中的最大数 的算法, 可以用流程图表示为如图 1-2 所示 8

9 开始 1 输入 n 的值, 计数器 i=1 num>max 假 输入数给 num,max=num max=num 真 2 假 i<n 2 3 i=i+1 3 真 输入数给 num 输出 max 1 结束 图 1-2 用流程图表示算法, 直观形象 易于理解, 较清楚地显示出各个框之间的逻辑 关系和执行流程 目前大多数计算机教科书 中都广泛使用这种流程图表示算法 当然, 这种表示法也存在着占用篇幅大 画图费时 不易修改等缺点 1973 年美国学者 I.Nassi 和 Shneiderman 提出了一种新的流程图形式 在这种流程图中去掉了流程线, 全部算法都写在一个包含 输入 n 的值,i=1 输入 num 的值,max=num 当 i<n 输入 num num>max 基本结构框形的矩形框内 这种流程图又称为 N-S 结构化流程图 N-S 结构化流程图最大的特点就是结构性强 精练 例如, 以上 从键盘输入 n 个整数, 求其中的最大数 的算法, 用 N-S 结构化流程图表示为如图 1-3 所示 真 max=num i=i+1 输出 max 的值 假 图 1-3 9

10 1.4 C 语言程序的基本结构 简单的 C 语言程序介绍这里我们给出两个简单的 C 语言例程, 通过分析它们的组成部分和执行过程, 来说明 C 语言程序的基本结构 例 1.1 求 的累加和 编程如下 : #include<stdio.h> void main() /* 定义主函数 */ int i,sum=0; for(i=1;i<=100;i++) sum=sum+i; printf("sum=%d\n",sum); 运行该程序后, 输出如下结果 : sum=5050 说明 : 在 C 语言中, 函数是程序的基本组成单位 以上 C 语言程序仅由一个主函数, 即 main 函数构成 其中 main 是主函数的函数名, 函数体由大括弧 括起来 在函数体内的第 1 行是变量说明语句, 说明变量 i 和变量 sum 为整型 (int) 变量, 同时为变量 sum 赋初值 0; 第 2 3 行是一个循环语句, 计算 的累加和, 将其值赋给变量 sum; 第 4 行是一个函数调用语句, 调用系统函数库中的标准输出函数 printf, 即在系统隐含指定的输出设备 ( 显示器或打印机 ) 上输出变量 sum 的值 程序运行结束 另外, 程序的第 1 行 #include<stdio.h> 是一条编译预处理命令, 用 #include 将头文件 stdio.h 包含在源程序中 ( 在使用标准输入输出库函数时, 应在程序前加上该预编译命令 ); 程序第 2 行中的 void 表示主函数 main() 是一个无返回值的函数 ; 程序中用 /* 和 */ 括起来的部分为注释内容, 主要为阅读程序方便, 在程序编译和运行时不起作用 注释可以加在程序的任何位置 例 1.2 输入三个整数, 输出其中的最大数 编程如下 : #include <stdio.h> int max(int a,int b,int c) /* 定义 max 函数 */ int big; 10

11 big=a; if(b>big)big=b; if(c>big)big=c; return big; void main() /* 定义 main 函数 */ int x,y,z,s; printf("input three numbers:\n"); scanf("%d,%d,%d",&x,&y,&z); s=max(x,y,z); printf("maxmum=%d\n",s); 运行该程序后, 输出结果如下 : input three numbers: 23,45,13 maxnum=45 说明 : 以上 C 语言程序包括两个函数 : 一个主函数 (main 函数 ) 和一个被调用的子函数 (max 函数 ) 主函数的函数体内的第 1 行是变量说明语句, 说明变量 x,y,z,s 为整型 (int) 变量 ; 第 2 行是在输出设备上输出字符串 input three numbers:, 以提示用户从键盘上输入三个整数 ; 第 3 行是一个函数调用语句, 调用系统函数库中的标准输入函数 scanf, 该函数的功能是在系统隐含指定的输入设备 ( 通常是键盘 ) 上输入变量的值 在此, 输入三个整数分别赋给变量 x 变量 y 和变量 z; 第 4 行是一个赋值语句, 执行该语句时要调用 max 函数, 待其值求出后赋给变量 s 因此, 此时程序转入执行 max 函数 (max 函数是用户自定义函数 ) max 函数的作用是求变量 a b c 中的最大值 在 max 函数体中, 将其求得的最大值赋给变量 big, 由 return 语句确定变量 big 的值为函数返回值 然后通过函数名 max 将函数返回值带回到 main 函数的调用处, 同时程序执行的流程回到了 main 函数 将 max 函数值赋给变量 s;main 函数的第 5 行调用系统标准输出函数 printf, 在系统隐含的输出设备上输出变量 s 的值 程序运行结束 C 语言程序的执行都是从主函数的起始处开始 至主函数的末尾处结束 C 语言程序基本结构从上面的例子可以看出 : 1. 一个 C 语言程序由若干个函数组成, 这些函数可以是系统函数 ( 如 printf 函 11

12 数 ) 也可以是用户自定义函数 ( 如 max 函数 ) 2. 一个 C 语言程序不论由多少个函数组成, 都有且仅有一个 main 函数 ( 主函数 ), 它是程序执行的入口, 可以置于程序的任何位置 3. 程序中可以有预处理命令 ( 如 :include 命令 ) 预处理命令通常放在程序的最前面 4. 每一个语句必须以分号结尾, 分号是语句的终止符 但预处理命令 函数头和花括号 之后不能加分号 5. 程序中一行可以写一个语句, 也可以写多个语句 当一个语句一行写不下时, 可以分成多行写 标识符和保留字之间至少加一个空格符以示间隔 6. 为了增强程序的可读性, 可以在程序的适当位置 ( 一般在语句后面 ) 增加注释 注释以 /* 开头, 以 */ 结束, 定界在其中的部分为注释的内容 7. 程序区分大小写字母 习惯上, 变量 语句等用小写字母书写, 符号常量 宏名等用大写字母书写 8. 为便于程序的阅读, 编写程序时最好采用 缩进 方式 属于较内层的语句从行首缩进若干列, 并与属于同一结构的语句对齐 9. 程序中各函数的位置可以置换 当一个 C 程序由多个函数组成时, 这些函数既可以放在一个文件中, 也可以放在多个文件中 10. 函数是 C 语言程序的基本单位, 在程序中出现的操作对象 ( 如变量 数组 函数等 ) 都必须在使用前进行说明或定义 C 程序的函数由两部分组成 : 函数说明部分和函数体 一般结构为 : 函数类型函数名 ( 参数表 ) /* 函数说明 */ 说明部分 ; 执行部分 ; /* 函数体 */ 一个 C 语言程序根据实现的功能不同 算法不同其构成的规模有所不同 对于大的应用, 需用多个文件 多个函数组成 ; 对于复杂的应用, 需要采用复杂的数据类型 但同一功能 同一算法的程序其构成与规模可不尽相同, 但都必须符合 C 语言程序结构的组成规则 12

13 1.5 应用程序的开发过程 一个应用程序的开发过程, 随问题的复杂程度而有所不同 对于一个大型复杂的问题, 应当采用软件工程的方法, 即运用工程学和规范化设计方法进行软件的开发工作 对于一个简单的问题, 如果是一般的数值计算问题, 往往有现成的算法可供参考 ; 如果是一个非数值计算问题, 一般没有现成的算法可供利用, 需要根据具体的问题由程序员自己设计出算法 一个简单的问题, 只要确定了算法, 即可进行程序开发了 然而无论是一个大型复杂的问题或是一个简单的问题, 在程序开发过程中通常要经过以下几个过程 : 1. 需求分析开发任何一个应用程序首先都要作需求分析, 即先要对解决的问题进行 剖析 需求分析阶段主要分析两方面问题 : 一是明确要解决的问题是什么, 解决问题的目的和要达到的目标是什么, 解决的主要问题中还涉及哪些子问题, 以及主要问题和子问题之间的关系 二是要弄清楚解决的问题中用到哪些原始数据 中间数据, 以及数据的来源和特征 因为数据的来源 可靠性和特征会直接影响到最终解决问题的结果 其次还要考虑各种客观环境对解决问题的影响 2. 确定算法即根据需求分析阶段明确的问题和所要达到的目标, 确定解决问题的方法和步骤 这一阶段的关键是在对解决的问题进行系统分析的基础上, 建立数学模型和确定相应的求解方法 程序的功能关键是算法 在编制程序时, 算法是对计算机解题过程的抽象, 是程序的灵魂 顺便指出 : 在学习程序设计语言时, 要注意积累和留心一些基本的算法表达形式, 如迭代和数值计算等 ; 非数值计算问题的算法比较复杂, 要花些精力加以归纳和总结 3. 程序设计程序设计包括程序的总体设计和程序的详细设计两个方面 程序总体设计的主要任务是将所解决的问题进行分割 离散和细化, 确定应用程序的结构, 建立相对独立的程序模块 程序详细设计是根据总体设计划分的模块, 分别设计出每个模块相应的数据类型和算法, 画出流程图或用伪代码等表示 4. 编写程序代码根据算法表示的每一个步骤, 用计算机高级语言 ( 如 C 语言 ) 编写源程序 这一步的关键在于要能熟练运用计算机高级语言中的典型算法, 按照题意和编程语言的语法 语义 语句和程序组成规则, 尽快整理出编程思路, 尽量保证程序的清晰 简洁 可读和完整 5. 调试和运行程序 13

14 源程序编写完成后, 需要在一定的开发环境下经过编辑 编译 连接 运行等过程才能得出结果 编辑就是利用编辑软件 ( 或编辑器 ) 输入 修改和保存源程序的过程 编写的 C 语言程序的称为源程序, 该程序以文件的形式保存在存储设备上称为源文件 C 语言源文件的扩展名一般为.c 用户可以使用 C 语言集成开发环境提供的编辑器或一些通用的编辑器如写字板 Microsoft Word 等编译是将编辑好的源文件翻译成二进制目标代码的过程 因为源文件是以 ASCII 码形式存储的, 计算机不能直接执行, 必须翻译成计算机可以识别的二进制代码文件 编译时, 首先检查源文件中是否存在语法错误, 如发现错误, 会在屏幕上显示错误信息, 便于用户使用编辑器修改 然后再次进行编译, 直到排除源文件中所有错误, 生成一个扩展名为.obj 的目标文件 负责编译工作的程序由 C 语言提供的编译程序 ( 编译器 ) 来完成 目标文件是可重定位的程序模块, 不是一个可执行文件, 计算机不能直接运行 连接就是把 ( 一个或多个 ) 目标文件模块和系统提供的标准库函数连接成一个适应一定操作系统的整体, 生成一个可执行文件的过程 可执行文件的文件扩展名为.exe 负责目标文件与库函数连接工作的程序称为连接程序 经过编辑 编译 连接等过程后, 最后运行可执行文件, 即可得到程序运行结果 如果结果不准确, 要重复以上过程, 直到取得正确的结果为止 图 1-4 表示了从编辑到运行的全过程 大部分 C 语言都提供了一个独立的集成开发环境 (IDE), 将编辑 编译 连接 运行四个步骤连贯在一起 IDE 提供了编程 调试时所必需的工具, 包括编辑器 编译器 调试器 连接器等, 本书涉及的所有例程全部可在 Borland C 或 Turbo C 环境中运行 有错, 修改 开始 编辑源程序 编译源文件 (.c) 连接目标文件 (.obj) 运行可执行文件 (.exe) 输出结果 有错, 修改 结果不正确, 修改 图 1-4 C 程序的编辑调试过程 14

15 第 2 章数据类型 运算符和表达式 本章主要介绍了 C 语言的字符集和保留字 C 语言的基本数据类型 常量和变量 基本运算符与表达式 重点阐述了变量的基本概念和类型说明 基本运算符的优先级和结合性以及数据类型转换等的内容 本章重点掌握 C 语言的基本数据类型及其使用 各类变量的说明 初始化和基本运算符及其表达式的使用 2.1 C 语言的字符集和保留字 C 语言的字符集字符是组成语言单词的基本成分 C 语言的字符集由字母 数字 空白符和一某些特殊字符组成 其中 : 1. 字母英文 26 个字母 (A B...Z 和 a b...z) 2. 数字 10 个十进制的数字 :0~9 3. 空白符空白符包括空格符 制表符 回车换行符等 一般说来, 空白符在程序中只起分隔单词的作用, 编译程序对它们忽略不计 在程序中的适当位置增加空白符会增强程序的可读性 为了表述的方便, 本书中用 代表回车换行符, 用 代表空格符 4. 特殊字符特殊字符主要为运算符 如 :+,=,<,> 等 下划线 "_" 在 C 语言中起与字母同样的作用 在编写 C 语言程序时, 只能使用 C 语言字符集中的字符, 如果使用其他字符,C 语言编译系统不予识别, 均视为非法字符 C 语言的保留字保留字是 C 语言中预定的具有特定含义的词, 通常也称关键字 由于这些字保留有固定的含义, 因此不能另作它用 C 语言有 32 个保留字, 它们与标准 C 句法相结合, 形成了 C 语言 C 语言的保留字分为以下几类 : 1. 类型说明保留字即用于定义 说明变量 函数或其它数据结构类型的保留字 有 : int long short float double char unsigned signed const void volatile 15

16 enum struct union 2. 语句定义保留字即用于表示一个语句功能的保留字 有 : if else goto switch case do while for continue break return default typedef 3. 存储类说明保留字即用于说明变量或其它数据结构存储类型的保留字 有 : auto register extern static 4. 长度运算符保留字即用于以字节为单位计算类型存储大小的保留字 只有一个 : sizeof 注意 :C 语言的保留字均使用小写字母 C 语言保留字见附录 Ⅱ C 语言的词法约定单词是语言的基本要素, 在语言的句法结构中有其特定的含义和作用 单词的组成要遵循语言规则和使用字符集中的字符 在 C 语言中, 单词分为六类, 即 : 标识符, 保留字, 运算符, 分隔符, 常量和注释符 1. 标识符标识符是用户定义的各种对象的名称 如用户定义的变量名 函数名 数组名 文件名 标号等都称为标识符 C 语言标识符的命名规则如下 : (1) 标识符由字母 (A~Z,a~z) 数字(0~9) 和下划线 (_) 组成 (2) 标识符的第一个字符必须是字母或下划线, 后续字符可以是字母 数字或下划线 (3) 标识符的长度可以是一个或多个字符 实际使用时, 标识符的长度会因 C 语言编译系统版本的不同而有所不同 例如在某些 C 版本中, 规定标识符前 8 位为有效长度, 当两个标识符前 8 位相同时, 则被认为是同一个标识符 BC 的标识符有效长度为 1 至 32 个字符 (4) 标识符不能和 C 语言的保留字相同, 也不能和已定义的函数名或系统标准库函数名同名 (5) 标识符区分大小写字母 例如 a 和 A 是两个不同的标识符 (6) 以下划线开头的标识符一般用在系统内部, 作为内部函数和变量名 (7) 虽然可以随意命名标识符, 但由于标识符是用来标识某个对象名称的符号, 因此, 命名应尽量有相应的意义, 以便 见名知意, 便于阅读理解 下面列举的是几个正确和不正确的标识符名称 : 正确的标识符不正确的标识符 16

17 C 5_x ( 以数字开头 ) x1 x+y ( 出现非法字符 +) sum_5 *Z3 ( 以 * 号开头 ) count_z3 $x_8 ( 出现非法字符 $) test123 sum# ( 出现非法字符 #) 2. 保留字保留字 ( 也称关键字 ) 是 C 语言的一部分, 在 C 语言中具有特定的含义和作用 C 语言中共有 32 个保留字, 它们与标准 C 句法相结合, 形成了 C 语言 C 语言规定, 用户定义的标识符不能与保留字相同 3. 运算符运算符是实现各种或各类运算的符号 C 语言运算符丰富, 一共有多达 44 种运算符, 运算功能强大 由运算符将常量 变量 数组元素 函数调用等连接起来的式子称为表达式 运算符由一个或多个字符组成 4. 分隔符在 C 语言中采用的分隔符有逗号和空格两种 逗号主要用在类型说明和函数参数表中分隔各个变量或参数 ; 空格主要用于语句中分隔各个单词, 起间隔作用 在保留字和标识符之间必须要有一个以上的空格符作为间隔, 否则将会出现语法错误 例如把 int a; 写成 inta; 则 C 编译器会把 inta 当成一个标识符处理, 从而引发错误 5. 常量在程序运行期间其值不能被改变的量称为常量 C 语言中使用的常量可分为数值常量 字符常量 字符串常量 符号常量 转义字符等 6. 注释符为了增强程序的可读性,C 语言允许在程序的任何位置增加注释 注释以 /* 开头, 以 */ 结束, 定界在其中的部分为注释的内容 增加注释的作用是向用户提示或解释程序的含义 在对程序进行编译时, 编译器将不对注释内容作任何处理 在调试程序时, 用户也可以对暂时不用的语句用注释符括起来不作编译处理, 待程序调试结束后再去掉注释符 2.2 数据类型 C 语言的数据类型在程序中对所用到的数据都要指定其数据结构, 即要说明数据的组织形式 在 C 语言中, 对数据结构的描述是以数据类型的形式出现的 C 语言的数据类型有基本类型 构造类型 指针类型 空类型和用户自定义类型 如图 2-1 所示 17

18 基本类型 整型 实型 字符型 单精度 双精度 枚举类型 数组类型 C 的数据类型 构造类型 结构类型 联合类型 指针类型 空类型 用户自定义类型 图 2-1 C 语言的数据类型 1. 基本类型基本类型是数据类型的基础, 由它可以构造出其他复杂的数据类型 基本类型的值不可以再分解为其它类型 本章主要介绍基本数据类型, 其他各数据类型将在后续章节中介绍 C 语言的基本类型包括 : 整型 实型 ( 浮点型 ) 字符型和枚举型 2. 构造类型构造类型是根据已定义的一种或多种数据类型用构造的方法定义的 也就是说, 一个构造类型的值可以分解成若干个 成员 或 元素 每个 成员 或 元素 都是一个基本数据类型或又是一个构造类型 C 语言的构造类型包括 : 数组类型 结构类型和联合类型 3. 指针类型指针是一种特殊而又具重要作用的数据类型, 其值表示某个量在内存中的地址 虽然指针变量的取值类似于整型量, 但这是两种完全不同类型的量, 一个是变量的数值, 一个是变量在内存中存放的地址 4. 空类型 ( 无值型 ) 在调用函数时, 被调用函数通常应向调用函数返回一个函数值 返回的函数值具有一定的数据类型, 应在函数定义的函数说明中给以说明 例如, 在例 1.2 中给出的 max 函数定义中, 函数头为 int max(int a,int b,int c), 其中写在函数名 18

19 max 之前的类型说明符 int 表示该函数的返回值为整型量 但是, 也有一类函数, 被调用后并不向调用函数返回函数值, 这种函数可以定义为 空类型 ( 也称 无值型 ), 其类型说明符为 void 5. 用户自定义类型 C 语言允许用户使用关键字 typedef 对已存在的类型名 ( 如 int float double char 等 ) 定义一个新的名称 所定义的新名称是现有类型名的补充, 而不是新建或取代 使用 typedef 定义新类型名的目的, 是为了使程序更加容易阅读和移植 C 语言的基本数据类型 C 语言的基本数据类型有四种 : 整型 实型 字符型和枚举型 对于基本数据类型的量, 按其值是否可以改变分为常量和变量两种 在程序中, 常量是可以不经说明而直接引用的, 而变量则必须先说明后使用 整型 (int) 变量用于存储整数 ; 实型 (float double) 用于存储实数 ( 实数在内存中用整数和小数两部分表示 ); 字符型 (char) 变量用于存储 ASCII 码字符 ; 枚举型 (enum) 变量用于存储枚举元素的值 在 C 语言中, 基本数据类型可以带说明前缀明确基本数据类型的含义, 以准确适应不同的精度和取值范围 见表 2.1 所示 表 2.1 C 的基本数据类型 整型 实型 数据类型基本整型短整型长整型无符号整型无符号短整型无符号长整型单精度实型双精度实型字符型枚举型 类型说明符 int short long unsigned unsigned short unsigned long float double char enum 不同数据类型间的转换与运算 在 C 语言中, 不同类型的量可以进行混合运算 例如 : * A -3.56e+3 19

20 这是一个合法的算术表达式 当参与同一表达式运算的各个量具有不同类型时, 在计算过程中要进行类型转换 转换的方式有两种, 一种是 自动类型转换, 另一种是 强行类型转换 1. 自动类型转换自动类型转换就是当参与同一表达式中运算的各个量具有不同类型时, 编译程序会自动将它们转换成同一类型的量, 然后再进行运算 转换的规则为 : 先将低级类型的运算量向高级类型的运算量进行类型转换, 然后再按同类型的量进行运算 由于这种转换是由编译系统自动完成的, 所以称为自动类型转换 转换的规则如图 2-2 所示 double float 高 long int unsigned int int char, short 低 图 2-2 自动类型转换规则 图中的箭头表示转换的方向 横向向左箭头表示必定的转换, 如 float 类型必定转换成 double 类型进行运算 ( 以提高运算精度 );char 和 short 型必定转换成 int 类型进行运算 纵向向上箭头表示当参与运算的量的数据类型不同时要转换的方向, 转换由低向高进行 如 int 型和 long 型运算时, 先将 int 型转换成 long 型, 然后再进行运算 ;float 型和 int 型运算时, 先将 float 型转换成 double 型,int 型转换成 double 型, 然后再进行运算 由此可见, 这种由低级向高级转换的规则确保了运算结果的精度不会降低 2. 强制类型转换自动类型转换提供了一种从低级类型向高级类型转换的运算规则, 以保证不降低运算结果的精度 除了自动类型转换外,C 语言系统还提供了一种强制类型转换功能 强制类型转换的一般形式为 : ( 数据类型说明符 )( 表达式 ) 其功能是把表达式的运算结果强制转换成数据类型说明符所表示的类型 20

21 例如 :(int)6.25 即将浮点常量 6.25( 单个常量或变量也可视为表达式 ) 强制转换为整型常量, 结果为 6 例如 :(double)i 即将整型变量 i 的值转换为 double 型 例如 :(int)(f1+f2) 即将 f1+f2 的值转换为 int 型 一般当自动类型转换不能实现目的时, 使用强制类型转换 强制类型转换主要用在两个方面, 一是参与运算的量必须满足指定的类型, 如模运算 ( 或称求余运算 ) 要求运算符 (%) 两侧的量均为整型量 二是在函数调用时, 因为要求实参和形参类型一致, 因此可以用强制类型转换运算得到一个所需类型的参数 需要说明的是, 无论是自动类型转换或是强制类型转换, 都只是为了本次运算的需要而对变量的数据长度进行的临时性转换, 而不改变类型说明时对该变量定义的类型 例如以下程序 : #include<stdio.h> void main() int n; float f; n=25; f=46.5; printf("(float)n=%f\n",(float)n); printf("(int)f=%d\n",(int)f); printf("n=%d,f=%f\n",n,f); 运行结果为 : (float)n= (int)f=46 n=25,f= 可以看出,n 仍为整型,f 仍为浮点型 2.3 常量 变量和标准函数 常量在程序运行期间其值不能被改变的量称为常量 C 语言中使用的常量可分为数值常量 字符常量 字符串常量 符号常量 转义字符等 21

22 常量也有数据类型, 如 125 是整型常量,75.8 是实型常量, 等等 常量不需要说明可以直接使用 1. 整型常量整型常量就是整型数 在 C 语言中, 整型数有三种表示形式 : 十进制整数形式 八进制整数形式和十六进制整数形式 (1) 十进制整型数用 (0~9)10 个数字表示 例如 :12,65,-456,65535 等 (2) 八进制整型数以 0 开头, 用 (0~7)8 个数字表示 例如 :014,0101, 等 八进制数一般表示无符号的数 (3) 十六进制整型数以 0X 或 0x 开头, 用 (0~9)10 个数字 A~F 或 a~f 字母表示 例如 :0xC,0x41,0xFFFF 等 十六进制数一般表示无符号的数 (4) 长整型数在 C 语言中, 整型数又可分为基本整型 长整型 短整型 无符号整型等 长整型数用后缀 L 或 l 来表示的 例如 : 十进制长整型数 : 12L,65536L 等 八进制长整型数 : 014L, L 等 十六进制长整型数 :0XCL,0x10000L 等 (5) 无符号整型数无符号整型数用后缀 U 或 u 表示 例如 : 十进制无符号整型数 : 15u,234u 等 八进制无符号整型数 : 017u,0123u 等 十六进制无符号整型数 : 0xFu,0xACu 等 十进制无符号长整型数 : 15Lu,543Lu 等 例 2.1 整型数的三种表示形式 #include<stdio.h> void main() int a,b,c; a=20; b=027; 22

23 c=0x3f; printf("%d,%d,%d\n",a,b,c); printf("%o,%o,%o\n",a,b,c); printf("%x,%x,%x\n",a,b,c); 运行结果为 : 20,23,63 24,27,77 14,17,3f 输出时, 八进制不输出前导符 0, 十六进制不输出前导符 0x 2. 实型常量实型常量就是实数, 也称浮点数 在 C 语言中, 实型常量有两种表示形式 : 十进制小数形式和十进制指数形式 (1) 十进制小数形式由数字 0~ 9 和小数点组成 例如 : 0.0,.123,456.0,7.89,0.18, 等 注意 : 实数的小数形式必须有小数点的存在 例如 : 0. 和 0,456. 和 456 是两种不同类型的量, 前者是实型量, 后者是整型量, 它们的存储形式和运算功能不同 (2) 指数形式指数形式又称为科学记数法 由整数部分 小数点 小数部分 E( 或 e) 和整数阶码组成 其中阶码可以带正负号 例如 : 1.2*10 5 = 可写成实数指数形式为 :1.2E5 或 1.2E+5 3.4*10-2 =0.034 可写成实数指数形式为 :3.4E-2 以下是不正确的实数指数形式 : E3 (E 之前无数字 ) 12.-E3 ( 负号位置不对 ) 2.0E ( 无阶码 ) 3. 字符常量在 C 语言中, 字符常量是用单引号括起来的单个字符 例如 : 'a', 'A', '=', '+', '?' 等都是合法字符常量 字符在计算机中是以 ASCII 码值存储的, 因此每个字符都有对应的 ASCII 码值 ( 见附录 Ⅰ) 23

24 字符常量有以下特点 : (1) 字符常量只能用单引号括起来, 不能用双引号或其它括号 (2) 字符常量只能是一个字符, 不能是多个字符或字符串 (3) 字符可以是字符集中的任意字符 在 C 语言中, 还有一种特殊的字符常量称为转义字符 转义字符主要用来表示那些不同于一般字符不可打印的控制字符和特定功能的字符 转义字符以反斜线 "\" 开头, 后跟一个或几个字符 转义字符具有特定的含义, 不同于字符原有的意义 例如, 在前面的例程中 printf 函数的格式串中用到的 \n 就是一个转义字符, 其意义是 回车换行 表 2.2 中列出了常用的转义字符及其含义 其中 : 使用 \ddd 和 \xhh 可以方便地表示任意字符 ddd 表示 1~3 位八进制的 ASCII 代码 如 \101 表示字母 A,\102 表示字母 B; xhh 表示 1~2 位十六进制的 ASCII 代码 如 \x41 表示字母 A '\0' 或 '\000' 是代表 ASCII 码为 0 的控制字符, 即空操作符 注意 : 转义字符中只能使用小写字母, 每个转义字符代表一个字符 在 C 程序中, 对不可打印的字符, 通常用转义字符表示 表 2.2 C 语言中常用的转义字符 转义字符 转义字符的意义 ASCII 码 \n 回车换行 (Newline) 010 \t 横向跳到下一制表位置 (Tab) 009 \v 竖向跳格 (Vertical) 011 \b 退格 (Backspace) 008 \r 回车 (Return) 013 \f 走纸换页 (Form Feed) 012 \\ 反斜线符 "\"(Backslash) 092 \' 单引号符 (Apostrophe) 039 \ 双引号符 (Double quote) 034 \a 鸣铃 (Bell) 007 \0 空字符 (NULL) 000 \ddd 1~3 位八进制数所代表的字符 1~3 位八进制数 \xhh 1~2 位十六进制数所代表的字符 1~2 位十六进制数 例 2.2 转义字符的应用 #include<stdio.h> void main() 24

25 int a,b,c; a=1; b=2; c=3; printf("%d\n\t%d%d\n%d%d\t\b%d\n",a,b,c,a,b,c); 程序输出结果为 : 输出结果分析 : 第一行第一列输出 a 值 1; 接着是转义字符 \n, 则执行回车换行操作, 移到第二行 ; 接着是转义字符 \t, 于是移到下一制表位置, 再输出 b 的值 2; 接着输出 c 的值 3; 再执行回车换行 \n, 移到第三行 ; 又输出 a 值 1 和 b 的值 2; 接着跳到下一制表位置 \t, 与上一行的 2 对齐, 接着是转义字符 \b, 则退回一格, 输出 c 的值 3 4. 字符串常量字符串常量是由一对双引号括起的字符序列 例如 : "CHINA","C Language Program", "$12.5" 等都是合法的字符串常量 字符串常量和字符常量的主要区别 : (1) 字符常量由单引号括起来, 字符串常量由双引号括起来 双引号是字符串的界限符, 不是字符串的一部分 如果字符串中要出现双引号 ( ), 则要使用转义符 例如 :printf("he said \" I am a student\"\n"); (2) 字符常量只能是单个字符, 字符串常量则可以含一个或多个字符 (3) 可以把一个字符常量赋给一个字符变量, 但不能把一个字符串常量赋予一个字符变量 在 C 语言中没有相应的字符串变量 但是可以用一个字符数组来存放一个字符串常量 ( 这在第六章数组中介绍 ) (4) 字符常量占一个字节的内存空间, 而字符串常量占的内存字节数等于字符串中字符的个数加 1 因为在存放字符串时, 每个字符串的末尾增加了一个字符串结尾符 \0 字符串结尾符是字符串结束的标志 例如, 字符串 :"C Language program", 在内存中存放的字符为 :C Language program\0, 占 19 个字节 因此, 字符常量 'a' 和字符串常量 "a" 虽然都只有一个字符, 但在内存中占用的字节的情况是不同的 'a' 在内存中占 1 个字节,"a" 在内存中占 2 个字节 (5) 在字符串中也可以有转义符 如 : prinftf("%s","this is a\n character string"); 5. 符号常量 25

26 用宏定义指令 #define 定义一个标识符代表一个常量, 称为符号常量 符号常量在使用之前必须先定义, 其一般形式为 : #define 标识符常量其功能是把该标识符 ( 也称宏名 ) 定义为符号常量, 其值为后面的常量值 习惯上符号常量采用大写形式 定义符号常量的目的是为了提高程序的可读性, 便于程序的调试 快速修改和纠错 当一个程序中要多次使用同一常量时, 可定义符号常量, 这样, 当要对该常量值进行修改时, 只需要对宏定义命令中的常量值进行修改即可 例 2.3 求半径为 r 的圆面积 圆周长和圆球体积 #include<stdio.h> #define PI void main() float r,s,c,v; printf(" 请输入半径值 :\n"); scanf("%f",&r); s=pi*r*r; c=2*pi*r; v=4.0/3.0*pi*r*r*r; printf("s=%f\n",s); printf("c=%f\n",c); printf("v=%f\n",v); 程序运行过程如下 : 请输入半径值 : 6 s= c= v= 程序在运行过程中, 每次遇到符号常量时就用所定义的常量值替换它, 替换过程叫做 宏替换 注意 : 符号常量不是变量, 它所代表的值在整个作用域内不能再改变, 即不允许对它重新赋值 变量在程序运行过程中其值可以改变的量称为变量 所有变量在使用前必须先说明 说明一个变量包括 : 26

27 (1) 给变量指定一个标识符, 即变量的名称 (2) 指定变量的数据类型 ( 变量的数据类型决定了变量值的数据类型 表现形式和分配内存空间的大小, 同时也指定了对该变量能执行的操作 ) (3) 指定变量的存储类型和变量的作用域 本章中只介绍前两部分内容, 存储类型和作用域将在第七章中介绍 说明变量的一般形式为 : 类型说明符变量名表 ; 例如 : int a,b; char c; float f1,f2,f3; 即说明变量 a 和 b 为基本整型变量 ; 说明变量 c 为字符型变量 ; 说明变量 f1 f2 f3 为单精度实型变量 其中 :int char float 是数据类型说明符, 是 C 语言的保留字, 用来说明变量类型 ;a,b,c,f1,f2,f3 为变量名 说明 : (1) 允许在一个数据类型说明符后说明多个相同类型的变量, 各变量名之间用逗号间隔 类型说明符与变量名之间至少用一个空格间隔 (2) 最后一个变量名之后必须以分号 ; 结束 (3) 变量说明必须放在变量使用的前面 一般放在函数体的开头部分 1. 整型变量在 C 语言中, 整型变量分为基本型 短整型 长整型和无符号型 无符号型又可与前三种类型组合出无符号基本型 无符号短整型和无符号长整型, 总共有六种形式 表 2.3 中列出了在 IBM PC 机上的整型类型说明符 在内存中所占字节数和取值范围 表 2.3 整型类型分类表 变量类型名 类型说明符 所占字节数 取值范围 基本整型 int ~32767 短整型 short int(short) ~32767 长整型 long int(long) ~ 无符号基本型 unsigned int 2 0~65535 无符号短整型 unsigned short int 2 0~65535 无符号长整型 unsigned long int 4 0~ 例 2.4 整型变量的说明 27

28 int a; ( 说明变量 a 为基本整型变量 ) short b; 或 short int b; ( 说明变量 b 为短整型变量 ) long c,d; 或 long int c,d; ( 说明变量 c d 为长整型变量 ) unsigned x,y,z; 或 unsigned int x,y,z; ( 说明变量 x y z 为无符号整型变量 ) unsigned long int l1,l2; ( 说明变量 l1 l2 为无符号长整型变量 ) 例 2.5 求 50 的三次方 #include<stdio.h> void main() int x; x=50*50*50; printf( %d\n,x); 运行结果为 : 这个结果显然不是正确的结果 如果将程序改为 : #include<stdio.h> void main() long int x; x=50l*50l*50l; printf( %ld\n,x); 程序运行结果为 : 本例说明, 在定义变量时, 要注意数据类型表示的数值的范围 当值超过最大的取值范围时, 就会产生 溢出 出错 2. 实型变量实型变量分为单精度型和双精度型两类, 如表 2.4 列出了在 IBM PC 机上实型的类型说明符 在内存中所占字节数和取值范围 表 2.4 实型类型分类表 变量类型名 类型说明符 所占字节数 取值范围 单精度实型 float ~ 双精度实型 double ~ 例 2.6 实型变量的说明 float f1,f2; ( 说明变量 f1 f2 为单精度实型变量 ) double x1,x2; ( 说明变量 x1 x2 为双精度实型变量 ) 28

29 例 2.7 实型变量的使用 #include<stdio.h> void main() float f; double d; f= ; d= ; printf("f=%f\nd=%f\n",f,d); 程序运行结果为 : f= d= 说明 : 由于单精度浮点型数据有效位数有 7 位, 可保留 6 位小数 而变量 f 数值的整数已占 5 位, 故小数 2 位之后均为无效数字 d 是双精度型, 有效位为 16 位, 可保留 14 位小数, 但输出结果时小数后最多保留 6 位, 其余部分四舍五入 3. 字符型变量字符型变量的类型说明符是 char, 字符型变量用来存放字符常量, 即存放单个字符 字符型变量的类型说明格式与整型变量相同 例如 : char c1,c2; ( 说明变量 c1 c2 为字符型变量 ) 每个字符型变量分配一个字节的内存空间, 因此只能存放一个字符 在内存单元中, 实际上存放的是字符的 ASCII 码 例如 : A 的十进制 ASCII 码是 65, a 的十进制 ASCII 码是 97 如果对字符变量 c1,c2 赋值 :c1= A ;c2= a ;, 则在内存中 : c1 单元存放的是 ( 十进制 65); c2 单元存放的是 ( 十进制 97) 由此可见, 字符数据在内存中的存储形式与整型数据的存储形式类似 所以, 在 C 语言中字符型数据和整型数据之间可以通用, 即 : 可以将字符型数据以整型数据处理 ; 允许对整型变量赋以字符值 ; 允许对字符变量赋以整型值 ; 允许把字符变量按整型量输出 ; 允许把整型量按字符量输出 由于整型数据占 2 个字节, 字符数据占 1 个字节, 当整型数据按字符型数据处理时, 只有低 8 位的字节参与操作 例 2.8 字符型变量的使用 29

30 #include<stdio.h> void main() char c1,c2; int x; c1=65; c2=97; x=100-c1; printf("c1=%c,c2=%c\nc1=%d,c2=%d\nx=%d\n",c1,c2,c1,c2,x); 程序运行结果为 : c1=a,c2=a c1=65,c2=97 x=35 例 2.9 将小写字母转换为大写字母 #include<stdio.h> void main() char c1,c2; c1='a'; c2='b'; c1=c1-32; c2=c2-32; printf("%c,%c\n%d,%d\n",c1,c2,c1,c2); 程序运行结果为 : A,B 65,66 C 语言允许字符型变量用字符的 ASCII 码参与数值运算 因为大小写字母的 ASCII 码相差 32, 所以运算后很方便地将小写字母换成大写字母 4. 变量的初始化变量的初始化是指在说明变量的同时给变量赋初值 例如 : int a=5; char c1='a,c2='b'; float f1=3.14,f2=1000.0,f3=0.125; int x=10,y=15,z=20; 可以看出,C 语言允许在对变量进行说明的同时为需要初始化的变量赋予初始 30

31 值, 并可以在一个数据类型说明符说明多个同类型变量的同时, 给多个同类型变量赋初值 但需要注意的是, 若要给多个变量赋同一初值时, 要将它们分开赋值 例如 : int x=y=z=10; 是错误的, 应该写成 : int x=10,y=10,z=10; 也可以使说明变量的一部分变量初始化, 如 : int a,b,c=150; 标准函数为了方便用户编程, 每一种 C 语言编译系统都提供了一个包含完成大部分常规功能的库函数 不同的编译系统所提供的库函数的函数数目和函数名以及函数功能不完全相同 一般有 : 数学函数 输入输出函数 字符函数 字符串函数 时间函数 动态存储分配函数等 在编写程序时, 用户只需通过函数名和相应的参数即可调用库函数 不过, 使用库函数时要在程序的头部包含相应函数的头文件 例如 : 使用数学函数时应包含头文件 math.h ; 使用输入输出函数时应包含头文件 stdio.h ; 使用字符串函数时应包含头文件 string.h 等 本节仅列出几种最常用的数学函数, 见表 2.5 表 2.5 常用数学函数表 函数名 函数原型 功能 cos double cos(double x) 计算 cos(x) 的值 exp double exp(double x) 计算 e x 的值 fabs double fabs(double x) 计算 x 的绝对值 log double log(double x) 计算 ln x 的值 log10 double log10(double x) 计算 lg x 的值 pow double pow(double x,double y) 计算 x y 的值 sin double sin(double x) 计算 sin(x) 的值 sqrt double sqrt(double x) 计算 x 的值 tan double tan(double x) 计算 tg(x) 的值 注 : 三角函数的角度单位是弧度, 而不是度 分 秒 C 语言常用库函数见附录 Ⅳ 例 2.10 输入两个角度值 x y, 计算 sin( x + y ) 的值 31

32 #include<stdio.h> #include<math.h> #define PI void main() double x,y,z; printf(" 请输入两个角度值 :\n"); scanf("%lf,%lf",&x,&y); x=x*pi/180.0; y=y*pi/180.0; z=sin(fabs(x)+fabs(y)); printf("z=%lf\n",z); 程序运行结果为 : 请输入两个角度值 : 40,70 z= 基本运算符及其表达式 C 语言提供了比其他高级语言更丰富的运算符, 包括 : 基本运算符 位运算符 特殊运算符 如图 2-3 所示 本章主要介绍算术运算符 关系运算符 逻辑运算符 条件运算符 赋值运算符 逗号运算符及其表达式 32

33 算术运算符 (+,-,*,/,%,++,--) 赋值运算符 (=) 逗号运算符 (,) 运算符 基本运算符 位运算符 关系运算符 (<,<=,>,>=,=) 逻辑运算符 (&&,,!) 条件运算符 (? :) 求字节数运算符位逻辑运算符 (&,,^) 位移动运算符 (>>,<<) 位自反运算符 (~) 特殊运算符 强制类型转换运算符指针运算符下标运算符分量运算符 图 2-3 C 语言运算符分类 由常量 变量 函数调用和运算符组合起来的式子称为表达式 一个表达式有 一个值及其类型, 它们等于计算表达式所得结果的值和类型 表达式求值按运算符 的优先级和结合性规定的顺序进行 单个的常量 变量 函数调用也可以看作是表 达式的特例 算术运算符与算术表达式 算术运算符用于各类数值运算 C 语言中包括 + - * / % 等七种算 术运算符 见表 2.6 表 2.6 算术运算符 操作数数目 运算符 名称 运算规则 参加运算的数据类型 结果的数据类型 单目 + 正 取原值 整型 实型 整型 实型 单目 - 负 取负值 整型 实型 整型 实型 双目 + 加 加法 整型 实型 字符型 整型 实型 字符型 双目 - 减 减法 整型 实型 字符型 整型 实型 字符型 双目 * 乘 乘法 整型 实型 字符型 整型 实型 字符型 双目 / 除 除法 整型 实型 字符型 整型 实型 字符型 双目 % 模 求余数 整型 整型 单目 ++ 自增 自增 1 整型 字符型 整型 字符型 33

34 单目 -- 自减自减 1 整型 字符型整型 字符型 根据 先乘除后加减 的运算规则, 运算符具有不同的优先级 同样, 在 C 语言中当一个式子中有多个运算符时, 也要考虑它们的优先级, 而且还要考虑它们的结合性 结合性是 C 语言的一个特点 因此, 在表达式中各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定, 还要受运算符结合性的制约, 以便确定是从左至右进行运算还是从右至左进行运算 结合性是其它高级语言没有的, 因此也增加了 C 语言的复杂性 在 C 语言中, 运算符的运算优先级共有 15 级 1 级最高,15 级最低 在表达式中, 优先级较高的运算符先于优先级较低的运算符进行运算 而在一个运算量两侧的运算符优先级相同时, 则按运算符的结合性所规定的结合方向处理 在 C 语言中, 各运算符的结合性分为两种 : 左结合性 ( 从左至右 ) 和右结合性 ( 从右至左 ) 多数的运算符都是左结合的 如表达式 中的运算符 + 和 - 是同级运算符并且遵循左结合性, 因此 2 应先与运算符 - 结合, 执行 1-2 运算, 然后再执行 +3 的运算 这种自左至右的结合方向就称为 左结合性 也有少数运算符是右结合的, 如赋值运算符, 自增 自减运算符, 使用时要特别注意 如 x=y=15, 由于 = 的右结合性, 应先执行 y=15 再执行 x=(y=15) 运算 C 语言运算符及其功能 优先级和结合性见附录 Ⅲ 1. 基本算术运算符基本算术运算符包括 : +( 单目取正 ) -( 单目取负 ) +( 加 ) -( 减 ) *( 乘 ) /( 除 ) %( 取模 ) 基本算术运算符的优先级如图 2-4 所示 : +( 单目取正 ) -( 单目取负 ) *( 乘 ) /( 除 ) %( 取模 ) +( 加 ) -( 减 ) 高 低 图 2-4 基本算术运算符优先级 在基本算术运算符中, 单目运算符的结合性为右结合, 双目运算符的结合性为左结合 例 2.11 基本算术运算符 3+10/5 结果为 /-5.0 结果为 %5 结果为 3 34

35 100%3 结果为 %5.0 结果出错 (3+10)/5 结果为 2 说明 : (1) 整数相除, 结果为整数, 且只保留整数部分 (2) 取余数运算的两个操作数必须是整数, 结果也是整数 (3) 圆括号 ( ) 的优先级最高 例 2.12 整数相除的问题 #include<stdio.h> void main() float f; f=1/4; printf("%f\n",f); 程序运行结果为 : 若改为 f=1.0/4.0;, 则程序运行结果为 : 自增 自减运算符自增运算符 ++ 的功能是使变量的值自增 1, 自减运算符 -- 的功能是使变量的值自减 1 自增 自减运算符的优先级高于基本算术运算符, 其结合性为右结合 自增 自减运算符只能用于变量, 不能用于常量或表达式 自增 自减有以下几种形式 : (1)++i i 变量自增 1 后再参与运算 (2)i++ i 变量参与运算后,i 的值再自增 1 (3)--i i 变量自减 1 后再参与运算 (4)i-- i 变量参与运算后,i 的值再自减 1 例 2.13 自增 自减运算符的使用 #include<stdio.h> void main() int i=8; printf("%d\n",++i); printf("%d\n",--i); printf("%d\n",i++); printf("%d\n",i--); 35

36 printf("%d\n",-i++); printf("%d\n",-i--); 程序运行结果为 : 对以上结果的分析 : i 的初值为 8; 执行 printf("%d\n",++i);, 因为是 ++i, 所以 i 的值先加 1 然后再参与运算即输出, 所以输出的结果为 9, 这时 i 的值为 9; 执行 printf("%d\n",--i);, 因为是 --i, 所以 i 的值先减 1 然后再参与运算即输出, 所以输出的结果为 8, 这时 i 的值为 8; 执行 printf("%d\n",i++);, 因为是 i++, 所以先参与运算即输出 i 的值, 然后 i 的值再加 1, 所以输出的结果为 8, 这时 i 的值为 9; 执行 printf("%d\n",i--);, 因为是 i--, 所以先参与运算即输出 i 的值, 然后 i 的值再减 1, 所以输出的结果为 9, 这时 i 的值为 8; 执行 printf("%d\n",-i++);, 因为是 i++, 所以先参与运算即输出 -i 的值, 然后 i 的值再加 1, 所以输出的结果为 -8, 这时 i 的值为 9; 执行 printf("%d\n",-i--);, 因为是 i--, 所以先参与运算即输出 -i 的值, 然后 i 的值再减 1, 所以输出的结果为 -9, 这时 i 的值为 8 例 2.14 多个自增 自减运算符组成的表达式 #include<stdio.h> void main() int i=5,j=5,p,q; p=(i++)+(i++)+(i++); q=(++j)+(++j)+(++j); printf("%d,%d,%d,%d",p,q,i,j); 程序运行结果为 : 15,24,8,8 对以上结果的分析 : 执行 p=(i++)+(i++)+(i++); 时, 对 p=(i++)+(i++)+(i++) 应理解为三个 i 相加, 故 36

37 p 值为 15 然后 i 再自增 1 三次相当于加 3 故 i 的最后值为 8 执行 q=(++j)+(++j)+(++j);, 对 q=(++j)+(++j)+(++j) 应理解为 q 先自增 1, 再参与运算, 由于 q 自增 1 三次后值为 8, 三个 8 相加的和为 24,j 的最后值仍为 8 注意 : 在不同的 C 系统中得到的值可能有所不同 3. 算术表达式由算术运算符和括号将运算对象 ( 常量 变量 函数等 ) 连接起来的式子, 称为算术表达式 有了算术表达式, 在编程时我们就可以将数学算术式写成 C 语言的算术表达式来表达 下面的式子都为算术表达式 : x+y+z (f1*2.0)/f i sqrt(a)+sqrt(b) 关系运算符与关系表达式关系运算也称比较运算, 通过对两个量进行比较, 判断其结果是否符合给定的条件, 若条件成立, 则比较的结果为 真, 否则就为 假 例如, 若 a=8, 则 a> 6 条件成立, 其运算结果为 真 ; 若 a=-8, 则 a>6 条件不成立, 其运算结果为 假 在 C 语言程序中, 利用关系运算使我们能够实现对给定条件的判断, 以便作出进一步的选择 1. 关系运算符 C 语言提供了 6 种关系运算符, 见表 2.7 表 2.7 关系运算符运算符含义 < 小于 <= 小于等于 > 大于 >= 大于等于 == 等于!= 不等于 说明 : (1) 关系运算符共分为两级, 其中 : 前 4 种关系运算符 (<,<=,>,>=) 为同级运算符, 后两种关系运算符 (==,!=) 为同级运算符, 且前 4 种关系运算符的优先级高于后两种 37

38 (2) 关系运算符的结合性为左结合 (3) 关系运算符的优先级低于算术运算符, 高于赋值运算符 例如 : a+b>c 等价于 (a+b)> c a>b!=c 等价于 (a>b)!= c a=b>=c 等价于 a =(b >= c) a-8<=b==c 等价于 (( a-8 )<= b)== c 2. 关系表达式关系表达式是用关系运算符将两个表达式连接起来的式子, 一般形式为 : < 表达式 1> < 关系运算符 > < 表达式 2> 说明 : (1) 表达式 1 和表达式 2 可以是算术表达式 逻辑表达式 赋值表达式 关系表达式 字符表达式 例如, 以下为 C 语言的关系表达式 : (a + b)<=(c + 8) (a=4)>=(b=6) "AB"!="ab" (a>b)==(m<n) (2) 关系表达式的运算量可以是算术量 字符量和逻辑量, 但结果只能是逻辑量 即值只能是一个为 真 或 假 的逻辑值 (3)C 语言没有逻辑型数据, 用 1 表示逻辑值 真, 用 0 表示逻辑值 假 例如, 若 a=1,b=2,c=3, 则 : 关系表达式 a>b 的值为 0, 即表达式的值为 假 关系表达式 (a + b)<=(c + 8) 的值为 1, 即为 真 关系表达式 (a=4)>=(b=6) 的值为 0, 即为 假 (4) 由于关系运算符的优先级低于算术运算符, 高于赋值运算符, 因此, 关系表达式的优先级应低于算术表达式, 高于赋值表达式 例如 : a + b<=c + 8 等价于 (a + b)<=(c + 8) a>b==m<n 等价于 (a>b)==(m<n) a=4>=(b=6) 等价于 a=(4>=(b=6)) 逻辑运算符与逻辑表达式关系表达式通常只能表达一些简单的关系, 对于一些较复杂的关系则不能正确表达 例如, 有数学表达式 :x<-10 或 x>0 就不能用关系表达式表示了 又如 38

39 数学表达式 :10>x>0 虽然也是 C 语言合法的关系表达式, 但在 C 程序中不能得到正确的值 利用逻辑运算可以实现复杂的关系运算 1. 逻辑运算符 C 语言提供了三种逻辑运算符, 它们是 :!( 逻辑非 ),&&( 逻辑与 ) 和 ( 逻辑或 ) (1) 逻辑非! 逻辑非运算符! 是一个单目运算符, 右结合性, 其真值表见表 2.8 表 2.8! 运算真值表 a!a 真 假 假 真 例如 : 若 a 的值为真, 则!a 的值为假 ; 若 a 的值为假, 则!a 的值为真 (2) 逻辑与 && 逻辑与运算符 && 是一个双目运算符, 左结合性, 其真值表见表 2.9 表 2.9 && 运算真值表 a b a&&b 真 真 真 真 假 假 假 真 假 假 假 假 由表 2.9 可知 : 在逻辑与运算中, 当参与运算的两个操作数均为真时, 其运算结果为真, 其余为假 例如 : 若 a 为假,b 为真, 则 a&&b 的值为假 ; 若 a b 均为真, 则 a&&b 的值为真 (3) 逻辑或 逻辑或运算符 是一个双目运算符, 左结合性, 其真值表见表 2.10 表 2.10 运算真值表 a b a b 真真真真假真 39

40 假真真 假假假 由表 2.10 可知 : 在逻辑或运算中, 当参与运算的两个操作数均为假时, 其运算结果为假, 其余为真 例如 : 若 a 为假,b 为真, 则 a b 的值为真 ; 若 a b 均为假, 则 a b 的值为假 2. 逻辑表达式逻辑表达式是用逻辑运算符将表达式连接起来的式子, 一般形式为 : [< 表达式 1>] < 逻辑运算符 > < 表达式 2> 说明 : (1) 表达式 1 和表达式 2, 可以是关系表达式, 也可以是逻辑表达式 例 : (c>=2)&&(c<=10) (!5) (8&&9) (c>=2)&&(!5) (2) 当逻辑运算符为逻辑非! 时, 须省略表达式 1 例 :!a (3) 算术运算符 关系运算符 逻辑运算符混合运算时的运算顺序如图 2-5 所示!( 非 ) 算术运算符关系运算符 && 和 赋值运算符 高 低 图 2-5 算术 关系 逻辑运算符运算顺序 例如 : (c>=2)&&(c<=10) 可写成 : c>=2&&c<=10 (!5) (8==9) 可写成 :!5 8==9 ((a=7)>6)&&((b=-1)>6) 可写成 :(a=7)>6&&(b=-1)>6 (c<=10)&&(!5) 可写成 :c<=10&&!5 与关系表达式相同, 由于 C 语言没有逻辑类型量, 因此逻辑表达式的运算结果也是以数值 1 表示 真, 以数值 0 表示 假 ; 而在判断一个量是否为 真 或 假 时, 40

41 则以一个 非 0 的数值表示 真, 以数值 0 表示 假 例如 : (1)!5 8==9 分析 :!5 的值为 0,8==9 的值为 0, 所以逻辑表达式的值为 0( 假 ) (2) (a = 7)>6&&(b=-1)>6 分析 : 由于 (a=7)>6 为 1( 真 ),(b=-1)>6 为 0( 假 ), 所以逻辑表达式的值为 0 ( 假 ) (3)c>=2&&c<=10 分析 : 由于 c>=2 为 1( 真 ),c<=10 也为 1( 真 ), 则逻辑表达式的值为 1( 真 ) (4) A + 9 D 分析 : 由于 A 和 D 的 ASCII 码不为 0, 所以逻辑表达式的值为 1( 真 ) 应该注意, 在逻辑表达式的求解中, 并不是所有的逻辑运算都被执行 例如 : ( 1) a&&b&&c 由逻辑与运算符的特点知 : 全真为真, 其余为假 因此, 只有当 a 的值为真时, 才会对 b 的值进行运算 如果 a 的值为假, 则整个表达式的值已经为假 同样, 只有当 a&&b 的值为真时, 才会对 c 的值进行运算 例如, 有以下程序段 : m=n=a=b=c=d=1; (m=a>b)&&(n=c>d); printf("m=%d,n = %d\n",m,n); 分析 : 在此程序段中, 在执行到语句 (m=a>b)&&(n=c>d) 时, 先执行 a>b 为假, 即为 0, 赋值给 m=0, 则 n=c>d 不再运算 因此, 程序段最后输出 m=0,n=1 (2)a b c 分析 : 由或运算符的特点知 : 全假为假, 其余为真 因此, 只有当 a 的值为假时, 才会对 b 的值进行运算 因为, 当 a 的值为真时, 整个表达式的值已经为真 同样, 只有当 a b 的值为假时, 才会对 c 的值进行运算 有了逻辑表达式之后, 我们就可以将较复杂的数学关系式写成 C 语言的逻辑表达式了 逻辑表达式是构成选择结构条件的基本式子 条件运算符与条件表达式条件运算符是 C 语言中唯一的一个三目运算符, 它要求有三个操作对象, 具有右结合性 由条件运算符构成的表达式称为条件表达式, 一般形式为 : < 表达式 1>?< 表达式 2> < 表达式 3> 式中? : 为条件运算符 41

42 条件表达式的运算过程为 : 先计算表达式 1 的值, 若为非 0( 真 ), 则计算表达式 2 的值, 即将表达式 2 的值作为条件表达式的值 ; 若表达式 1 的值为 0( 假 ), 则计算表达式 3 的值, 即将表达式 2 的值作为条件表达式的值 例如 :a>=0?a:-a 当 a 的值大于或等于 0 时, 给出 a 的值 ; 当 a 的值小于 0 时, 则给出 -a 的值 说明 : (1) 条件运算符的优先级高于赋值运算符, 低于算术运算符 关系运算符 逻辑运算符 (2) 条件运算符的结合方向为 自右向左 例如, 若有以下条件表达式 : a>b?a:b>c?b:c 等价于 a>b?a:(b>c?b:c) (3) 在条件表达式中, 各表达式的类型可以不同, 此时, 条件表达式值的类型为表达式 2 和表达式 3 中较高的类型 例如, 若 x 的类型为整型时, 则条件表达式 x?'a':'b' 的值为字符型 ; 而条件表达式 x?2:3.5 的值为浮点型 条件表达式主要用于无论条件是否成立都给同一个变量赋值或实现同一项功能的情况 例如条件表达式 x=a>b?a b 等同于以下条件语句 : if (a>b) x=a; else x=b; ( 有关条件语句的内容见第四章 ) 赋值运算符与赋值表达式 1 简单赋值运算符和赋值表达式简单赋值运算符为 = 由 = 连接的式子称为赋值表达式, 其一般形式为 : < 变量 >=< 表达式 > 赋值表达式的功能是 : 将赋值符右边表达式的值赋给赋值符左边的变量 以下均为赋值表达式 : c=a+b z=sqrt(x)+sqrt(y) k=i+++--j a=b=c=d=10 x=(a=5)+(b=8) 赋值运算符为双目运算符 赋值运算符的优先级仅高于逗号运算符, 低于其他所有的运算符 赋值运算符的结合性为右结合 由于赋值运算符的结合性, 因此, a=b=c=d=10 可理解为 :a=(b=(c=(d=10))) 42

43 赋值表达式 x=(y=2)+(z=4) 的意义是 : 把 2 赋给 y,4 赋给 z, 再把 2 和 4 相加, 其和赋给 x,x 等于 6 在其它高级语言中, 赋值构成了一个语句, 称为赋值语句 而在 C 语言中, 把 = 定义为运算符, 组成赋值表达式 因此, 凡是表达式可以出现的地方均可出现赋值表达式 赋值表达式也有类型转换的问题 当赋值运算符两边的数据类型不同时, 系统会进行自动类型转换, 把赋值符右边的类型转换为左边的类型 赋值表达式的转换规则为 : (1) 实型 (float,double) 赋给整型变量时, 只将整数部分赋给整型变量, 舍去小数部分 如 :int x; 执行 x=6.89 后,x 的值为 6 (2) 整型 (int,short int,long int) 赋给实型变量时, 数值不变, 但将整型数据以浮点形式存放到实型类型变量中, 增加小数部分 ( 小数部分的值为 0) 如 :float x; 执行 x=6 后, 先将 x 的值 6 转换为 , 再存储到变量 x 中 (3) 字符型 (char) 赋给整型 (int) 变量时, 由于字符型只占 1 个字节, 整型为 2 个字节, 所以 int 变量的高八位补的数与 char 的最高位相同, 低八位为字符的 ASCII 码值 如 :int x; x= \101 ;( ), 高八位补 0, 即 : 同样 int 赋给 long int 时, 也按同样规则进行 (4) 整型 (int) 赋给字符型 (char) 变量时, 只把低 8 位赋给字符变量, 同样 long int 赋给 int 变量时, 也只把低 16 位赋给 int 变量 由此可见, 当右边表达式的数据类型长度比左边的变量定义的长度要长时, 将丢失一部分数据 例 2.15 赋值表达式中的类型转换 #include<stdio.h> void main() int i1,i2=15,i3,i4=66; float f1,f2=8.88; char c1='a',c2; i1=f2; f1=i2; i3=c1; c2=i4; printf("%d,%f,%d,%c",i1,f1,i3,c2); 程序运行结果为 : 8, ,65,B 本例表明了上述赋值运算中类型转换的规则 i1 为整型, 赋予实型量 f2 值

44 后只取整数 8;f1 为实型, 赋予整型量 i2 值 15, 后增加了小数部分 ; 字符型量 c1 赋予 i3 变为整型, 整型量 i4 赋予 c2 后取其低八位成为字符型 再如以下例程 : 例 2.16 赋值运算中的类型转换 #include<stdio.h> void main() float PI= ; int s,r=5; s=r*r*pi; printf("s=%d\n",s); 程序运行结果为 : s=78 本例程序中,PI 为实型 ;s,r 为整型 在执行 s=r*r*pi 语句时,r 和 PI 都转换成 double 型计算, 结果也为 double 型 但由于 s 为整型, 故赋值结果仍为整型了小数部分 2. 复合赋值运算符及其表达式复合赋值运算符是在简单赋值运算符 = 前加其他双目运算符构成的 由复合赋值运算符连接的式子称为 ( 复合 ) 赋值表达式, 一般形式为 : < 变量 > < 复合赋值运算符 > < 表达式 > C 语言提供了以下复合赋值运算符 : +=,-=,*=,/=,%=,<<=,>>=,&=,^=, = 以下的表达式均为复合赋值表达式 : a+=5 等价于 a=a+5 x*=y+7 等价于 x=x*(y+7) r%=p 等价于 r=r%p x+=x-=x*=x 等价于 x=x+(x=(x-(x=x*x))) 复合赋值运算符的运算优先级与简单赋值运算符同级, 其结合性为右结合 复合赋值运算符这种写法, 有利于提高编译效率并产生质量较高的目标代码 逗号运算符与逗号表达式在 C 语言中逗号, 也是一种运算符, 称为逗号运算符 逗号运算符的优先级是所有运算符中最低的 逗号运算符的结合性为左结合 用逗号运算符连接起来的式子, 称为逗号表达式 逗号表达式的一般形式为 : < 表达式 1>,< 表达式 2>,,< 表达式 n> 逗号表达式求值过程是 : 先求表达式 1 的值, 再求表达式 2 的值, 依次下去, 最后求表达式 n 的值, 表达式 n 的即作为整个逗号表达式的值 例 2.26 逗号表达式的应用 #include<stdio.h> 44

45 void main() int a=2,b=4,c=6,x,y; y=((x=a+b),(b+c)); printf("y=%d\nx=%d\n",y,x); 程序运行结果为 : y=10 x=6 可以看出 :y 等于整个逗号表达式的值, 也就是逗号表达式中表达式 2 的值,x 是表达式 1 的值 说明 : (1) 程序中使用逗号表达式, 通常是要分别求逗号表达式内各表达式的值, 并不一定要求整个逗号表达式的值 (2) 并不是在所有出现逗号的地方都组成逗号表达式, 如在变量说明中, 函数参数表中的逗号只是用作各变量之间的间隔符 45

46 第 3 章基本语句与顺序结构程序设计 C 程序的执行部分是由语句组成的 本章介绍了 C 语言语句的五大分类 : 表达式语句, 函数调用语句, 控制语句, 复合语句, 空语句的概念 赋值语句是由赋值表达式加上分号构成的表达式语句 本章重点介绍了赋值语句的形式 : 赋值表达式 ; 及其使用 在 C 语言中, 通过调用 C 系统的标准函数实现输入输出功能 其中最基本的输入输出函数有 printf()( 格式输出 ),scanf()( 格式输入 ),putchar()( 字符输出 ),getchar()( 字符输入 ) 等 本章详细讲解了 printf()( 格式输出 ) 函数和 scanf()( 格式输入 ) 的基本格式及使用时注意的要点 讲解了 putchar()( 字符输出 ),getchar()( 字符输入 ) 的基本格式和使用 本章应重点掌握赋值语句和 printf() 函数 scanf() 函数的使用 3.1 C 语言程序的基本语句 一个 C 程序可以由若干个源程序文件构成, 一个源程序文件可以由若干个函数 预编译命令及 些变量的定义构成, 在整个程序中必须有且只能有一个主函数 ( 即 main() 函数 ) 函数体中包括数据定义和执行两部分 执行部分就是 C 语言的语句序列, 程序的功能主要是靠执行语句序列来实现的 顺序结构是 C 程序中最简单最基本的结构, 此结构中的语句按照一条接一条的顺序逐条执行 C 语言的语句可分为五类 : 表达式语句, 函数调用语句, 控制语句, 复合语句及空语句 1. 表达式语句 由一个表达式组成一个语句 一般形式为 : 表达式 ; 例 3.1 表达式构成 C 语言语句 i=0; /* 赋值表达式加分号构成语句 */ i++; /* 自增运算表达式加分号构成语句 */ a+=b+c; /* 复合赋值表达式加分号构成语句 */ a+b; /* a+b 表达式加分号构成语句 */ 注意, 位于尾部的分号 ; 是语句中不可缺少的部分, 任何表达式都可以加上分号构成语句 执行表达式语句就是计算表达式的值 46

47 上例中,i=0 不是一个语句而是一个表达式, 加上 ; 之后,i=0; 构成一个赋值语句 ;a+b 是一个表达式, 加上 ; 之后构成一个语句, 该语句执行了 a+b 的运算, 在 C 语言中是合法的, 但由于该语句并没有将 a+b 的计算结果赋给任何变量, 所以该语句并无实际意义 2. 函数调用语句 由一次函数调用加上分号 ; 组成 一般形式为 : 函数名 ( 实参列表 ) ; 它的作用是执行一次函数调用 例 3.2 函数调用构成 C 语言语句 printf(" Welcome to study C!\n"); /* 调用 C 系统标准库函数, 输出字符串 */ sin(x) ; /* 调用 C 系统标准库函数, 求 sinx*/ max(a,b,c); /* 调用自定义函数, 求 a,b,c 中的最大值 */ 关于函数的内容将在第七章函数中介绍 3. 控制语句 控制语句由规定的语句保留字组成, 用于控制程序的流程, 以实现程序的各种结构 C 语言有 9 种控制语句, 可分为以下 3 类 : (1) 条件判断语句条件语句 :if ( ) 或 if ( ) else 多分支选择语句 :switch( ) (2) 循环执行语句 while 语句 :while( ) do while 语句 :do while( ) for 语句 :for ( ) (3) 转向语句无条件转向语句 :goto 结束本次循环语句 :continue 终止执行 switch 或循环语句 :break 函数返回语句 :return 例 3.3 if_else 语句 if(x>=0) 47

48 y= x; else y= -x; 以上语句将分别在选择结构和循环结构等有关章节中介绍 4. 复合语句 把多个语句用括号 括起来组成的一个语句称复合语句, 又称为分程序或语句块 在语法上将复合语句看成是单条语句, 而不是多条语句 如下列程序段 : u= -b/2a; v=sqrt(x*x-4ac)/2a; x1=u+v; x2=u-v; printf( %f%f\n,x1,x2); 是一条复合语句 复合语句内的各条语句都必须以分号 ; 结尾, 注意, 在括号 外不需加分号 组成复合语句的语句数量不限, 如 : char c; c=65; putchar(c); 也是一条复合语句, 输出字符 A, 从这个例子中可以看出, 在复合语句中不仅有执行语句, 还可以说明变量 复合语句组合多个子语句的能力及采用分程序定义局部变量的能力是 C 语言的重要特点, 它增强了 C 语言的灵活性, 同时还可以按层次使变量作用域局部化, 使程序具有模块化结构 5. 空语句 仅由一个分号 ; 组成的语句 空语句不执行任何操作 空语句的使用一般有两种情况, 一是在循环语句中使用空语句提供一个不执行操作的空循环体 ; 二是为有关语句提供标号, 用以说明程序执行的位置 在程序设计初期, 有时需要在某个位置加一个空语句来表示存在一条语句, 以待之后进一步完善 例 3.4 空语句在循环中的作用 while (getchar( )!= '\n' ) ; /* 空语句 */ 48

49 该循环语句的功能是从键盘输入一个字符, 只要键盘输入的字符不是回车换行 ( \n ) 则继续输入, 直到输入的字符为回车换行为止 这里的循环体由空语句构成, 表示循环体不执行任何操作 3.2 赋值语句 赋值语句是由赋值表达式加上分号构成的表达式语句 一般形式为 : 赋值表达式 ; 赋值语句的功能和特点与赋值表达式相同 它是程序中使用最多的语句之一 当执行赋值语句时, 会完成计算和赋值的操作 在赋值语句的使用中需要注意以下几点 : 1. 在赋值符 = 右边的表达式也可以又是一个赋值表达式, 有如下形式 : 变量 = 变量 = = 表达式 ; 例如,a=b=c=d=5; 是一个合法的赋值语句 按照赋值运算符的右结合性, 该语句实际上等效于 : d=5; c=d; b=c; a=b; 2. 复合赋值表达式也可构成赋值语句 如 a+=a=2; 是一个合法的赋值语句 该语句实际上等效于 : a=2; a=a+a; 3. 在变量说明中给变量赋初值和赋值语句是有区别的 给变量赋初值是变量说明的一部分, 赋初值变量与其后的其它同类型变量之间用逗号分开, 而赋值语句则必须用分号结尾 4. 在变量说明中, 不允许连续给多个变量赋初值 下述变量说明是非法的 : int a=b=c=5; ( 错误, 变量初始化不能连续赋值 ) 应该写为 : int a=5,b=5,c=5; ( 正确 ) 而赋值语句允许连续赋值 :a=b=c=5; ( 正确 ) 5. 赋值表达式和赋值语句的区别是 : 赋值表达式是一种表达式, 它可以出现在任何允许表达式出现的地方, 而赋值语句则不能 如 : if((a=b)>0) c=a; 是正确的 if((a=b;)>0) c=a; 是错误的 因为 if 的条件中不允许出现赋值语句 下述语句是合法的 :if((x=y+5)>0) z=x; 语句的功能是, 若表达式 x=y+5 大于 0 则 z=x 下述语句是非法的:if((x=y+5;)>0) z=x; 因为 x=y+5; 是语句, 不能出现在表达式中 49

50 3.3 数据的输入输出 把数据从计算机的内部送到计算机的外部设备上的操作称为 输出 例如把计算机的运算结果显示在屏幕上 或者打印在纸上 或者送到磁盘上保存起来等操作都是输出操作 ; 反之, 从计算机的外部设备 ( 如键盘 磁盘等 ) 上将数据送入到计算机内部的操作则称为 输入 在 C 语言中, 所有的数据输入 / 输出操作都是通过对标准库函数的调用来完成的 其功能是按用户指定的格式进行数据输入 / 输出操作 输入和输出功能是一个完整的程序必不可少的 C 语言本身没有提供输入输出语句, 而是通过调用 C 系统的标准函数来实现输入输出功能的 其中最基本的输入输出函数有格式输入输出函数 : printf()( 格式输出 ),scanf()( 格式输入 ), 其关键字最后一个字母 f 即为 格式 (format) 之意, 以及字符输入输出函数 :putchar()( 字符输出 ),getchar()( 字符输入 ) 等 格式输入输出函数 (printf 函数和 scanf 函数 ) 1.printf 函数 printf 函数称为格式输出函数, 其功能是按格式控制字符串规定的格式, 向指定的输出设备 ( 一般为显示器 ) 输出在输出表列中列出的各输出项 printf 函数是一个标准库函数, 它的函数原型在头文件 stdio.h 中 但在 BC31 中系统中, 可以在使用 printf 函数之前不包含 stdio.h 文件 一般形式 :printf( 格式控制字符串, 输出表列 ) (1) 输出表列是由各输出项组成的, 各输出项之间用逗号, 分隔, 输出项可以是任意合法的表达式 如 printf( %d,%d,a,b+c); 其中 a,b+c 就是输出表列, 包含二个输出项 a 和 b+c, 他们之间用逗号, 分隔 有时,printf 函数中无输出表列, 只有格式控制字符串 如 printf( this a C Program\n ); (2) 格式控制字符串格式控制字符串用于指定输出格式 由格式说明和普通字符两部分组成 格式控制字符串用双引号 引起 1 普通字符对于普通字符, 执行时照原样输出, 一般起提示作用 如 printf( a+b=%d,c); 其中 a+b= 是普通字符 普通字符可以根据需要来使用, 不是必须项 2 转义字符 50

51 用于在程序中描述键盘上没有的字符或某个具有复合功能的控制字符, 如 /n, 或者 /007 等 3 格式说明格式说明是以 % 开头的字符串, 在 % 后面跟有各种格式字符, 以说明输出数据的类型 形式 长度 小数位数等 如 %d 表示按十进制整型输出, %ld 表示按十进制长整型输出, %c 表示按字符型输出等 格式说明的一般形式为 :%[< 修饰符 >] 格式字符符号 % 用来说明后面是格式字符 (a) 格式字符规定了对应输出项的输出格式 常用的格式字符见表 3-1 表 3-1 printf 格式字符格式字符意义 d 以十进制形式输出带符号整数 ( 正数不输出符号 ) o 以八进制形式输出无符号整数 ( 不输出前缀 0) x,x 以十六进制形式输出无符号整数 ( 不输出前缀 0x) u 以十进制形式输出无符号整数 f 以小数形式输出单 双精度实数 e,e 以指数形式输出单 双精度实数 g,g 以 %f%e 中较短的输出宽度输出单 双精度实数 c 输出单个字符 s 输出字符串 例 3.5 printf 函数的应用 : 将整数分别按十进制 八进制 十六进制和无符号数形式格式输出 #include <stdio.h> void main() int a=65535; int b= -1; printf( %d,%o,%x,%u,a,a,a,a); printf( %d,%o,%x,%u,b,b,b,b); 输出结果 : -1,177777,ffff, ,177777,ffff,65535 例 3.6 printf 函数的应用 : 将整数分别按整数格式和字符型格式输出 #include <stdio.h> void main() 51

52 int i=65; char c= A ; printf( %d,%d,i,c); printf( %c,%c,i,c); 输出结果 : 65,65A,A (b) 修饰符在格式说明中, 除了必须有格式字符外, 还可以根据具体情况使用修饰符 常用的修饰符如 3.2 所示 表 3-2 printf 的修饰符修饰符意义 - 结果左对齐, 右边填空格 m( 一个整数 ) 数据最小宽度, n( 一个整数 ) 对实数, 表示输出 n 位小数 ; 对字符串, 表示截取的字符个数 L 表示按长整型输出说明 : (1) 格式字符 %md,%mu,%mx,%mo 的形式 m 为一整数, 表示输出数据所占的列数 当 m 大于数据的实际宽度时, 在数据的左边补空格 ; 当 m 小于等于数据的实际宽度时, 按数据的实际宽度输出 如果是 %-md 的形式, 则在数据的右边补空格 (2) 格式字符 %mf,%-mf 的形式 %mf 中,m 为一整数, 表示输出数据所占的列数 ( 包括整数部分和小数部分, 小数点占一位 ) 当 m 大于数据的实际宽度时, 在数据的左边补足空格 ; 当 m 小于等于数据的实际宽度时, 按数据的实际宽度输出 如果是 %-mf 的形式, 则在数据的右边补空格 (3) 格式字符 %m.nf 的形式 m 为一整数, 表示输出数据所占的列数 ( 包括整数部分和小数部分, 小数点占一位 ), n 也为一整数, 表示输出小数的列数 当 n 大于数据的实际小数位数时, 小数部分按实际数据输出, 当 n 小于数据的实际小数位数时, 则只输出 n 位小数, 对小数部分的第 n+1 位进行四舍五入 当 m 的值大于数据的宽度时, 则在数据的左边补足空格 ; 再输出有 n 位小数的实际数据 当 m 的值小于数据的宽度时, 整数部分按实际数据的宽度输出, 小数部分按指定的 n 位输出 (4) 格式字符 %me 的形式以指数形式输出实数 m 是输出数据所占列数 标准的指数形式是 :6 位有效数字, 指数部分占 4 位, 小数点占 1 位, 共占 11 位 当 m 小于等于 11 时, 则按标 52

53 准的指数形式输出 ; 当 m 大于 11 时, 则先输出 m-11 个空格, 再按标准的指数形式输出 (5) 格式字符 %m.ne 的形式以指数形式输出实数 m 是输出数据所占列数,n 是有效数字的位数 指数部分占 4 位, 小数点占 1 位 当 m 小于等于 n+5 时, 则输出有 n 位有效数字 ( 整数部分有 1 位非 0 数字 ) 的指数形式的实际数据 ; 当 m 大于 n+5 时, 则先输出 m-(n+5) 个空格, 再输出有 n 位有效数字 ( 整数部分有 1 位非 0 数字 ) 的指数形式的实际数据 (6) %s,%ms,%m.ns %s: 按实际长度输出字符串 ;%ms: 输出的字符串占 m 列, 当 m 小于等于字符串的实际长度时, 按实际数据输出 ; 当 m 大于字符串的实际长度时, 先输出 m- 实际长度个空格, 再按实际数据输出 %m.ns: 输出字符串左端 n 个字符, 整个字符数据占 m 列 当 m 小于等于 n 时, 则输出字符串数据左端的 n 个字符 ; 当 m 大于 n 时, 则先输出 m-n 个空格, 再输出字符串数据左端 n 个字符 例 3.7 修饰符在 printf() 函数中的使用 #include <stdio.h> void main() int a=123; float f1= ,f2=678.9; printf("%d, %6d,%-6d,%2d\n",a,a,a,a); printf("%f,%10.4f,%3.2f\n",f1,f1,f1); printf("%e,%e\n",f1,f2); printf("%8e,%14e\n",f1,f1); printf("%10.7e,%10.3e\n",f1,f1); 运行结果如下图 : 123, 123,123, , , e+01, e e+01, e e+01, 1.235e+01 ( 注 : 其中空格用 代替 ) 程序运行说明 : (1) 执行 :printf( %d, %6d,%-6d,%2d\n,a,a,a,a); *%d 按实际长度 3 列输出 ; %6d 规定数据宽度为 6 列, 但数据的实际长度为 3 列, 所以在数据的左边补三个空格 ; 53

54 %-6d 规定数据宽度为 6 列, 但使用了左对齐符 -, 所以在数据的右边补三个个空格 ; %2d 规定数据宽度为 2 列, 但数据的实际长度为 3 列, 大于规定的宽度, 这时按实际长度 3 列输出 (2) 执行 :printf( %f,%10.4f,%3.2f\n,f1,f1,f1); %f 按普通记数法输出 f1 的值, 整数部分原样输出, 小数部分保留 6 位, 不足部分补 0; %10.4f 指定整个数据输出的宽度是 10 列, 小数部分占 4 列 现小数部分的数据有 5 位, 所以, 最后一位采用四舍五入的原则 %3.2f 指定整个数据输出的宽度是 3 列, 整数部分占 1 列, 小数部分占 2 列 现整数部分的数据有 2 位, 大于指定的数据宽度, 所以整数部分照原样输出, 小数部分保留 2 位, 对小数点后的第三位采用四舍五入的原则 (3) printf( %e,%e\n,f1,f2); %e 按指数方式输出 f1 的值, 采用标准指数形式,6 位有效数字, 指数部分占 4 位, 小数点占 1 位, 共占 12 位 现实际数据的有效数据为 7 位, 根据四舍五入的原则进行截取 %e 按指数方式输出 f2 的值, 采用标准指数形式,6 位有效数字, 指数部分占 4 位, 小数点占 1 位, 共占 12 位 现实际数据的有效数据为 4 位, 不够 6 位, 则以 0 补足 (4) printf( \ %8e,%14e\n,f1,f1); %8e 按指数方式输出 f1 的值, 采用标准指数形式,6 位有效数字, 指数部分占 4 位, 小数点占 1 位, 共占 12 位 现 m=8, 小于 12, 则按标准的指数形式输出 ; 实际数据的有效数据为 7 位, 根据四舍五入的原则进行截取 %14e 按指数方式输出 f1 的值, 采用标准指数形式,6 位有效数字, 指数部分占 4 位, 小数点占 1 位, 共占 12 位 现 m=14, 大于 12, 则先输出 2 个空格, 再按标准的指数形式输出 (5) printf( %10.7e,%10.3e\n,f1,f1); %10.7e:m=10,n=7,m<n+5, 输出有 7 位有效数字 ( 整数部分有 1 位非 0 数字 ) 的指数形式的实际数据 ; %10.3e:m=10,n=3,m>n+5, 输出 1 个空格, 再输出有 3 位有效数字 ( 整数部分有 1 位非 0 数字 ) 的指数形式的实际数据 例 3.8 字符串的输出 #include <stdio.h> void main() printf("%s,%.3s,%10s,%10.3s, %-10.3s \n","computer", "computer", "computer", "computer", "computer"); 54

55 输出结果如下 : computer,com, computer, com,com 2. 使用 printf 函数要注意的几点 : (1) 格式控制字符串和各输出项在数量和类型上应该一一对应 例 3.9 使用 printf 函数时, 格式控制字符串和各输出项应一一对应 #include <stdio.h> void main() int a=1,b=2,c=3; printf( %d,%d,%d,%d\n,a,b,c); printf( %d,%d,%d,a,b,c,a+b+c); 程序运行结果为 : 1,2,3,1450 1,2,3 结果不正确的原因是格式控制字符串和各输出项在数量或类型上不一一对应 (2) 格式控制字符串不同, 输出的结果也不相同 (3) 除 X,E,G 外, 其他格式字符必须用小写字母 (4) 在格式控制字符串中可包含转义字符 (5) 不同的编译系统对输出表列中的求值顺序不一定相同 可以从左到右, 也可从右到左 Turbo C 是按从右到左进行的 例 3.10 不同的编译系统对输出表列中的求值顺序不一定相同 #include <stdio.h> void main() int i=8; printf("%d\n%d\n%d\n%d\n%d\n%d",++i,--i,i++,i--,-i++,-i--); 输出结果 :

56 因为 printf 函数对输出表中各量求值的顺序是自右至左进行的 在式中, 先对最后一项 -i-- 求值, 结果为 -8, 然后 i 自减 1 后为 7 再对 -i++ 项求值得 -7, 然后 i 自增 1 后为 8 再对 i-- 项求值得 8, 然后 i 再自减 1 后为 7 再求 i++ 项得 7, 然后 I 再自增 1 后为 8 再求 --i 项,i 先自减 1 后输出, 输出值为 7 最后才求输出表列中的第一项 ++i, 此时 i 自增 1 后输出 8 但是必须注意, 求值顺序虽是自右至左, 但是输出顺序还是从左至右, 因此得到上述输出结果 例 3.11 转义符在 printf() 函数中的使用 #include <stdio.h> void main() int a=1234,b=5678; printf( a=%d\t b=%d\n,a,b); /* 转义字符 \t 的作用是产生 <Tab> 键的作用, 使 b 的输出从下一个水平制表位开始 */ printf( a=%d\t\bb=%d\n,a,b); /* 转义字符 \b 的作用是产生退格的作用, 所以, 两个转义字符 \t\b 的作用是使 b 的输出从下一个水平制表位的前一位开始 */ printf( \ %s\ \n, CHINA );/* 转义字符 \ 的作用是输出单引号 */ 该程序的运行结果为 : a=1234 b=5678 a=1234 b=5678 CHINA 3.scanf 函数 scanf 函数称为格式输入函数, 其功能是按格式控制字符串规定的格式, 从指定的输入设备 ( 一般为键盘 ) 上把数据输入到指定的变量之中 scanf 函数是一个标准库函数, 它的函数原型在头文件 stdio.h 中 但作为特例, 可以在使用 scanf 函数之前不包含 stdio.h 文件 scanf( 格式控制字符串, 地址表列 ); (1) 地址表列地址表列中给出各变量的地址 地址是由地址运算符 & 后跟变量名组成的 例如,&a,&b,&c 分别表示变量 a b 和 c 的地址 其中 & 是取地址运算符 这个地址是在编译连接时系统分配给变量 a,b,c 的地址 地址表列是由各地址项组成的, 各地址项之间用逗号, 分隔 如 : scanf( %d,%d,%d,&a,&b,&c); (2) 格式控制字符串 56

57 scanf 中的 格式控制字符串 同 printf 函数 常用的格式字符见表 3.3 表 3-3 scanf 格式字符格式字符意义 d,i 以十进制形式输入带符号整数 o 以八进制形式输入无符号整数 x,x 以十六进制形式输入无符号整数 u 以十进制形式输入无符号整数 f 以小数形式或指数形式输入实数 e,e,g,g 同 f, 他们之间可以相互替换 c 输入单个字符 s 输入字符串 例 3.12 scanf() 函数的使用 #include <stdio.h> void main() int a,b,c; printf("input a,b,c\n"); scanf("%d%d%d",&a,&b,&c); printf("a=%d,b=%d,c=%d",a,b,c); 说明 : 1 scanf 函数是一个标准库函数, 它的函数原型在头文件 stdio.h 中 但作为特例, 可以在使用 scanf 函数之前不包含 stdio.h 文件 2 当程序运行到 scanf 语句时, 则等待用户输入数据 该例中, 因为没有非格式字符在 %d%d%d 之间作输入时的间隔, 所以可以使用一个或多个空格 回车键作为每两个输入数之间的间隔 scanf 中的 格式控制字符串 同 printf 函数 scanf 常用的修饰符见表 3-4 表 3-4 scanf 修饰符修饰符意义 * 表示该输入项读入后不赋予相应的变量, 即跳过该输入值 h 表示按短整型输入 l 表示按长整型输入宽度用十进制整数指定输入的宽度 ( 即字符数 ) 例如 :scanf("%d,%*d,%d",&a,&b); 当输入为 :1 2 3 时, 将 1 赋予 a,2 输入之后没有赋给任何变量, 被跳过,3 赋予 b, 即 a=1, b=3; scanf("%4d",&i); 输入 , 因为指定宽度为 4, 所以, 只把 1234 赋予 57

58 变量 i, 其余部分被截去, 即 i= 使用 scanf 函数要注意的几点 : (1) scanf 函数中无精度控制 例如 scanf("%5.2f",&a); 是无效的 (2) scanf 函数中要求给出变量地址, 如给出变量名则会出错 例如 scanf("%d",a); 是非法的, 正确的为 :scnaf("%d",&a); (3) 在输入多个数值数据时, 若 格式控制字符串 中没有非格式字符作输入数据之间的间隔, 则可用空格,TAB 或回车作间隔 当碰到空格,TAB, 回车或非法数据 ( 如对 %d 输入 135A 时,A 为非法数据 ) 时认为该数据结束 (4) 在输入字符数据时, 若格式控制串中无非格式字符, 则认为所有输入的字符均为有效字符 例如 :scanf("%c%c%c",&a,&b,&c); 输入为 : d e f 则把 'd' 赋给变量 a, 变量 b 和变量 c 的值为空格 只有当输入为 :def 时, 才会把 'd' 赋给变量 a,'e' 赋予给变量 b,'f' 赋给变量 c 如果在格式控制中加入空格作为间隔, 如 :scanf ("%c %c %c",&a,&b,&c); 则输入时各数据之间可加空格 例 3.13 在 scanf() 函数中输入字符数据 #include <stdio.h> void main() char a,b; printf("input character a,b\n"); scanf("%c%c",&a,&b); printf("%c%c\n",a,b); 输入 :A B 输出 :A 输入 :AB 输出 :AB ( 注 : 程序输入输出结果中, 输入部分用下划线标明 ) 若程序改为 : #include <stdio.h> void main() char a,b; printf("input character a,b\n"); scanf("%c %c",&a,&b); 58

59 printf("\n%c%c\n",a,b); 则输入的数据之间可以有空格间隔, 并且必须与程序中空格的个数匹配 (5) 如果格式控制串中有普通字符则输入时也要输入该普通字符 例 3.14 在 scanf() 函数中普通字符的使用 #include <stdio.h> void main() char a,b,c; printf("input character a,b,c\n"); scanf("a=%c,b=%c,c=%c",&a,&b,&c); printf("\n%c%c%c\n",a,b,c); 输入应为 :a=l,b=m,c=n 其中 a=, b=, c= 是普通字符, 应照原样输入 字符输入输出函数 (putchar 函数和 getchar 函数 ) 1. putchar 函数 putchar 函数是字符输出函数, 功能是在显示器上输出一个字符 一般形式为 :putchar(c); 其中 :c 可以是字符型变量或整型变量, 也可以是字符型常量 例如 : char c= A ; putchar(c); /* 输出字符变量 c 的值 : 大写字母 A*/ putchar( b ); /* 输出字符常量 b*/ putchar('\n'); /* 输出换行符 */ 需要注意的是, 使用 putchar 函数前必须要包含头文件 stdio.h 例 3.15 putchar 函数的应用 #include <stdio.h> void main() char c1='a',c2='b',c3='c'; putchar(c1);putchar(c2);putchar(c3);putchar('\t'); putchar(c1);putchar(c2); 59

60 putchar('\n'); putchar(c2);putchar(c3); 程序的运行结果为 : ABC AB BC 2. getchar 函数 getchar 函数是字符输入函数, 功能是从键盘上输入一个字符 一般形式 :getchar(); 例如 : char c; c=getchar(); 运行时输入 A, 则将输入的字符 A 赋予字符变量 c 需要注意的是 : (1) 使用 putchar 函数前必须要包含头文件 stdio.h (2)getchar 函数只能接受单个字符, 输入数字也按字符处理 输入多于一个字符时, 只接收第一个字符 (3) 通常把输入的字符赋予一个字符变量, 构成赋值语句 (4) 在 Turbo C 下运行含 getchar 函数的程序时, 将退出 Turbo C 屏幕进入用户屏幕等待用户输入 输入完毕再返回 Turbo C 屏幕 例 3.16 getchar 函数的应用 #include <stdio.h> void main() char c; printf("input a character\n"); c=getchar(); putchar(c); 该程序的功能是输入一个字符, 再将输入的字符输出 若输入 A, 程序运行结果为 A, 若输入 AB, 程序运行结果也为 A 60

61 第 4 章选择结构程序设计 选择结构是程序设计的三种基本结构之一, 通过判定给定条件是否成立, 从给定的各种可能中选择一种操作 而实现选择程序设计的关键就是要理清条件与操作之间的逻辑关系 本章介绍了用 C 语言实现选择结构程序设计的方法 C 语言提供了两种语句 : if 条件语句和 switch 多分支选择语句用以实现选择程序的设计, 其中,if 语句又分三种结构 在程序设计过程中, 根据各语句的结构特点, 灵活应用 应当注意选择是有条件的 在程序设计中, 条件通常是用关系表达式或逻辑表达式表示的 关系表达式可以进行简单的关系运算, 逻辑表达式则可以进行复杂的关系运算 同时还应该注意, 在 C 程序中数值表达式和字符表达式也可以用来表示一些简单的条件 4.1 用 if 语句实现选择结构 用 C 语言求解实际问题时, 经常会遇到需要进行判断的情况 例如求 y= x, 当 x 大于等于零时,y=x; 当 x 小于零时,y= -x; 像这样根据条件判定其后的动作, 在 C 语言中可以使用条件语句来实现 C 语言中 if 条件语句有三种结构形式, 它们是 :if 结构 ;if-else 结构 ;if-else 嵌套结构 if 语句的三种形式 if 语句是条件语句, 它是通过对给定条件的判定, 以决定是否执行给定的操作 1. 单分支结构单分支结构的 if 语句, Y 表达式 N 一般格式为 : if ( < 表达式 > ) 语句 A 其中 : 表达式表示的是一个条件 语句 A 该语句执行过程是 : 先判断条件 ( 表达式 ), 若条 件成立, 就执行语句 A; 否则, 直接执行 if 后面的语 句 该结构的方框图 ( 流程图 ) 如图 4-1 所示 例如 : 图

62 if (a < b) printf( %d \n,a); 若条件 a<b 成立, 就输出 a 的值 注意 : 单分支结构只有在条件为真时, 才执行给定的操作, 如果条件为假, 则 不执行任何操作 例 4.1 将 a,b 两数中的大数放入 a 中 分析 : 两数比较, 要么 a>b, 要么 a<b, 为后者时, 需将 b 的值放入 a 中 ( 即执行 a=b 赋值语句 ) 程序如下 : #include <stdio.h> void main() float a,b; printf( 按格式 %%f%%f 送数 :\n ); scanf( %f%f,&a,&b); if (a < b) a = b ; printf( %.2f \n,a ); 程序运行如下 : 按格式 %%f%%f 送数 : 注 :C 语言编辑器 BC31 的编辑环境中不能显示中文, 上例中采用中文是为了方便程序的阅读, 中文在 BC31 编辑器中的显示为乱码, 若想在 BC31 环境下使用注释提示或者输出常量字符串, 建议使用英文 例 4.2 设 x 与 y 有如下函数关系, 试根据输 入的 x 值, 求出 y 的值 x 7 ( x > 0) y = 2 ( x = 0) 2 3x ( x < 0) 分析 : 依题意知 : 当 x > 0 时,y = x-7; 当 x = Y y=x-7 Y x>0 x=0 N N 0 时,y = 2; 当 x < 0 时,y = 3*x*x; 其程序流程图见图 4-2 y=2 程序如下 : #include <stdio.h> void main() Y x<0 N y=3*x*x 62 图 4-2

63 float x,y; printf( \n ); scanf( %f,&x); if (x > 0) y = x-7; if (x = 0) y = 2; if (x < 0) y = 3*x*x; printf( %.2f \n,y ); 程序运行如下 : 双分支结构 双分支结构 if-else 的一般格式为 : Y 语句 A 表达式 1 N 语句 B if ( < 表达式 > ) 语句 A else 语句 B 图 4-3 其中 : 表达式 : 指的是一个条件 语句 A 称为 if 子句, 语句 B 称为 else 子句 该语句执行过程是 : 先判断条件 ( 表达式 ), 若条件成立, 就执行语句 A; 否则, 执行语句 B 即一定会执行语句 A 和语句 B 中的一句, 且只能执行其中的一句 该结构的方框图 ( 流程图 ) 如图 4-4 所示 注意 : 双分支结构可在条件为真或假时执行指定的不同操作 例 4.3 判断点 ( X, Y ) 是否在如图所示的圆环内 分析 : 判断点 (x,y) 是否在圆环内, 只需看它是否满 足条件 a ( x + y ) b 即可 程序如下 : b #include <stdio.h> a void main() float x,y; int a,b; printf( 按格式 %%f%%f 给 x,y 赋值 : ); 图 4-4 scanf( %f%f,&x,&y); printf( 输入圆环的内 外半径 :\n ); scanf( %d%d,&a,&b); if ( (x*x + y*y) >= a*a && (x*x + y*y) <= b*b) 63

64 printf( 点 (%.2f,%.2f) 是圆环内的点 \n,x,y); else printf( 点 (%.2f,%.2f) 不是圆环内的点 \n,x,y); 程序运行如下 : 按格式 %f%f 给 x,y 赋值 :4.8 5 输入圆环的内 外半径 : 4 8 点 (4.80,5.00) 是圆环内的点 3. 多分支结构 else if 结构是多分支的判断结构 它的一般格式为 : if ( 表达式 1) 语句 1 ; else if ( 表达式 2 ) 语句 2 ; else if ( 表达式 3 ) 语句 3 ; else if ( 表达式 n-1 ) 语句 n-1 ; else 语句 n ; 其中 : 表达式指的是一个条件 该语句执行过程是 : 先判断条件 1( 表达式 1), 若条件 1 成立, 就执行语句 1 后, 退出该 if 结构 ; 否则, 再判断条件 2( 表达式 2), 若条件 2 成立, 则执行语句 2 后, 退出该 if 结构 ; 否则, 再判断条件 3( 表达式 3), 若条件 3 成立, 则执行语句 3 后, 退出该 if 结构 ; 该结构的方框图 ( 流程图 ) 如图 4-5 所示 : 表达式 1 假 表达式 2 假 表达式 3 假... 表达式 n-1 假 真真真真 语句 1 语句 2 语句 3... 语句 n-1 语句 n 64

没有幻灯片标题

没有幻灯片标题 第 2 章 C 语言的基本数据类型与表达 式 2. 1 C 语言的语法基础 2. 2 C 语言的基本数据类型 2. 3 常量和变量 2. 4 运算符与表达式 2. 5 数据类型转换 用 第 2 章 C 语言的基本数据类型与表达 2.1 C 语言的语法基础 2. 1. 1 C 语言字符集 式 C 语言的基本符号可分 4 个类, 归纳如下 : (1) 英文字母 : 大小写各 26 个, 共计 52 个

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

<4D F736F F D205A572D2D A1AAA1AAD4ACE7F42D43D3EFD1D4CAB5D1B5BDCCB3CC2E646F6378>

<4D F736F F D205A572D2D A1AAA1AAD4ACE7F42D43D3EFD1D4CAB5D1B5BDCCB3CC2E646F6378> 第 1 部分 Visual Studio 6.0 开发环境介绍 本书以 Visual C++ 6.0 作为 C 源程序的实践开发环境, 本章将首先介绍 Visual C++ 6.0 环境的基本操作, 包括 Visual C++ 6.0 的安装和启动,C 源程序的编辑 运行与调试 1.1 安装与启动 Visual C++ 6.0 MSDN Visual C++ 6.0 1.1 Microsoft Visual

More information

新版 明解C言語入門編

新版 明解C言語入門編 328, 4, 110, 189, 103, 11... 318. 274 6 ; 10 ; 5? 48 & & 228! 61!= 42 ^= 66 _ 82 /= 66 /* 3 / 19 ~ 164 OR 53 OR 164 = 66 ( ) 115 ( ) 31 ^ OR 164 [] 89, 241 [] 324 + + 4, 19, 241 + + 22 ++ 67 ++ 73 += 66

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 第 1 章程序设计和 C 语言 1.1 什么是计算机程序 1.2 什么是计算机语言 1.3 C 语言的发展及其特点 1.4 最简单的 C 语言程序 1.5 运行 C 程序的步骤与方法 1.6 程序设计的任务 1.1 什么是计算机程序 程序 : 一组计算机能识别和执行的指令 只要让计算机执行这个程序, 计算机就会自动地 有条不紊地进行工作 计算机的一切操作都是由程序控制的, 离开程序, 计算机将一事无成

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

《C语言程序设计》第2版教材习题参考答案

《C语言程序设计》第2版教材习题参考答案 教材 C 语言程序设计 ( 第 2 版 ) 清华大学出版社, 黄保和, 江弋编著 2011 年 10 月第二版 ISBN:978-7-302-26972-4 售价 :35 元 答案版本 本习题答案为 2012 年 2 月修订版本 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p = &a A. *p = *a B. p = *a C.p = &a D. *p =

More information

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 TEMPLATE 1 Template 描述 使用模板函数求最大值 使用如下 main 函数对程序进行测试 int main() { double a, b; cin >> a >> b; cout c >> d; cout

More information

林子雨《C语言程序设计》讲义PPT

林子雨《C语言程序设计》讲义PPT C 语言程序设计 厦门大学计算机科学系 2012-02-26 林子雨 ziyulin@xmu.edu.cn 2012-02-26 厦门大学非计算机专业本科生公共课 (2011-2012 第 2 学期 ) C 语言程序设计 林子雨厦门大学计算机科学系 E-mail: ziyulin@xmu.edu.cn 个人主页 :http://www.cs.xmu.edu.cn/linziyu 课程提要 第一章绪论

More information

山东师大数学科学学院

山东师大数学科学学院 山东师大数学科学学院 教材 参考书 教材 C 程序设计 ( 第三版 ) 辅导书 C 程序设计实训教程 谭浩强编著 杨杰臧文科 主要内容 第一章 C 语言概述第二章数据类型 运算符与表达式第三章顺序结构程序设计第四章选择结构程序设计第五章循环结构程序设计第六章数组第七章函数第八章指针第九章结构体与共用体第十章文件 上机实习 上机地点 : 上机时间 : 上机内容 (1) 对课堂所讲内容进行验证性实验 ;

More information

网C试题(08上).doc

网C试题(08上).doc 学习中心 姓名 学号 西安电子科技大学网络与继续教育学院 高级语言程序设计 (C) 全真试题 ( 闭卷 90 分钟 ) 题号一二三总分 题分 60 20 20 得分 一 单项选择题 ( 每小题 3 分, 共 60 分 ) 1.C 语言程序的基本单位是 A) 程序行 B) 语句 C) 函数 D) 字符 2. 下列四组选项中, 均是不合法的用户标识符的选项是 A)A B)getc C)include D)while

More information

nooog

nooog C : : : , C C,,, C, C,, C ( ), ( ) C,,, ;,, ; C,,, ;, ;, ;, ;,,,, ;,,, ; : 1 9, 2 3, 4, 5, 6 10 11, 7 8, 12 13,,,,, 2008 1 1 (1 ) 1.1 (1 ) 1.1.1 ( ) 1.1.2 ( ) 1.1.3 ( ) 1.1.4 ( ) 1.1.5 ( ) 1.2 ( ) 1.2.1

More information

《计算概论》课程 第十九讲 C 程序设计语言应用

《计算概论》课程 第十九讲  C 程序设计语言应用 计算概论 A 程序设计部分 字符数组与字符串 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 字符数组的定义 #include int main() char a[10] = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ; for (int i = 0; i < 10; i++) cout

More information

新・解きながら学ぶC言語

新・解きながら学ぶC言語 330!... 67!=... 42 "... 215 " "... 6, 77, 222 #define... 114, 194 #include... 145 %... 21 %... 21 %%... 21 %f... 26 %ld... 162 %lf... 26 %lu... 162 %o... 180 %p... 248 %s... 223, 224 %u... 162 %x... 180

More information

Microsoft Word - 正文.doc

Microsoft Word - 正文.doc 第 2 章 Java 语言基础 通过本章的实践, 要掌握 Java 中的标识符 关键字 常量, 熟练掌握算术 关 系 逻辑 条件 赋值 位运算符的使用, 掌握简单顺序结构的程序设计 2.1 典型习题解答 2.1 Java 中怎样进行注释? 解答 Java 语言中的注释有 3 种形式 : (1) 单行 : // (2) 多行 : /* */ (3) 文档注释 : /** */ 第三种形式是第二种形式的变形,

More information

2015年计算机二级(C语言)模拟试题及答案(三)

2015年计算机二级(C语言)模拟试题及答案(三) 2016 年计算机二级 (C 语言 ) 模拟试题及答案 (3) 1.( A ) 是构成 C 语言程序的基本单位 A 函数 B 过程 C 子程序 D 子例程 2.C 语言程序从 ( C ) 开始执行 A 程序中第一条可执行语句 B 程序中第一个函数 C 程序中的 main 函数 D 包含文件中的第一个函数 3 以下说法中正确的是( C ) A C 语言程序总是从第一个定义的函数开始执行 B 在 C 语言程序中,

More information

计算概论A B03 C++语言的基本成分 - 运算成分(2)

计算概论A B03 C++语言的基本成分 - 运算成分(2) 计算概论 A 程序设计部分 C 语言的构成成分 运算成分 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn C 语言中的运算符 C 语言的运算符范围很宽 求字节数运算符 : sizeof 下标运算符 [ ] 赋值运算符 = 算术运算符 + - * / % 关系运算符 < > == >= > ~

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

第 3 章选择结构 q q q Python 中表示条件的方法 if 语句 选择结构程序设计方法

第 3 章选择结构 q q q Python 中表示条件的方法 if 语句 选择结构程序设计方法 第 3 章选择结构 q q q Python 中表示条件的方法 if 语句 选择结构程序设计方法 3.1 条件的描述 3.1.1 关系运算 Python 的关系运算符有 : =( 大于等于 ) ==( 等于 )!=( 不等于 ) 关系运算符用于两个量的比较判断 由关系运算符将两个表达式连接起来的式子就称为关系表达式, 它用来表示条件, 其一般格式为

More information

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/ 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:// 不能以数字开头 D._3_ B:// 不能用点和空格 提问 抢答 E.$anothervar C: // 不能用点和空格

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

Microsoft Word - 《C语言开发入门》课程教学大纲-2.doc

Microsoft Word - 《C语言开发入门》课程教学大纲-2.doc C 语言开发入门 课程教学大纲 ( 课程英文名称 ) 课程编号 :201409210011 学分 :5 学分学时 :60 学时 ( 其中 : 讲课学时 :37 学时上机学时 :23 学时 ) 先修课程 : 计算机导论后续课程 :C++ 程序设计适用专业 : 信息及其计算机相关专业开课部门 : 计算机系 一 课程的性质与目标 C 语言开发入门 是计算机各专业必修的基础课程, 是数据结构 C++ Java

More information

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023) ( CIP) /. :, 2005. 2 ( ) ISBN 7-5624-3339-9.......... TP311. 1 CIP ( 2005) 011794 : : : : * : : 174 ( A ) :400030 : ( 023) 65102378 65105781 : ( 023) 65103686 65105565 : http: / /www. cqup. com. cn : fxk@cqup.

More information

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式] Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 4.4.1 逻辑运算符及其优先次序 3 种逻辑运算符 : &&( 逻辑与 ) ( 逻辑或 )!( 逻辑非 ) && 和 是双目 ( 元 ) 运算符! 是一目 ( 元 ) 运算符 逻辑表达式 用逻辑运算符将关系表达式或其他逻辑量连接起来的式子 4.4.1 逻辑运算符及其优先次序 判断年龄在 13 至 17 岁之内? age>=13 && age

More information

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3 浙江大学 C 程序设计及实验 试题卷 2002-2003 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:30-10:30 注意 : 答题内容必须写在答题卷上, 写在本试题卷上无效 一. 单项选择题 ( 每题 1 分, 共 10 分 ) 1. 下列运算符中, 优先级最低的是 A.

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 计算概论 A 课程程序设计部分 C++ 语言基本成分 数据成分 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 再谈, 我们的进度安排 我们的学习过程 感性理性函数指针等 数据成分运算成分控制成分数组字符串 结构化的程序递归 传统学习过程 数据类型与表达式 输入输出 关系运算 控制语句 函数数组指针结构体 作业练习 感性认识作业练习 ( 以抄程序为主 ) 正常作业练习

More information

试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期 " 开放本科 " 期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默

试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期  开放本科  期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默 试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期 " 开放本科 " 期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默认扩展名为 ( ) A. cpp B. c C. exe D. obj 2. 设 x 和 y 均为逻辑值,

More information

狭义上 算法指的是计算机算法 即对特定问题求解步骤的一种描述 它是计算机指令的有限序列 其中每一条指令表示计算机可以进行的一个或多个操作 人们利用计算机编写程序处理各种不同的问题 必须先对各类问题进行分析 确定解决问题的具体方法和步骤 即算法 然后编制好一组让计算机执行的指令即程序 交给计算机 让计

狭义上 算法指的是计算机算法 即对特定问题求解步骤的一种描述 它是计算机指令的有限序列 其中每一条指令表示计算机可以进行的一个或多个操作 人们利用计算机编写程序处理各种不同的问题 必须先对各类问题进行分析 确定解决问题的具体方法和步骤 即算法 然后编制好一组让计算机执行的指令即程序 交给计算机 让计 简单 程序设计 语言是结构化的程序设计语言 非常适合编写结构化的程序 结构化的程序通常包括数据的描述和操作的描述两方面的内容 数据的描述是指程序中数据的类型和数据的组织形式 即数据结构 前面介绍的数据类型 常量 变量及后续章节的数组 结构体等都属于这方面的内容 操作的描述是指程序中对数据的操作方法和操作步骤 也就是算法 数据的描述和操作的描述是程序设计过程必不可少的组成部分 数据是操作的对象 操作的目的是对数据进行加工处理

More information

C 语言程序设计 ( 第 33 版 )) #define PI // 下面 2 行是函数的原型说明部分 double sup_area(double r); double volume(double r); // 下面是主函数部分 { double a=-5,b,c,d; b=fab

C 语言程序设计 ( 第 33 版 )) #define PI // 下面 2 行是函数的原型说明部分 double sup_area(double r); double volume(double r); // 下面是主函数部分 { double a=-5,b,c,d; b=fab 第 1 章 C 语言基础与顺序结构 学习目标 1. 掌握 C 语言程序的结构 2. 合理选用数据类型 3. 掌握算术运算符和赋值运算符 4. 掌握控制数据的输入 输出方法 5. 掌握顺序结构以及顺序结构的流程 6. 掌握 Visual C++ 6.0 集成环境的使用方法 7. 掌握转换大小写字母的方法 8. 掌握产生随机整数的方法 计算机由硬件系统和软件系统组成, 其中硬件是物质基础, 而软件是计算机的灵魂

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

C/C++ - 函数

C/C++ - 函数 C/C++ Table of contents 1. 2. 3. & 4. 5. 1 2 3 # include # define SIZE 50 int main ( void ) { float list [ SIZE ]; readlist (list, SIZE ); sort (list, SIZE ); average (list, SIZE ); bargragh

More information

<4D F736F F F696E74202D20B5DA32D5C220B5A5C6ACBBFA433531D3EFD1D4BBF9B4A1>

<4D F736F F F696E74202D20B5DA32D5C220B5A5C6ACBBFA433531D3EFD1D4BBF9B4A1> 第 2 章 单片机 C51 语言基础 2.1 C51 语言的基本知识 2.2 运算符与表达式 2.3 指针与绝对地址访问 2.4 本章小结 2.5 实训二发光二极管流水广告灯 返回首页 教学提示 随着单片机开发技术的不断发展, 目前已有越来越多 的人从普遍使用汇编语言逐渐过渡到使用高级语言开发, 其中又以 C 语言为主, 市场上几种常见的单片机均有其 C 语言开发环境 应用于 51 系列单片机开发的

More information

Microsoft Word - YYCXfm.DOC

Microsoft Word - YYCXfm.DOC C 语言程序设计 王曙燕主编曹锰副主编 北京 内容简介 本书共 13 章, 主要内容包括 C 语言的基本概念 基本语法和基本数据结构, 另外, 给出了一个小型超市管理的综合实例, 介绍了 C 语言图形程序设计的基本方法, 还简单介绍了 C++ Visual C++ 和 C# 等面向对象程序设计语言 本书注重应用性和实践性, 通过一些典型算法的解题分析及其实现给读者一些解题示范和启发 每章后面配有习题,

More information

没有幻灯片标题

没有幻灯片标题 指针作为函数参数 : 原因 : 1 需要修改一个或多个值,( 用 return 语句不能解决问题 ) 2 执行效率的角度 使用方法 : 在函数原型以及函数首部中需要声明能够接受指针值的形参, 具体的写法为 : 数据类型 * 形参名 如果有多个指针型形参, 则用逗号分隔, 例如 : void swap(int *p1, int *p2) 它说明了形参 p1 p2 是指向整型变量的指针 在函数调用时,

More information

Microsoft PowerPoint - 03.Fortran程序设计基础1

Microsoft PowerPoint - 03.Fortran程序设计基础1 简单 Fortran 90 程序的构造形式 : 第二讲 Fortran 程序设计基础 (2) [PROGRAM 程序名 ] [ 声明语句 ] [ 执行语句 ] END [PROGRAM [ 程序名 ]] 程序的书写 (P5) PROGRAM MONEY!calculate balance after interest compounded! 根据利息计算余额 REAL BALANCE, INTEREST,

More information

Microsoft PowerPoint - 01_Introduction.ppt

Microsoft PowerPoint - 01_Introduction.ppt Hello, World C 程序设计语言 第 1 章章观其大略 孙志岗 sun@hit.edu.cn http://sunner.cn prf("hello,, world\n"); 超级无敌考考你 : 如何把 hello 和 world 分别打印在两行? 2004-12-19 A Tutorial Introduction 2 hello.c 打印华氏温度与摄氏温度对照表 计算公式 : C=(5/9)(

More information

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式] 指针 Pointers 变量指针与指针变量 Pointer of a variable 变量与内存 (Variables and Memory) 当你声明一个变量时, 计算机将给该变量一个内存, 可以存储变量的值 当你使用变量时, 计算机将做两步操作 : - 根据变量名查找其对应的地址 ; - 通过地址对该地址的变量内容进行读 (retrieve) 或写 (set) 变量的地址称为变量的指针! C++

More information

ch02_Basic

ch02_Basic 主要内容 C++ 语言概述 C++ 的发展 C++ 源程序结构与书写规范 C++ 编译器和集成开发环境 C++ 编程基础 数据的简单输入输出 2 C++ 语言概述 C++ 语言概述 C++ 的发展 - C++ 是从 C 语言发展演变而来, 可以看成是 C 的超集 - 1980 年由 Bjarne Stroustrup 开发创建 - 1983 年正式取名为 C++,1989 年开始 C++ 的标准化工作

More information

实验 2 顺序结构程序设计 9 unsigned short a; a= 1; printf("%d\n",a); 运行以上程序, 查看输出的结果, 分析为什么会输出这些信息 (1) 打开 VC 创建 liti2 2.c 文件 (2) 输入以上代码并编译执行 (3) 结果如图 2 2 所示 图 2

实验 2 顺序结构程序设计 9 unsigned short a; a= 1; printf(%d\n,a); 运行以上程序, 查看输出的结果, 分析为什么会输出这些信息 (1) 打开 VC 创建 liti2 2.c 文件 (2) 输入以上代码并编译执行 (3) 结果如图 2 2 所示 图 2 实验 2 顺序结构程序设计 明符 一 实验目的 1. 掌握 C 语言基本数据类型 运算符和赋值语句 2. 变量的定义及初始化 整型 实型 字符型等基本类型变量的定义和初始化 3. 熟练使用赋值运算 算术运算等表达式, 能够编写简单顺序结构程序 4. 掌握 C 语言基本的输入输出 熟练使用标准输入 输出函数及各种数据类型的格式说 二 实验内容及步骤 例题 2.1 输入程序, 查看输出结果 (1) 参照第一章创建

More information

C/C++程序设计 - 字符串与格式化输入/输出

C/C++程序设计 - 字符串与格式化输入/输出 C/C++ / Table of contents 1. 2. 3. 4. 1 i # include # include // density of human body : 1. 04 e3 kg / m ^3 # define DENSITY 1. 04 e3 int main ( void ) { float weight, volume ; int

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 第二讲 C++ 编程基础 主要内容 C++ 语言概述 C++ 的发展 C++ 源程序结构与书写规范 C++ 编译器和集成开发环境 C++ 编程基础 数据的简单输入输出 2 C++ 语言概述 C++ 的发展 - C++ 是从 C 语言发展演变而来, 可以看成是 C 的超集 - 1980 年由 Bjarne Stroustrup 开发创建 - 1983 年正式取名为 C++,1989 年开始 C++ 的标准化工作

More information

内容简介 C 语言是一种结构化程序设计语言, 本书通过大量的实例讲解 C 语言程序设计的方法, 主要内容包括 C 语言程序的结构 数据类型 运算符和表达式 数据的输入和输出 选择结构 循环结构 数组 函数 指针 编译预处理 结构和共用体 位运算 文件等 每个单元包括小结 实验 习题等 本书可作为高等

内容简介 C 语言是一种结构化程序设计语言, 本书通过大量的实例讲解 C 语言程序设计的方法, 主要内容包括 C 语言程序的结构 数据类型 运算符和表达式 数据的输入和输出 选择结构 循环结构 数组 函数 指针 编译预处理 结构和共用体 位运算 文件等 每个单元包括小结 实验 习题等 本书可作为高等 普通高等教育 十二五 重点规划教材计算机系列中国科学院教材建设委员会 十二五 规划教材 C 语言程序设计 张秀萍主编闫丽王淑霞副主编 北 京 科学出版社职教技术出版中心 www.aboo 内容简介 C 语言是一种结构化程序设计语言, 本书通过大量的实例讲解 C 语言程序设计的方法, 主要内容包括 C 语言程序的结构 数据类型 运算符和表达式 数据的输入和输出 选择结构 循环结构 数组 函数 指针 编译预处理

More information

语言教程 1 C 语言概述 C 语言的发展过程 当代最优秀的程序设计语言 C 语言版本 C 语言的特点 面向对象的程序设计语言 C 和 C 简单的 C 程序介绍 输入和

语言教程 1 C 语言概述 C 语言的发展过程 当代最优秀的程序设计语言 C 语言版本 C 语言的特点 面向对象的程序设计语言 C 和 C 简单的 C 程序介绍 输入和 语言教程 1 C 语言概述...6 1.1 C 语言的发展过程...6 1.2 当代最优秀的程序设计语言...6 1.3 C 语言版本...7 1.4 C 语言的特点...7 1.5 面向对象的程序设计语言...7 1.6 C 和 C++...8 1.7 简单的 C 程序介绍...8 1.8 输入和输出函数...9 1.9 C 源程序的结构特点...10 1.10 书写程序时应遵循的规则...10

More information

Mx* Language Reference Manual 2016 年 4 月 7 日 1 用词说明 未定义 指中央还没有表态指语言定义中不涉及的部分, 编译器和运行时环境如何表现是未知的 主要是为了给学生实现语言留下足够的空间, 标准测试集里不会出现涉及未定义部分的内容 例如 : 术语 : 源程

Mx* Language Reference Manual 2016 年 4 月 7 日 1 用词说明 未定义 指中央还没有表态指语言定义中不涉及的部分, 编译器和运行时环境如何表现是未知的 主要是为了给学生实现语言留下足够的空间, 标准测试集里不会出现涉及未定义部分的内容 例如 : 术语 : 源程 Mx* Language Reference Manual 2016 年 4 月 7 日 1 用词说明 未定义 指中央还没有表态指语言定义中不涉及的部分, 编译器和运行时环境如何表现是未知的 主要是为了给学生实现语言留下足够的空间, 标准测试集里不会出现涉及未定义部分的内容 例如 : 术语 : 源程序大小超过 256M 是未定义的 解释 : 我们测试用的源程序大小不会超过 256M 2 程序结构 Mx*

More information

试卷代号 :1075 座位号 rn 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期 " 开放本科 " 期末考试 c+ 十语言程序设计试题 2016 年 1 月 t 问一 Urr-f 斗 士 1 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new

试卷代号 :1075 座位号 rn 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期  开放本科  期末考试 c+ 十语言程序设计试题 2016 年 1 月 t 问一 Urr-f 斗 士 1 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new 试卷代号 :1075 座位号 rn 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期 " 开放本科 " 期末考试 c+ 十语言程序设计试题 2016 年 1 月 t 问一 Urr-f 斗 士 1 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. long 2. 在每个 C 十 + 程序中都必须包含有这样一个函数, 该函数的函数名为 ) A.main

More information

第 3 章顺序结构程序设计 31 2) 直到型循环结构 先执行 A 操作, 再判断条件, 若条件成立, 再执行 A 操作, 如此反复, 直到条件不成立时才停止循环 由上述三种程序结构组成的程序称作结构化程序, 形成的软件称作结构化软件 C 程序结构 C 语言以文件为编译单位 一个 C 程

第 3 章顺序结构程序设计 31 2) 直到型循环结构 先执行 A 操作, 再判断条件, 若条件成立, 再执行 A 操作, 如此反复, 直到条件不成立时才停止循环 由上述三种程序结构组成的程序称作结构化程序, 形成的软件称作结构化软件 C 程序结构 C 语言以文件为编译单位 一个 C 程 第 3 章顺序结构程序设计 随着计算机应用的不断发展, 软件变得越来越复杂 软件的可读性 可理解性等问题变得十分突出 经过不断的研究和实践, 确定了程序设计的基本方法, 这就是结构化程序设计方法 结构化程序设计方法使得程序的逻辑结构清晰, 层次分明, 有效地改善了程序的可靠性, 提高了软件的质量 本章所介绍的语句, 将按它们在程序中出现的顺序逐条执行, 由这样的语句构成的程序结构称为顺序结构 本章主要介绍以下内容

More information

期中考试试题讲解

期中考试试题讲解 一 选择题 ( 一 ) 1. 结构化程序设计所规定的三种基本结构是 C A 主程序 子程序 函数 B 树形 网形 环形 C 顺序 选择 循环 D 输入 处理 输出 2. 下列关于 C 语言的叙述错误的是 A A 对大小写不敏感 B 不同类型的变量可以在一个表达式中 C main 函数可以写在程序文件的任何位置 D 同一个运算符号在不同的场合可以有不同的含义 3. 以下合法的实型常数是 C A.E4

More information

第 章 顺序结构程序设计 程序里要对数据进行各种操作 其中进行各种运算操作是最基本的操作之一 在 语言程序中 使用表达式 也就是通常所说的计算式子 描述各种运算 表达式是由参与运算的数据和表示运算的符号按照一定的规则组成的式子 描述运算的符号称为运算符 由一个或两个特定符号表示一种运算 语言具有丰富

第 章 顺序结构程序设计 程序里要对数据进行各种操作 其中进行各种运算操作是最基本的操作之一 在 语言程序中 使用表达式 也就是通常所说的计算式子 描述各种运算 表达式是由参与运算的数据和表示运算的符号按照一定的规则组成的式子 描述运算的符号称为运算符 由一个或两个特定符号表示一种运算 语言具有丰富 第 章 顺序结构程序设计 程序里要对数据进行各种操作 其中进行各种运算操作是最基本的操作之一 在 语言程序中 使用表达式 也就是通常所说的计算式子 描述各种运算 表达式是由参与运算的数据和表示运算的符号按照一定的规则组成的式子 描述运算的符号称为运算符 由一个或两个特定符号表示一种运算 语言具有丰富的运算符 可分为多种类型 包括 算术运算符? 9 关系运算符 >> > > > 逻辑运算符 位运算符

More information

林子雨《C语言程序设计》讲义PPT

林子雨《C语言程序设计》讲义PPT C 语言程序设计 厦门大学计算机科学系 2013/3/19 林子雨 ziyulin@xmu.edu.cn 2013/3/19 厦门大学非计算机专业本科生公共课 (2012-2013 第 2 学期 ) C 语言程序设计 第 4 章选择结构林子雨 厦门大学计算机科学系 E-mail: ziyulin@xmu.edu.cn 个人主页 :http://www.cs.xmu.edu.cn/linziyu 课程提要

More information

内容简介 本书以教育部高等学校计算机科学与技术教学指导委员会编制的 关于进一步加强高等学校计算机基础教学的意见暨计算机基础课程教学基本要求 中有关计算机程序设计基础 (C 语言 ) 课程教学基本要求为指导, 结合教育部考试中心最新的全国计算机等级考试二级 (C 语言程序设计 ) 考试大纲要求和作者多

内容简介 本书以教育部高等学校计算机科学与技术教学指导委员会编制的 关于进一步加强高等学校计算机基础教学的意见暨计算机基础课程教学基本要求 中有关计算机程序设计基础 (C 语言 ) 课程教学基本要求为指导, 结合教育部考试中心最新的全国计算机等级考试二级 (C 语言程序设计 ) 考试大纲要求和作者多 普通高等教育 十二五 重点规划教材公共课系列 中国科学院教材建设专家委员会 十二五 规划教材 C 语言程序设计 张淑华朱丽莉主编 于雪晶顾煜新副主编 北京 内容简介 本书以教育部高等学校计算机科学与技术教学指导委员会编制的 关于进一步加强高等学校计算机基础教学的意见暨计算机基础课程教学基本要求 中有关计算机程序设计基础 (C 语言 ) 课程教学基本要求为指导, 结合教育部考试中心最新的全国计算机等级考试二级

More information

STRUCT Tag OptTag ID Tag ID 7..4 Declarators VarDec ID VarDec LB INT RB FunDec ID LP VarList RP ID LP RP VarList ParamDec COMMA VarList ParamDec Param

STRUCT Tag OptTag ID Tag ID 7..4 Declarators VarDec ID VarDec LB INT RB FunDec ID LP VarList RP ID LP RP VarList ParamDec COMMA VarList ParamDec Param 7. 附录 A:C 语言文法 在本附录中, 我们给出 C 语言的文法定义和补充说明 7. 文法定义 7.. Tokens INT /* A sequence of digits without spaces */ FLOAT /* A real number consisting of digits and one decimal point. The decimal point must be surrounded

More information

试卷代号 ~1075 座位号 E 口 国家开放大学 ( 中央广播电视大学 )20]5 年秋季学期 " 开放本科 " 期末考试 C 十十语言程序设计 试题 同二二十斗 2016 年 1 月 巴叫一 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. l

试卷代号 ~1075 座位号 E 口 国家开放大学 ( 中央广播电视大学 )20]5 年秋季学期  开放本科  期末考试 C 十十语言程序设计 试题 同二二十斗 2016 年 1 月 巴叫一 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. l 试卷代号 ~1075 座位号 E 口 国家开放大学 ( 中央广播电视大学 )20]5 年秋季学期 " 开放本科 " 期末考试 C 十十语言程序设计 试题 同二二十斗 2016 年 1 月 巴叫一 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. long 2. 在每个 c++ 程序中都必须包含有这样一个函数, 该函数的函数名为 ( ) A. main

More information

任务 3 加法运算练习游戏 019 这就需要用到 C# 语言的基础语法, 如数据类型 运算符和控制语句, 还需要其他的常用控件 在此任务的完成过程中, 读者可以接触到 C# 的数据类型 变量常量 运算符 控制语句等基础语法, 掌握以上知识点及其在软件开发中的应用 3.2 相关知识 预定义

任务 3 加法运算练习游戏 019 这就需要用到 C# 语言的基础语法, 如数据类型 运算符和控制语句, 还需要其他的常用控件 在此任务的完成过程中, 读者可以接触到 C# 的数据类型 变量常量 运算符 控制语句等基础语法, 掌握以上知识点及其在软件开发中的应用 3.2 相关知识 预定义 任务 3 加法运算练习游戏 3.1 情境描述 选择了开发环境并理解了事件驱动机制以后, 要开发项目, 还需掌握 C# 语言的语法 本任务的目标是完成如图 3.1 和图 3.2 所示的小学生加法运算练习游戏 这个小软件的功能是在窗体中的 + 两边出现 2 个 10 以内的随机数, 让用户 ( 适合于小学生 ) 在文本框内输入其和, 然后单击 OK 按钮 若输入的和是正确的, 则跳出一个红色的图片, 同时提示答对了,

More information

Microsoft Word - 新建 Microsoft Word 文档.doc

Microsoft Word - 新建 Microsoft Word 文档.doc 第一章 : C 语言概论 C 语言的发展过程 C 语言是在 70 年代初问世的 一九七八年由美国电话电报公司 (AT&T) 贝尔实验室正式发表了 C 语言 同时由 B.W.Kernighan 和 D.M.Ritchit 合著了著名的 THE C PROGRAMMING LANGUAGE 一书 通常简称为 K&R, 也有人称之为 K&R 标准 但是, 在 K&R 中并没有定义一个完整的标准 C 语言,

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1ADBBB7>

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1ADBBB7> 能源与动力工程学院 结构化编程 结构化程序设计 循环 循环结构 确定性循环 非确定性循环 I=1 sum=sum+i I = I +1 陈 斌 I>100 Yes No 目录 求和 :1+2+3++100 第四节循环的应用 PROGRAM GAUSS INTEGER I, SUM 计数器 SUM = 0 DO I = 1, 100, 1 SUM = SUM + I print*, I, SUM DO

More information

Ps22Pdf

Ps22Pdf C ( CIP) C /. :, 2001. 7 21 ISBN 7-5624 -2355-5. C........ C. TP312 CIP ( 2001 ) 034496 C * * : 7871092 1 /16 : 14. 25 : 356 20017 1 20017 1 : 1 6 000 ISBN 7-5624-2355-5 / TP311 : 21. 00 C, C,,,, C,, (

More information

运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2

运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2 第十一讲 运算符重载 与类型转换 运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2 为什么要运算符重载 预定义的运算符只针对基本数据类型, 若要对类的对象进行类似的运算, 需要重新定义运算符的功能 运算符重载实质就是函数重载 : 对已有的运算符赋予多重含义, 使得同一个运算符作用于不同类型的数据时导致不同的行为

More information

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1A1D4F1>

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1A1D4F1> 能源与动力工程学院 结构化编程 结构化程序设计 选择 结构化编程的三种基本结构 : 顺序结构 I=1 选择 ( 分支 ) 结构 循环结构 sum=sum+i I = I +1 陈 斌 A?=B NO I>100 No YES Yes 目录 第一节逻辑运算 第一节逻辑运算 第二节 I 语句 逻辑运算 算术运算 关系运算 逻辑运算 关系运算符 运算优先级 第三节浮点数及字符的逻辑运算 90 77 功能

More information

数据结构

数据结构 信息管理与信息系统专业 第 3 章变量与表达式 任课教师 : 吕雅丽 本章内容 3.1 C# 基本数据类型 3.2 常量与变量 3.3 创建并使用枚举类型 3.4 运算符与表达式类型 3.5 运算符的优先级与结合性 2 3.1 C# 基本数据类型 3.1.1 数值类型 1. 整数类型 整数类型又有有符号整数与无符号整数 有符号整数可以带正负号, 无符号整数不需带正负号, 默认为正数 有符号整数包括

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

<4D F736F F D204A617661B3CCD0F2C9E8BCC6BBF9B4A1A3A8B5DA35B0E6A3A9CAB5D1E9D6B8B5BCD3EBCFB0CCE2BDE2B4F020B5DA33D5C22E646F63>

<4D F736F F D204A617661B3CCD0F2C9E8BCC6BBF9B4A1A3A8B5DA35B0E6A3A9CAB5D1E9D6B8B5BCD3EBCFB0CCE2BDE2B4F020B5DA33D5C22E646F63> 第 3 章 结构语句 本章知识点 : 流程控制语句是用来控制程序中各语句执行顺序的语句, 是程序中基本却又非常关键的部分 流程控制语句可以把单个的语句组合成有意义的 能完成一定功能的小逻辑模块 最主要的流程控制方式是结构化程序设计中规定的顺序结构 分支结构 ( 选择结构 ) 和循环结构三种基本流程结构 本章将指导读者掌握 Java 程序中的流程控制语句, 包括这些语句的语法结构和使用中需注意的要点

More information

C

C C 2017 3 14 1. 2. 3. 4. 2/95 C 1. 3/95 C I 1 // talkback.c: 2 #include 3 #include 4 #define DENSITY 62.4 5 int main(void) 6 { 7 float weight, volume; 8 int size; 9 unsigned long letters;

More information

移动平台应用软件开发 C/C++/JAVA 基础 C 中的预处理指令 主讲 : 张齐勋 移动平台应用软件开发 课程建设小组北京大学二零一五年

移动平台应用软件开发 C/C++/JAVA 基础 C 中的预处理指令 主讲 : 张齐勋 移动平台应用软件开发 课程建设小组北京大学二零一五年 移动平台应用软件开发 C/C++/JAVA 基础 C 中的预处理指令 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组北京大学二零一五年 预处理 2 预处理器 C 语言的编译系统分为编译预处理和正式编译 预处理作用 : 对源程序编译之前做一些处理, 生成扩展 C 源程序 预处理器的行为是由预处理指令控制的 宏定义 文件包含 条件编译 #define #ifdef

More information

<4D F736F F D20B5DA33D5C220CAFDBEDDB5C4CAE4C8EBCAE4B3F62E646F63>

<4D F736F F D20B5DA33D5C220CAFDBEDDB5C4CAE4C8EBCAE4B3F62E646F63> 嵌入式 Linux C 语言程序 设计基础教程作者 : 华清远见 第 3 章数据的输入输出 本章目标 在上一章中, 读者了解了嵌入式 Linux C 语言的数据相关的知识, 包括数据类型 变量和常量等 本 章继续介绍 C 语言中与数据有关的知识, 数据的输入输出 通过本章的学习, 读者将会掌握如下内容 : 字符输出函数 putchar 格式化输出函数 printf 字符输入函数 getchar 格式化输入函数

More information

C 语言大学实用教程 ( 第 版 ) 来完成的, 赋值操作是顺序结构中最常见的操作 但是在 C 语言中, 没有专门的赋值语句, 赋值操作通常是用赋值表达式后接一个分号 (;) 构成赋值表达式语句实现的 例如,c = a + b 只是一个赋值表达式, 而 c = a + b; // 赋值表达式语句则是

C 语言大学实用教程 ( 第 版 ) 来完成的, 赋值操作是顺序结构中最常见的操作 但是在 C 语言中, 没有专门的赋值语句, 赋值操作通常是用赋值表达式后接一个分号 (;) 构成赋值表达式语句实现的 例如,c = a + b 只是一个赋值表达式, 而 c = a + b; // 赋值表达式语句则是 第 章键盘输入与屏幕输出 内容关键词 C 语句分类 字符输入 / 输出函数 格式输入 / 输出函数 重点与难点 表达式与表达式语句的区别 scanf() 语句的正确用法 输入 / 输出数据时的格式控制 典型实例 以不同格式输入和输出两个整型数. C 语句分类 () 控制语句 C 语言只有如下 种控制语句 (Control Statement) if~else for()~ continue switch

More information

内容简介 本书从结构化程序设计技术出发, 以 C 程序设计语言为载体, 以 Windows 下的 Visual C 为程序调试和运行平台, 通过对典型实例的算法及相应 C 语言代码的描述, 介绍了在程序设计过程中如何对问题进行分析 如何组织数据和如何描述解决问题, 揭示了在计算机应用过

内容简介 本书从结构化程序设计技术出发, 以 C 程序设计语言为载体, 以 Windows 下的 Visual C 为程序调试和运行平台, 通过对典型实例的算法及相应 C 语言代码的描述, 介绍了在程序设计过程中如何对问题进行分析 如何组织数据和如何描述解决问题, 揭示了在计算机应用过 普通高等教育 十二五 规划教材 计算机系列规划教材 计算机程序设计基础 周启生姬涛 主编 刘菲田红梅副主编 科学出版社职教技术出版中心 www.aboo 北京 内容简介 本书从结构化程序设计技术出发, 以 C 程序设计语言为载体, 以 Windows 下的 Visual C++ 2010 为程序调试和运行平台, 通过对典型实例的算法及相应 C 语言代码的描述, 介绍了在程序设计过程中如何对问题进行分析

More information

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式]

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式] 函数 Function 如何重用代码 How to reuse code 3 4 = 3*3*3*3 3 4,6 5 : 拷贝 - 粘帖代码 (Copy-paste code) 3 4,6 5,12 10 : 拷贝 - 粘帖代码 (Copy-paste code) Bad! 使用函数 (with a function) 使用函数 (with a function) 使用函数 (with a function)

More information

普通高等教育电气信息类应用型规划教材 程序设计基础 基于问题情境的 C 语言实践教程 张克军主 编 代俊雅副主编 北 京

普通高等教育电气信息类应用型规划教材 程序设计基础 基于问题情境的 C 语言实践教程 张克军主 编 代俊雅副主编 北 京 科学出版社职教技术出版中心 普通高等教育电气信息类应用型规划教材 程序设计基础 基于问题情境的 C 语言实践教程 张克军主 编 代俊雅副主编 北 京 内容简介 本书分为基础 提高和扩展三篇, 共 15 章 我们本着巩固学生基础知识 提升学生编程能力和培养学生程序设计素质的想法设计每一章的内容, 确保学生通过循序渐进的学习, 理解 掌握教学内容 本书主要内容包括 : C 语言的基础知识, 数据类型 运算符与表达式,

More information

2015年计算机二级(C语言)模拟试题及答案(四)

2015年计算机二级(C语言)模拟试题及答案(四) 2015 年计算机二级 (C 语言 ) 模拟试题及答案 (4) 一 填空题 1 C 语言中基本的数据类型有 : 2 C 语言中普通整型变量的类型说明符为, 在内存中占 字节, 有符号普通整型的数据范围是 3 整数-35 在机内的补码表示为 4 执行下列语句 int a=8;a+=a-=a*a; 后,a 的值是 5 有如下语句:charA[ ]={ I am a student }; 该字符串的长度是,A[3]=

More information

中国科学院优秀教材普通高等教育电气信息类应用型规划教材 C 语言程序设计 ( 第二版 ) 罗朝盛主编 张银南白宝钢魏英 副主编 北 京 内容简介 本书共 10 章, 包括 :C 语言程序设计概述, 数据类型与常用库函数, 运算符与表达式, 算法与控制结构, 数组 字符串与指针, 函数, 编译预处理, 结构体 共用体与枚举类型, 文件操作,C++ 程序设计初步 本书配有大量的例题和习题, 适合教师课堂教学和读者自学

More information

第3章 Java语言基础

第3章 Java语言基础 第 3 章 Java 语言基础 第 1/55 页 习题 3 3. 8. 9. 13. 18. 实验 : 1. 实验 4( 实 P11~12) 2. 实验任务 : 1 例 3.1( 教 P30) 2 变量赋值 ( 教 P29) 3 编写两个缓冲区对应同一个输入流对象, 并键盘输入整型 a 和双精度 b, 求和 第 2/55 页 习题 3 3. 实验任务 : 1 实验 5( 实 P12~13) 2 实验

More information

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点 复习 : Java 类型 基本类型 boolean, char, 封装 (wrappers) 类 (class) 定义 class MyType { int i; double d; 数据 (Fields) char c; void set(double

More information

内容简介本书主要内容包括程序设计基础知识 C 语言数据类型 运算符与表达式 程序结构 数组 指针 其他数据类型 函数 文件等, 通过对大量实例进行分析, 力求提高和培养学生的程序设计能力 本书有配套辅导教程 程序设计基础实训指导教程 C 语言 ( 科学出版社出版 ), 引导读者学习和巩固各章节内容

内容简介本书主要内容包括程序设计基础知识 C 语言数据类型 运算符与表达式 程序结构 数组 指针 其他数据类型 函数 文件等, 通过对大量实例进行分析, 力求提高和培养学生的程序设计能力 本书有配套辅导教程 程序设计基础实训指导教程 C 语言 ( 科学出版社出版 ), 引导读者学习和巩固各章节内容 普通高等教育 十二五 规划教材计算机系列中国科学院教材建设专家委员会 十二五 规划教材 程序设计基础 C 语言 杨莉刘鸿翔主编唐宏亮邓芳副主编余慧王海军 1 科学出版社职教技术出版中心 www.aboo 北 京 内容简介本书主要内容包括程序设计基础知识 C 语言数据类型 运算符与表达式 程序结构 数组 指针 其他数据类型 函数 文件等, 通过对大量实例进行分析, 力求提高和培养学生的程序设计能力 本书有配套辅导教程

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

// 语句序列 根据以上分析写出一个完整的程序, 并在集成开发环境编译执行 运行结果如下 : 请输入摄氏温度 C: 26.5 摄氏温度 C=26.5 华氏温度 F=79.7 #include<iostream> double C,F; cout<<" 请输入摄氏温度 C:\n"; cin>>c; F

// 语句序列 根据以上分析写出一个完整的程序, 并在集成开发环境编译执行 运行结果如下 : 请输入摄氏温度 C: 26.5 摄氏温度 C=26.5 华氏温度 F=79.7 #include<iostream> double C,F; cout<< 请输入摄氏温度 C:\n; cin>>c; F 第 1 章练习题 同步练习 1.1 1. 一个最简单的 C++ 程序, 可以只有一个 ( ) (A) 库函数 (B) 自定义函数 (C)main 函数 (D) 空函数 2. 函数名是 ( ), 用于识别和调用函数 (A) 关键字 (B) 标识符 (C) 常数 (D) 语句 3. 用 C++ 语言编写的源程序要成为目标程序必须要经过 ( ) (A) 解释 (B) 汇编 (C) 编辑 (D) 编译 4.C++

More information

C C

C C C C 2017 3 8 1. 2. 3. 4. char 5. 2/101 C 1. 3/101 C C = 5 (F 32). 9 F C 4/101 C 1 // fal2cel.c: Convert Fah temperature to Cel temperature 2 #include 3 int main(void) 4 { 5 float fah, cel; 6 printf("please

More information

download.kaoyan.com_2006ÄêÌì½ò¹¤Òµ´óѧ¸ß¼¶ÓïÑÔ³ÌÐòÉè¼Æ£¨409£©¿¼ÑÐÊÔÌâ

download.kaoyan.com_2006ÄêÌì½ò¹¤Òµ´óѧ¸ß¼¶ÓïÑÔ³ÌÐòÉè¼Æ£¨409£©¿¼ÑÐÊÔÌâ 考生注意 : 本试卷共七大题, 满分 150 分 考试时间为 3 小时 ; 所有答案均写在答题纸上 ( 注明题号 ), 在此答题一律无效无效 一 选择题 ( 本题共 20 小题, 每小题 2 分, 满分 40 分 ) 1 char ch 1 2 A 0

More information

Microsoft PowerPoint - 07 派生数据类型

Microsoft PowerPoint - 07 派生数据类型 能源与动力工程学院 目录 派生类型 陈 斌 固有数据类型 数值型 (numerical) 整型 INTEGER 实型 REAL 复数型 COMPLEX 非数值型 字符型 CHARACTER 逻辑型 ( 布尔型 )LOGICAL 自定义数据类型 ( 派生类型, derived type) 派生类型是指用户利用 Fortran 系统内部类型, 如整型 实型 复数型 逻辑型 字符型等的组合自行创建出一个新的数据类型,

More information

数学软件 Matlab 编程基础 ( 脚本 ) 1

数学软件 Matlab 编程基础 ( 脚本 ) 1 数学软件 Matlab 编程基础 ( 脚本 ) 1 本讲主要内容 M 文件 基本运算 : 算术 关系 逻辑 简单的输入输出 控制结构 : 顺序 选择 循环 2 M 文件 M 文件介绍 用 Matlab 语言编写的程序称为 M 文件 M 文件以.m 为扩展名 M 文件是由若干 Matlab 命令组合在一起构成的, 它可以完成某些操作, 也可以实现某种算法 两类重要的 M 文件 ( 调用方式不同 ) Script:

More information

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 复习 : Java 类型 基本类型 boolean, char, 封装 (wrappers) 类 (class) 定义 class MyType { int i;

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

工程项目进度管理 西北工业大学管理学院 黄柯鑫博士 甘特图 A B C D E F G 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 甘特图的优点 : 直观明了 ( 图形化概要 ); 简单易懂 ( 易于理解 ); 应用广泛 ( 技术通用 ) 甘特图的缺点 : 不能清晰表示活动间的逻辑关系 WBS 责任分配矩阵 ( 负责〇审批

More information

第一章三角函数 1.3 三角函数的诱导公式 A 组 ( ) 一 选择题 : 共 6 小题 1 ( 易诱导公式 ) 若 A B C 分别为 ABC 的内角, 则下列关系中正确的是 A. sin( A B) sin C C. tan( A B) tan C 2 ( 中诱导公式 ) ( ) B. cos(

第一章三角函数 1.3 三角函数的诱导公式 A 组 ( ) 一 选择题 : 共 6 小题 1 ( 易诱导公式 ) 若 A B C 分别为 ABC 的内角, 则下列关系中正确的是 A. sin( A B) sin C C. tan( A B) tan C 2 ( 中诱导公式 ) ( ) B. cos( 第一章三角函数 1. 三角函数的诱导公式 A 组 一 选择题 : 共 6 小题 1 ( 易诱导公式 ) 若 A B C 分别为 ABC 的内角 则下列关系中正确的是 A. sin( A B) sin C C. tan( A B) tan C ( 中诱导公式 ) B. cos( B C) cos A D. sin( B C) sin A sin60 cos( ) sin( 0 )cos( 70 ) 的值等于

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 Python 入门 孙栩 xusun@pku.edu.cn 1 课程的整体介绍 目录 contents 2 Python 的介绍及如何安装 Python 3 使用 Python 编写简单小程序 1 课程的整体介绍 课程的整体介绍 Python 入门 1. Python 的介绍与安装 2. 变量与表达式 3. 一些简单的小程序 数据结构 1. 字符串 2. 列表 3. 元组 4. 字典 5. 集合 分支与循环

More information

Microsoft PowerPoint - 1. C++介绍.ppt [兼容模式]

Microsoft PowerPoint - 1. C++介绍.ppt [兼容模式] C++ 入门 http://hwdong.com 1. 程序 = 数据 + 运算 Application = Data + Operator 程序就是对数据进行加工处理 ( 运算 ) 程序 = 数据 + 运算 数据用变量 ( 常量 ) 表示, 用运算符对它们进行运算 程序 = 变量 + 运算符 程序中的数据应有条理地存储在内存中, 处理需要按照一定步骤或方法进行 程序 = 数据结构 + 算法 机器语言

More information

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx 运算符重载 Operator Overloading class Point { public: ; double x_, y_; Why Operator Overloading? Point (double x =0, double y = 0):x_(x),y_(y) { int main(){ Point a(1., 2), b(3,4); Point c = a + b; return 0;

More information

C/C++ 语言 - 循环

C/C++ 语言 - 循环 C/C++ Table of contents 7. 1. 2. while 3. 4. 5. for 6. 8. (do while) 9. 10. (nested loop) 11. 12. 13. 1 // summing.c: # include int main ( void ) { long num ; long sum = 0L; int status ; printf

More information

内容简介 本书根据全国计算机等级考试二级 C 语言程序设计考试大纲要求, 结合目前高等院校学生学习计算机程序设计课程的情况组织内容, 全面地介绍了 C 语言程序设计的基础知识, 系统地讲述了 C 语言程序设计的基本方法和技巧 本书以 ANSI C 语言标准为依据, 深入浅出地介绍了 C 语言的基本数

内容简介 本书根据全国计算机等级考试二级 C 语言程序设计考试大纲要求, 结合目前高等院校学生学习计算机程序设计课程的情况组织内容, 全面地介绍了 C 语言程序设计的基础知识, 系统地讲述了 C 语言程序设计的基本方法和技巧 本书以 ANSI C 语言标准为依据, 深入浅出地介绍了 C 语言的基本数 普通高等教育计算机系列规划教材 C 语言程序设计 ( 第二版 ) 姜海涛主编曹震中武楠王妍闫超刘红娟叶永凯卫娜副主编 副主编 科学出版社职教技术出版中心 www.aboo 北京 内容简介 本书根据全国计算机等级考试二级 C 语言程序设计考试大纲要求, 结合目前高等院校学生学习计算机程序设计课程的情况组织内容, 全面地介绍了 C 语言程序设计的基础知识, 系统地讲述了 C 语言程序设计的基本方法和技巧

More information

实验目的 (1) 熟练掌握顺序 分支 循环三种结构 (2) 会使用流程控制结构编写程序 第三章程序的流程控制 实验要求 (1) 掌握 if-else swith-case 的使用 (2) 掌握 while do-while for 的使用 (3) 掌握分支嵌套和循环嵌套 (4) 分析理解如何避免死循

实验目的 (1) 熟练掌握顺序 分支 循环三种结构 (2) 会使用流程控制结构编写程序 第三章程序的流程控制 实验要求 (1) 掌握 if-else swith-case 的使用 (2) 掌握 while do-while for 的使用 (3) 掌握分支嵌套和循环嵌套 (4) 分析理解如何避免死循 实验目的 (1) 熟练掌握顺序 分支 循环三种结构 (2) 会使用流程控制结构编写程序 第三章程序的流程控制 实验要求 (1) 掌握 if-else swith-case 的使用 (2) 掌握 while do-while for 的使用 (3) 掌握分支嵌套和循环嵌套 (4) 分析理解如何避免死循环 实验范例 系统常用类 : 字符串类 (String) a) 从字符串 s 中截取一个字符串方法 s.substring()

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

高等学校计算机应用规划教材 C 语言程序设计 梁海英张红军主编 千文陈科尹孟伟东曾霖副主编 北 京

高等学校计算机应用规划教材 C 语言程序设计 梁海英张红军主编 千文陈科尹孟伟东曾霖副主编 北 京 高等学校计算机应用规划教材 C 语言程序设计 梁海英张红军主编 千文陈科尹孟伟东曾霖副主编 北 京 内 容 简 介 本书按照程序设计的体系结构 系统地介绍了 C 语言程序设计的基本思想及基本方法 全书内容分为三 部分 第一部分(第 1 7 章)依次介绍了 C 语言程序设计的基本应用 包括 C 语言程序的结构 数据类型 及其运算 基本语句 结构化程序设计的顺序结构 选择结构 循环结构 数组及函数的开发方法与应用实

More information

_汪_文前新ok[3.1].doc

_汪_文前新ok[3.1].doc 普 通 高 校 本 科 计 算 机 专 业 特 色 教 材 精 选 四 川 大 学 计 算 机 学 院 国 家 示 范 性 软 件 学 院 精 品 课 程 基 金 青 年 基 金 资 助 项 目 C 语 言 程 序 设 计 (C99 版 ) 陈 良 银 游 洪 跃 李 旭 伟 主 编 李 志 蜀 唐 宁 九 李 涛 主 审 清 华 大 学 出 版 社 北 京 i 内 容 简 介 本 教 材 面 向

More information

CYY 1.mps

CYY 1.mps 标准 C 语言程序设计及应用 周纯杰刘正林何顶新周凯波编著 华中科技大学出版社 内容简介 本书以 ANSI C ++ 标准为准则, 采取循序渐进 突出重点 分散难点的编写方法, 系统地讲授作为 ANSI C ++ 内核的 C 语言的基本语法和程序设计方法 全书共分 11 章 : C 语言基础知识, 数据类型 运算符和表达式, 程序和流程控制, 变量的存储类型, 数组, 指针, 函数, 结构和联合,

More information