资源预览内容
第1页 / 共331页
第2页 / 共331页
第3页 / 共331页
第4页 / 共331页
第5页 / 共331页
第6页 / 共331页
第7页 / 共331页
第8页 / 共331页
第9页 / 共331页
第10页 / 共331页
亲,该文档总共331页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C C语言程序设计语言程序设计 第一章 第二章 第三章 第四章 第五章 第六章 第七章 第一章 C语言概述 C语言 既可作为系统软件的程序设计语言 ,又可作为应用软件的程序设计语言。 尤其是当今计算机应用极为广泛,软件的设计 、编写质量要求高,经常与硬件部分打交道,如 :界面设计等,所以用C语言编写是最理想的。因 而C语言也是当前计算机语言中用得最广泛的语言 之一。 1.1 C语言出现的历史背景 一、操作系统的设计语言 O.S. 操作系统,为用户使用计算机提供一个操 作环境:系统命令、语言编程等。 如:DOS. UNIX 以前:O. S .软件用汇编指令编写。汇编语言:一 种二进制指令代码的符号表示,既繁琐, 又易出错,可读性差。 改进:用C语言编写,既提高了程序的可读性, 又可与硬件打交道。 二、发展过程 1960年出现了Algol60语言,但该语言主要面 向问题,与硬件较远,故英国剑桥大学推出 了CPL(Combined Programming Language) 1967年,Matin Richards对CPL进行改进、简 化、推出了BCPL (Basic Combined Programming Language) 1970年,美国贝尔实验室Ken Thomson 以 BCPL为基础,再次简化推出了B语言,并写 了第一个UNIX系统。 美国贝尔实验室D.M. Ritchie 在B语言基础上设 计出了C语言,并用其将UNIX系统全部改写并 实现。 经进一步改进,至1977年出现了与具体机器无 关的C编译文本,从而使C语言广泛应用,各种 机器皆可使用。 1978年,美国Brain W.Kernighan与Dennis. M. Ritchie 联合出版一书The C Programming Language成为 ANSI C之基础。 1983年,美国标准化协会(ANSI) 制定了ANSI C 。 ANSI C 为基础: 不同机器有不同版本,尤其是函数均应参考 相应的机器。 1.2 C语言的特点 只有通过学习,方可理解C之特点,先简叙之: 1. 简洁、紧凑、方便、灵活 32个关键字,9种控制语句, 主要用小写字母,压缩一切不必要成分 2. 运算符丰富 除了最基本的、%等运算外,还 将括号、赋值、类型强制转换等均作为运算符, 共有34种运算符。 3. 数据结构丰富 除基本类型外, 有指针, 结构体、共同体等类型。 4. 具有结构化的控制语句 模块完整,控制中的语句可完整化。 5. 语法严格,但有灵活性 如:数据类型可相互通用:整型、字符型通用 。 6. 可与机器硬件打交道,直接访问内存地址,具 有“ 高”、“ 低”级语言之功能。 7. 生成目标代码质量高,执行效率高。 8. 可移植性优于汇编语言。 1.3 简单的C程序介绍 为了更好、更快地掌握C程序,我们先看几个C 语言程序: 例1. main( ) printf (“This is a c programn“); 例2. main ( ) /*求两个数之和*/ int a, b, sum; /*这是定义变量*/ a=123; b=456; sum=a+b; printf(“sum is %dn“, sum); 例3.main( ) /* 主函数*/ int a, b, c; /*定义变量*/ scanf(“%d, %d“, /*输入变量a和b的值*/ c=max(a, b);/*调用max函数,将得到的值赋给c*/ printf(“max=%d“,c;) /*输出c的值*/ int max (x, y) int x, y; /*对形参x、y作类型定义*/ int z; /*max函用到的变量z,也要加以定义*/ z=y; if (xy) z=x; return (z); /*将z的值返回,通过max带回调用处*/ 通过分析,初步看到: 1. C程序全部由一个一个的函数构成。至少有一个 主函数main ( ), 其它函数可被主函数调用或相互 调用。其它函数可为C 函数库中函数,也可为自己 编的函数。 上述特点称为程序的模块化. 2. 函数的构成: 函数说明+函数体 函数体: 变量定义与执行语句 可允许空函数: dump ( ) 函数说明包括: 函数名、类型、属性、参数等 3. 函数的执行一定从main ( )开始。尽管main ( )函 数位置可自由。 4. 书写自由,一个语句可多行,一行可多个语句。 5. 每一条语句必须有一个分号; 6. C语言的输入 / 出均以函数形式出现。scanf( ), printf( ). 7. 可用/ /对C语言加注释 第二章 数据类型、运算符与表达式 2.1. 数据类型 著名计算机科学家沃思提出 : 程序数据结构算法 所以,存放数据的方式直接反映了一种语言的 数据表达能力。 数据的存储方式又称之为:数据类型。 举 一个例子:以考生各科成绩及总分排队问 题为列。 成绩的存放 以数组形式 排队方法 算法 前面已述. C数据类型丰富,分为: 基本类型 构造类型 指针类型 空类型 整型 字符型 实型 单精度 双精度 数组 结构体 共用体 数据有常量、变量之分,均为其中一种类型。 本章先学习基本类型。 枚举 2.2 常量与变量 2.2.1 常量和符号常量 常量 程序运行过程中不能被改变的量。 一般的数据显式写法均表示常量。 如程序中: 20 整型常量 15.8 实型常量 a 字符常量 例: #define PRICE 30 main ( ) int num, total; num=10; total=num*PRICE; printf(“total=%d“,total); 还可用一个符号表示一个常量 符号常量 符号常量(一般用大写,以区分变量) 再如: =3.1415629 #define PAI 3.1415629 #define PRICE 30 2.2.2变量 程序执行中可以改变的量称为变量。变量包括 变量名和变量值。 变量名 用标识符命名,对应一定数量的内存存贮 单元,其单元数视变量类型而定。 标识符 由字母、数字、下划线组成且由字母或 下划线开头的字符串。 标识符可用来命名变量及作为常量名、函数名 、类型名、文件名等,一个程序内不得有重复名 。 如: _sum, sum, student_name, price等 习惯上,变量名、函数名等用小写字母表示。 常量名用大写字母表示(以增加可读性)。 另: 需注意标识符长度,视不同系统而定。 设允许8个字符。 则: student_ name student_ number 为同一名字。 C语言中, 变量须先定义,后使用 如: int student student=30; 则若写成student=30, 则未定义, 编译时指出其错 。 一旦变量被定义,即可在编译时为其分配相应 数量的单元。 一旦变量被定义, 其类型便确定。则可检查其 运算的合法性。 如: a % b 表示a整除以b的余,则a,b必须为整型量。 2.32.3整型数据整型数据 2.3.1 整型常量 整型常量 整型常数 C语言提供了三种形式 十进制 如: 256, 308, 120等 八进制 以数字0开头表示的整数 例:0235, 0146 012等. 0235=28238515710 014618248610210 012(182)1010 十六进制 以“0x“开头的整型数 如: 0x16, 0x28 2.3.2 整型变量 一、分类: 分为四种:基本型、短整型、长整型、无符号型 2.短整型: 用“short int“或 “short“定义 3.长整型: 用“long “或 “long int “定义 1.基本型: 用“int“定义 4.无符号型: 不存放符号,则不带符号数. 又分无符号整型,无符号短整型, 无符号长整型。 上述各种类型所占内存单元数及取值范围视 不同机器而不同。详见P13。 二、定义方法 整型变量分别以下列方式定义 2. 短整型 short int 或 short a, b, c; 3. 长整型 long int 或 long a, b, c; 1. 基本整型: int a, b, c; 4. 无符号型 unsigned a, b, c; unsigned short a, b, c; unsigned long a, b, c; 例: main ( ) int a, b, c, d; /*指定a, b, c, d为整型变量*/ unsignd u; /*指定u为无符号整型变量*/ a=12; b= 24; u=10; c=a+u; d=b+u; printf(“a+u=%d, b+u=%dn“,c,d); 由此看到: 不同类型的整型数据可进行算术运算。 但有一定规则,见2.7. 运行结果为 a+u=22, b+u= 14 三、关于整型常量 程序中出现的整型常数, 系统按以下规则分配 变量(内存单元)或赋值给相应变量 2. 若超越,而在21474836482147483647之间,则 可赋给 long int 变量。 1. 当常数(量)在 3276832767之间,则可赋给int, long int 变量。 4. 一个非负整数, =, , , , , 又如: (int) (x+y) 若省略: (int)x+y会变成将x转成 整型. (int)x; 则x本身仍为实型,而(int)x由一个中间变 量(整)存放x的整数部分。 例: main ( ) float x; int i; x=3.6; i= (int) x; printf (“x=%d“, x, i); 则: x=3.600000, i=3. 总结以上类型转换,有二种: 1. 强制 另: 强制类型转换运算优先于算术运算符. 2. 系统自动 如: 若x为float, 则x%3不合法。 但可用(int)x%3来解决。(附录III介绍了优先级) 四、自增,自减运算符 设有int i = 3; + + 自增1 自减1 则: + +i, i+都会使i变为4,但有区别: +i: 先使i值+1,再使用i值; i+: 先使用i值,再使i值+1. j= +i; j=4, i=4. (i=i+1; j=i;) j=i+; j=3, i=4. (j=i; i=i+1) 同理: i, i ,均使i值1,但: 又如: printf (“i=%dn“, i+); 结果: i=3 若: printf (“i=%dn“, +i); 结果: i=4 i: 先使i值1,再使用i值; i : 先使用i值,再使i值1 i=3; 几点注意: 1. +和 运算法只能用于变量,不得用于常量和表 达式. 2. +, ,的结合性为从右至左,而一般算术运算符 为从左至右。如: 如 5+ +, (a+b)+ +均为不合法. i+ “和“+ +“为同一优先级. i+相当于(i+) 若 i=3, 则结果为3, i为4. +, 主要用于循环变量自增或自减。 1. 要慎用+、 运算符。 五、有关表达式使用中的问题说明 则:先对i进行3次自加,为6,然后三个i相加为18,而i为6。 如: 表达式(i+)+(i+)+(i+) (i=3) 一般认为: 从左至右: 3+4+5=12,i6. 但Turbo C. MSC 都是先取三个原值 相加:
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号