谭浩强C语言程序设计
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用"short int"或 "short"定义 3.长整型:
用"long "或 "long int "定义
30
4.无符号型: 不存放符号,则不带符号数.
又分无符号整型,无符号短整型, 无符号长整型。
上述各种类型所占内存单元数及取值范围视 不同机器而不同。详见P13。
31
二、定义方法
整型变量分别以下列方式定义 1. 基本整型:
数据的存储方式又称之为:数据类型。
20
前面已述. C数据类型丰富,分为:
整型
基本类型
字符型 实型 枚举
单精度 双精度
构造类型 指针类型
数组 结构体 共用体
空类型
数据有常量、变量之分,均为其中一种类型。
本章先学习基本类型。
21
§2.2 常量与变量
2.2.1 常量和符号常量 常量 程序运行过程中不能被改变的量。 一般的数据显式写法均表示常量。
35
3. 若int, short int 长度相同,则二者皆可赋值。 4. 一个非负整数<32768 则可赋给 unsigned int。 5. 一个常数后加 'l',或'L',表示长整数. 如123l. 主要用
于函数调用时形、实参数传递。
36
§2.4 实型数据
2.4.1 实型常量
有二种表示形式
8
3. 数据结构丰富 除基本类型外, 有指针, 结构体、共同体等类型。
4. 具有结构化的控制语句 模块完整,控制中的语句可完整化。
5. 语法严格,但有灵活性 如:数据类型可相互通用:整型、字符型通用。
9
6. 可与机器硬件打交道,直接访问内存地址,具 有“ 高”、“ 低”级语言之功能。
7. 生成目标代码质量高,执行效率高。 8. 可移植性优于汇编语言。
例: main ( ) {int a, b, c, d; /*指定a, b, c, d为整型变量*/ unsignd u; /*指定u为无符号整型变量*/ a=12; b= –24; u=10;
33
c=a+u; d=b+u; printf("a+u=%d, b+u=%d\n",c,d); } 运行结果为 a+u=22, b+u= –14
由此看到: 不同类型的整型数据可进行算术运算。 但有一定规则,见§2.7.
34
三、关于整型常量
程序中出现的整型常数, 系统按以下规则分配 变量(内存单元)或赋值给相应变量
1. 当常数(量)在 – 32768~32767之间,则可赋给int, long int 变量。
2. 若超越,而在–2147483648~2147483647之间,则 可赋给 long int 变量。
sum=a+b;
printf("sum is %d\n", sum);
}
12
例3.main( )
/* 主函数*/
{ int a, b, c;
/*定义变量*/
scanf("%d, %d", &a, &b); /*输入变量a和b的值*/
c=max(a, b);/*调用max函数,将得到的值赋给c*/
printf("max=%d",c;)
简洁紧凑方便灵活32个关键字9种控制语句主要用小写字母压缩一切不必要成分运算符丰富除了最基本的等运算外还将括号赋值类型强制转换等均作为运算符共有34种运算符
1
C语言程序设计
第一章 第二章 第三章 第四章
第五章 第六章 第七章
2
第一章 C语言概述
C语言––– 既可作为系统软件的程序设计语 言,又可作为应用软件的程序设计语言。
44
看如下几个例子: 例1: main ( ) { char c1, c2; c1=97; c2=98; printf ("%c %c", c1, c2) }
运行结果 a b
45
例2: main ( ) { char c1, c2; c1= ' a '; c2=' b '; c1=c1– 32; c2=c2– 32; printf ("%c %c", c1, c2) }
int a, b, c; 2. 短整型
short int 或 short a, b, c;
3. 长整型 long int 或 long a, b, c;
32
4. 无符号型 unsigned a, b, c; unsigned short a, b, c; unsigned long a, b, c;
如:DOS. UNIX
以前:O. S .软件用汇编指令编写。汇编语言:一 种二进制指令代码的符号表示,既繁琐, 又易出错,可读性差。
改进:用C语言编写,既提高了程序的可读性, 又可与硬件打交道。
4
二、发展过程
1960年出现了Algol60语言,但该语言主要面 向问题,与硬件较远,故英国剑桥大学推出 了CPL(Combined Programming Language)
23
#define PRICE 30 符号常量(一般用大写,以区分变量)
再如: =3.1415629 #define PAI 3.1415629
24
2.2.2变量 程序执行中可以改变的量称为变量。变量包括
变量名和变量值。
变量名 用标识符命名,对应一定数量的内存存贮 单元,其单元数视变量类型而定。
一般地: 单精度占4字节内存单元; 双精度占8字节内存单元.
38
注意: 不同机器对实型变量的有效数字长度的限制 如: pc机, 单精度一般为7位, 双精度15位
于是: float a; a=123456.789 则实际赋值a123456.7
单精度数值: 10–38~1038 双精度数值: 10–308~10308
0235=2×82+3×8+5=15710 0146=1×82+4×8+6=10210 -012=-(1×8+2)=-1010 十六进制 以"0x"开头的整型数 如: 0x16, 0x28
29
2.3.2 整型变量 一、分类:
分为四种:基本型、短整型、长整型、无符号型 1.基本型:
用"int"定义 2.短整型:
功能 换行 横向跳格(即跳到下一个输出区) 竖向跳格 退格 回车 走纸换页 反斜杠字符“ \” 单引号(撇号)字符 1到3位8进制数所代表的字符 1到2位16进制数所代表的字符
41
注意: \
表示ASCII码字符
三位八进制
如 \ 101 –– 表示字母A 又: \ x 十六进制ASCII 字符
\ x 41–– 表示字母A
一旦变量被定义, 其类型便确定。则可检查其 运算的合法性。
如: a % b 表示a整除以b的余,则a,b必须为整型量。
27
§2.3整型数据
2.3.1 整型常量
整型常量 整型常数 C语言提供了三种形式
十进制 如: 256, 308, -120等
28
八进制 以数字0开头表示的整数 例:0235, 0146 -012等.
另: 需注意标识符长度,视不同系统而定。 设允许8个字符。 则: student_ name student_ number
为同一名字。
26
C语言中, 变量须先定义,后使用 如: int student student=30;
则若写成student=30, 则未定义, 编译时指出其错。
一旦变量被定义,即可在编译时为其分配相应 数量的单元。
1967年,Matin Richards对CPL进行改进、简化、 推 出 了 BCPL (Basic Combined Programming Language)
1970年,美国贝尔实验室Ken Thomson 以 BCPL为基础,再次简化推出了B语言,并写 了第一个UNIX系统。
5
美国贝尔实验室D.M. Ritchie 在B语言基础上设 计出了C语言,并用其将UNIX系统全部改写并 实现。
上述特点称为程序的模块化.
15
2. 函数的构成: 函数说明+函数体
函数说明包括: 函数名、类型、属性、参数等
函数体: 变量定义与执行语句
可允许空函数:
dump ( )
{
}
16
3. 函数的执行一定从main ( )开始。尽管main ( )函数 位置可自由。
4. 书写自由,一个语句可多行,一行可多个语句。 5. 每一条语句必须有一个分号; 6. C语言的输入 / 出均以函数形式出现。scanf( ),
1.十进制形式
如: 0.126, 523.64等
2. 指数形式
对于较大或较小的数,可用指数形式
0.0000126
1.26E –5
1260000
1.26E+6 或1.26E6
' E ', 'e ' 均可. 37
2.4.2 实型变量
分为单精度型与双精度型. 分别为 float x, y, z; (单精度) double a, b, c; (双精度)
10
§1.3 简单的C程序介绍
为了更好、更快地掌握C程序,我们先看几个C 语言程序:
例1. main( ) { printf ("This is a c program\n"); }
11
例2. main ( )
/*求两个数之和*/
{int a, b, sum; /*这是定义变量*/
a=123; b=456;
如程序中: 20 整型常量 15.8 实型常量 'a' 字符常量
22
还可用一个符号表示一个常量 符号常量
例: #define PRICE 30 main ( ) { int num, total; num=10; total=num*PRICE; printf("total=%d",total); }
标识符 由字母、数字、下划线组成且由字母或 下划线开头的字符串。
25
标识符可用来命名变量及作为常量名、函数名、 类型名、文件名等,一个程序内不得有重复名。
如: _sum, sum, student_name, price等 习惯上,变量名、函数名等用小写字母表示。常
量名用大写字母表示(以增加可读性)。
39
§2.5 字符型数据
2.5.1 字符常量
用一对单引号括起来的单个字符。 如' a ', ' A ', 二者不一样. 此外,以" \"开头后接一个字符或n个字符代表了 一种特殊字符常量。 –––转义字符。 如 \ n ––换行, \ r –– 回车
40
其它如下表: 字符形式 \n \t \v \b \r \f \\ \' \dd d\xxh
/*输出c的值*/
}
13
int max (x, y)
int x, y; /*对形参x、y作类型定义*/
{ int z;
/*max函用到的变量z,也要加以定义*/
Hale Waihona Puke Baidu
z=y;
if (x>y) z=x;
return (z); /*将z的值返回,通过max带回调用处*/
}
14
通过分析,初步看到: 1. C程序全部由一个一个的函数构成。至少有一个 主函数main ( ), 其它函数可被主函数调用或相互 调用。其它函数可为C 函数库中函数,也可为自己 编的函数。
6
1983年,美国标准化协会(ANSI) 制定了ANSI C。 ANSI C 为基础: 不同机器有不同版本,尤其是函数均应参考 相应的机器。
7
§ 1.2 C语言的特点
只有通过学习,方可理解C之特点,先简叙之: 1. 简洁、紧凑、方便、灵活
32个关键字,9种控制语句, 主要用小写字母,压缩一切不必要成分 2. 运算符丰富 除了最基本的+、-、×、÷、%等运算外, 还将括号、赋值、类型强制转换等均作为运算符, 共有34种运算符。
尤其是当今计算机应用极为广泛,软件的设计、 编写质量要求高,经常与硬件部分打交道,如: 界面设计等,所以用C语言编写是最理想的。因而 C语言也是当前计算机语言中用得最广泛的语言之 一。
3
§ 1.1 C语言出现的历史背景
一、操作系统的设计语言
O.S. –––操作系统,为用户使用计算机提供一 个操作环境:系统命令、语言编程等。
42
2.5.2 字符变量
用来存放一个字符的变量.
其定义方式为: char c1, c2; c1=' A '; c2= ' B ';
字符变量只占一个字节单元。
43
2.5.3 字符数据的实际存放形式
一个字符存入一个字符变量。其对应单元存 放的是其ASCII码,即ASCII码的二进制形式。
由此: 字符变量中的数据是一整型数据。输出 时既可输出字符,亦可输出整数,且字符变量可作整 数运算。
经进一步改进,至1977年出现了与具体机器无 关的C编译文本,从而使C语言广泛应用,各种 机器皆可使用。
1978 年 , 美 国 Brain W.Kernighan 与 Dennis. M. Ritchie 联 合 出 版 一 书 《 The C Programming Language》成为 ANSI C之基础。
printf( ). 7. 可用/ /对C语言加注释
17
18
§2.1. 数据类型
著名计算机科学家沃思提出: 程序=数据结构+算法
19
举 一个例子:以考生各科成绩及总分排队问 题为列。
成绩的存放 ––– 以数组形式 排队方法 –––– 算法
所以,存放数据的方式直接反映了一种语言的 数据表达能力。
用"long "或 "long int "定义
30
4.无符号型: 不存放符号,则不带符号数.
又分无符号整型,无符号短整型, 无符号长整型。
上述各种类型所占内存单元数及取值范围视 不同机器而不同。详见P13。
31
二、定义方法
整型变量分别以下列方式定义 1. 基本整型:
数据的存储方式又称之为:数据类型。
20
前面已述. C数据类型丰富,分为:
整型
基本类型
字符型 实型 枚举
单精度 双精度
构造类型 指针类型
数组 结构体 共用体
空类型
数据有常量、变量之分,均为其中一种类型。
本章先学习基本类型。
21
§2.2 常量与变量
2.2.1 常量和符号常量 常量 程序运行过程中不能被改变的量。 一般的数据显式写法均表示常量。
35
3. 若int, short int 长度相同,则二者皆可赋值。 4. 一个非负整数<32768 则可赋给 unsigned int。 5. 一个常数后加 'l',或'L',表示长整数. 如123l. 主要用
于函数调用时形、实参数传递。
36
§2.4 实型数据
2.4.1 实型常量
有二种表示形式
8
3. 数据结构丰富 除基本类型外, 有指针, 结构体、共同体等类型。
4. 具有结构化的控制语句 模块完整,控制中的语句可完整化。
5. 语法严格,但有灵活性 如:数据类型可相互通用:整型、字符型通用。
9
6. 可与机器硬件打交道,直接访问内存地址,具 有“ 高”、“ 低”级语言之功能。
7. 生成目标代码质量高,执行效率高。 8. 可移植性优于汇编语言。
例: main ( ) {int a, b, c, d; /*指定a, b, c, d为整型变量*/ unsignd u; /*指定u为无符号整型变量*/ a=12; b= –24; u=10;
33
c=a+u; d=b+u; printf("a+u=%d, b+u=%d\n",c,d); } 运行结果为 a+u=22, b+u= –14
由此看到: 不同类型的整型数据可进行算术运算。 但有一定规则,见§2.7.
34
三、关于整型常量
程序中出现的整型常数, 系统按以下规则分配 变量(内存单元)或赋值给相应变量
1. 当常数(量)在 – 32768~32767之间,则可赋给int, long int 变量。
2. 若超越,而在–2147483648~2147483647之间,则 可赋给 long int 变量。
sum=a+b;
printf("sum is %d\n", sum);
}
12
例3.main( )
/* 主函数*/
{ int a, b, c;
/*定义变量*/
scanf("%d, %d", &a, &b); /*输入变量a和b的值*/
c=max(a, b);/*调用max函数,将得到的值赋给c*/
printf("max=%d",c;)
简洁紧凑方便灵活32个关键字9种控制语句主要用小写字母压缩一切不必要成分运算符丰富除了最基本的等运算外还将括号赋值类型强制转换等均作为运算符共有34种运算符
1
C语言程序设计
第一章 第二章 第三章 第四章
第五章 第六章 第七章
2
第一章 C语言概述
C语言––– 既可作为系统软件的程序设计语 言,又可作为应用软件的程序设计语言。
44
看如下几个例子: 例1: main ( ) { char c1, c2; c1=97; c2=98; printf ("%c %c", c1, c2) }
运行结果 a b
45
例2: main ( ) { char c1, c2; c1= ' a '; c2=' b '; c1=c1– 32; c2=c2– 32; printf ("%c %c", c1, c2) }
int a, b, c; 2. 短整型
short int 或 short a, b, c;
3. 长整型 long int 或 long a, b, c;
32
4. 无符号型 unsigned a, b, c; unsigned short a, b, c; unsigned long a, b, c;
如:DOS. UNIX
以前:O. S .软件用汇编指令编写。汇编语言:一 种二进制指令代码的符号表示,既繁琐, 又易出错,可读性差。
改进:用C语言编写,既提高了程序的可读性, 又可与硬件打交道。
4
二、发展过程
1960年出现了Algol60语言,但该语言主要面 向问题,与硬件较远,故英国剑桥大学推出 了CPL(Combined Programming Language)
23
#define PRICE 30 符号常量(一般用大写,以区分变量)
再如: =3.1415629 #define PAI 3.1415629
24
2.2.2变量 程序执行中可以改变的量称为变量。变量包括
变量名和变量值。
变量名 用标识符命名,对应一定数量的内存存贮 单元,其单元数视变量类型而定。
一般地: 单精度占4字节内存单元; 双精度占8字节内存单元.
38
注意: 不同机器对实型变量的有效数字长度的限制 如: pc机, 单精度一般为7位, 双精度15位
于是: float a; a=123456.789 则实际赋值a123456.7
单精度数值: 10–38~1038 双精度数值: 10–308~10308
0235=2×82+3×8+5=15710 0146=1×82+4×8+6=10210 -012=-(1×8+2)=-1010 十六进制 以"0x"开头的整型数 如: 0x16, 0x28
29
2.3.2 整型变量 一、分类:
分为四种:基本型、短整型、长整型、无符号型 1.基本型:
用"int"定义 2.短整型:
功能 换行 横向跳格(即跳到下一个输出区) 竖向跳格 退格 回车 走纸换页 反斜杠字符“ \” 单引号(撇号)字符 1到3位8进制数所代表的字符 1到2位16进制数所代表的字符
41
注意: \
表示ASCII码字符
三位八进制
如 \ 101 –– 表示字母A 又: \ x 十六进制ASCII 字符
\ x 41–– 表示字母A
一旦变量被定义, 其类型便确定。则可检查其 运算的合法性。
如: a % b 表示a整除以b的余,则a,b必须为整型量。
27
§2.3整型数据
2.3.1 整型常量
整型常量 整型常数 C语言提供了三种形式
十进制 如: 256, 308, -120等
28
八进制 以数字0开头表示的整数 例:0235, 0146 -012等.
另: 需注意标识符长度,视不同系统而定。 设允许8个字符。 则: student_ name student_ number
为同一名字。
26
C语言中, 变量须先定义,后使用 如: int student student=30;
则若写成student=30, 则未定义, 编译时指出其错。
一旦变量被定义,即可在编译时为其分配相应 数量的单元。
1967年,Matin Richards对CPL进行改进、简化、 推 出 了 BCPL (Basic Combined Programming Language)
1970年,美国贝尔实验室Ken Thomson 以 BCPL为基础,再次简化推出了B语言,并写 了第一个UNIX系统。
5
美国贝尔实验室D.M. Ritchie 在B语言基础上设 计出了C语言,并用其将UNIX系统全部改写并 实现。
上述特点称为程序的模块化.
15
2. 函数的构成: 函数说明+函数体
函数说明包括: 函数名、类型、属性、参数等
函数体: 变量定义与执行语句
可允许空函数:
dump ( )
{
}
16
3. 函数的执行一定从main ( )开始。尽管main ( )函数 位置可自由。
4. 书写自由,一个语句可多行,一行可多个语句。 5. 每一条语句必须有一个分号; 6. C语言的输入 / 出均以函数形式出现。scanf( ),
1.十进制形式
如: 0.126, 523.64等
2. 指数形式
对于较大或较小的数,可用指数形式
0.0000126
1.26E –5
1260000
1.26E+6 或1.26E6
' E ', 'e ' 均可. 37
2.4.2 实型变量
分为单精度型与双精度型. 分别为 float x, y, z; (单精度) double a, b, c; (双精度)
10
§1.3 简单的C程序介绍
为了更好、更快地掌握C程序,我们先看几个C 语言程序:
例1. main( ) { printf ("This is a c program\n"); }
11
例2. main ( )
/*求两个数之和*/
{int a, b, sum; /*这是定义变量*/
a=123; b=456;
如程序中: 20 整型常量 15.8 实型常量 'a' 字符常量
22
还可用一个符号表示一个常量 符号常量
例: #define PRICE 30 main ( ) { int num, total; num=10; total=num*PRICE; printf("total=%d",total); }
标识符 由字母、数字、下划线组成且由字母或 下划线开头的字符串。
25
标识符可用来命名变量及作为常量名、函数名、 类型名、文件名等,一个程序内不得有重复名。
如: _sum, sum, student_name, price等 习惯上,变量名、函数名等用小写字母表示。常
量名用大写字母表示(以增加可读性)。
39
§2.5 字符型数据
2.5.1 字符常量
用一对单引号括起来的单个字符。 如' a ', ' A ', 二者不一样. 此外,以" \"开头后接一个字符或n个字符代表了 一种特殊字符常量。 –––转义字符。 如 \ n ––换行, \ r –– 回车
40
其它如下表: 字符形式 \n \t \v \b \r \f \\ \' \dd d\xxh
/*输出c的值*/
}
13
int max (x, y)
int x, y; /*对形参x、y作类型定义*/
{ int z;
/*max函用到的变量z,也要加以定义*/
Hale Waihona Puke Baidu
z=y;
if (x>y) z=x;
return (z); /*将z的值返回,通过max带回调用处*/
}
14
通过分析,初步看到: 1. C程序全部由一个一个的函数构成。至少有一个 主函数main ( ), 其它函数可被主函数调用或相互 调用。其它函数可为C 函数库中函数,也可为自己 编的函数。
6
1983年,美国标准化协会(ANSI) 制定了ANSI C。 ANSI C 为基础: 不同机器有不同版本,尤其是函数均应参考 相应的机器。
7
§ 1.2 C语言的特点
只有通过学习,方可理解C之特点,先简叙之: 1. 简洁、紧凑、方便、灵活
32个关键字,9种控制语句, 主要用小写字母,压缩一切不必要成分 2. 运算符丰富 除了最基本的+、-、×、÷、%等运算外, 还将括号、赋值、类型强制转换等均作为运算符, 共有34种运算符。
尤其是当今计算机应用极为广泛,软件的设计、 编写质量要求高,经常与硬件部分打交道,如: 界面设计等,所以用C语言编写是最理想的。因而 C语言也是当前计算机语言中用得最广泛的语言之 一。
3
§ 1.1 C语言出现的历史背景
一、操作系统的设计语言
O.S. –––操作系统,为用户使用计算机提供一 个操作环境:系统命令、语言编程等。
42
2.5.2 字符变量
用来存放一个字符的变量.
其定义方式为: char c1, c2; c1=' A '; c2= ' B ';
字符变量只占一个字节单元。
43
2.5.3 字符数据的实际存放形式
一个字符存入一个字符变量。其对应单元存 放的是其ASCII码,即ASCII码的二进制形式。
由此: 字符变量中的数据是一整型数据。输出 时既可输出字符,亦可输出整数,且字符变量可作整 数运算。
经进一步改进,至1977年出现了与具体机器无 关的C编译文本,从而使C语言广泛应用,各种 机器皆可使用。
1978 年 , 美 国 Brain W.Kernighan 与 Dennis. M. Ritchie 联 合 出 版 一 书 《 The C Programming Language》成为 ANSI C之基础。
printf( ). 7. 可用/ /对C语言加注释
17
18
§2.1. 数据类型
著名计算机科学家沃思提出: 程序=数据结构+算法
19
举 一个例子:以考生各科成绩及总分排队问 题为列。
成绩的存放 ––– 以数组形式 排队方法 –––– 算法
所以,存放数据的方式直接反映了一种语言的 数据表达能力。