c语言程序设计谭浩强ch2基本数据类型和表达式
C语言(谭浩强)第2章数据描述
• • • •
转义字符表
转义字符形式 \n \t \v \b \r \f \a \\ \? \“ \’ \ddd xhh 换行 水平制表 垂直制表 退格 回车 走纸换页 报警(如铃声) 反斜杠 问号 双撇号 单撇号 1~3位八进制常数 1~2位十六进制常数 意 义
例2.5 /* 文件名:ex020501.c */ /*打印人民币符号″¥″*/ #include <stdio.h> int main(void) { printf(″Y\b=\n″); return 0; }
/* 注意格式码 */ /* 注意格式码 */
例2.4 /* 文件名:ex020401.c */ #include <stdio.h> int main(void) { char c; c = 0362; printf (″%d\n″, c); return 0; } 运行结果: -14
2. 字符常量
下面不是合法的整型常量:
09876——(非十进制数,又非八进制数,因为有数 字8和9) 20fa——(非十进制数,又非十六进制数,因为不 是以0x开头) 0x10fg——(出现了非法字符)
2. 整数常量类型的确定
在C语言中整数可以进一步分为short、int、 long和long logn等类型。那么,对于一个常数如 何分辨其类型呢?一般说来,有以下原则: 1)默认原则:在没有任何特别标志的情况下,可 以按照常数所在的范围,决定其类型。例如,在 16位的机器中,当一个常整数的值在十进制32768~32767(八进制数0~0177777、十六制数 0x0~0xFFFF),则被看作一个short int或int型 整数。超出上述范围的整常数,则被看作长整数 (32位)表示。例如,234、32766、0177776、 0xFFFE等被看作是int型,而-32769、32768、 0200000、0x10000等被看作是long型。
c语言程序设计(谭浩强)
其它常量:直接用数据表示 例: 23 45.5 ‘e’ 3e+2 2)在 C 语言中,对变量要 先定义,后使用。 3)如果一个变量被指定为一确定类型后,在 C 语言编译时,就能 为其分配相应 的存储单元。 a 变量名 存储地址)2000 3 变量值 存储单元 地址的 概念 3.常用的基本数据类型 (1)整型 1)整型常量:十进制整数 123,-11,0 非 0 开头 八进制整型 0123,-011 0 开头 十六进制整型 0x11 0x20 0x0D 0XFF 0x4e 0x/0X 开头 唯 C 动力 http://www.clearner.net/ 提供 10 说明:在一个整常量后面加一个字母:l 或 L,是长整型常量。22L 0733L 0xa e4l 2)整型变量: 定义 存储字节 数的范围 基本型 int x (2 字节) -32768 ̄32 767 短整型 short int x (2 字节) -32768 ̄32767 长整型 long int x (4 字节) -2,147,483,648 ̄2,147,483,647 无符号型 unsigned int x (2 字节) 0 ̄65535 u nsigned short x(2 字节) 0 ̄65535 unsigned long x (4 字节) 0 ̄4,294,967,2 95 注: 数据在内存中是以:二进制形式存放 如:9 为 00001001 例: x=13; x=01 5 ; x=0xD 存储结构 见 P44 图 3.5 注:数据超过数据范围,会发生数据溢出 例 3 .2、3.3 (2)实型(浮点数) 1)实型常量: 十进制整数 1.23 .0123 指数形式 1 .23e3,1.00e-3 2)实型变量: 数的表示范围 P46 表 3.2 单精度 float x (4 字 节)3.4x10-38 ̄3.4x1038 TC 默认 双精度 double x (8 字节)1.7x10-308 ̄1.7x10 308 说明:实型常量 不分 float 和 double,只有十进制表达方式 有的 C 编译系统 64 位存储方式,如尾加 f 或 F 可表示 32 位:324.567f 例:x=1.23; x=123e3 P 47 例 3.4(存储精度) (3)字符型 1)字符常量: a) 用单引号括起来的一个字符 ‘a’ ‘A’ b) 转义字符(由“\专用字母” ) 书 P48 表 3.3 例 3.5 \0 字符串 结束符 \n 换行 \t 水平制表 \ddd 八进制数 \xdd 十六进制数 2)字符变量: cha r c (1 字节) 说明:一个字符变量,只能放一个字符常量。实际是把该常量的 AS CII 值,送入字 符变量中。即: ‘B’ (66) c (字符变量) 书 P374ASCII 表 p50 例 3.6-7 c=‘B’ c 的内容为 66 故:字符数据可以进行算术运算;即:c=‘B ’+2 为 68 字符数据在内存中的存储方式 书 P50 唯 C 动力 http://www.clearner .net/ 提供 11 unsigned char 0-255 char -128-127 有符号数在 TC 中是用补码表示的 127( 0x7f) 0111 1111 128(0x80) 1000 0000 复习:补码的规定: 正数:其原码、反码、 补码相同 负数: 最高位为 1, 其余各位为原码的反码(原码的相应位取反), 然后 对整个数加 1。 140(0x8c) 1000 1100→1111 0011 + 1(取反加 1)→1111 0100→-0 x74 -0x74 1000 1011 + 1(取反加 1) → 1000 1100 → 0x8c (0x80 为负数-74 高位 为 1) 3)字符串常量 用双引号括起来的字符 “a” , “ABFD” “a” =“a\0” <> ‘A’ 说明:C 规定,在每一个字符串的结尾应加一个“字符串结束标志” (\0 ) , 以便系统判断字符串是否结束。 4.各类数值间的混合运算 1)整型、字符型 、单精度型、双精度型数据——可以混合运算 2)字符型、整型——可以通用 规则: 高 double float long unsigned 低 int char,short 例如 10+’a’+1.5-8765.1 234*’b’ -858873.593200 (TC 默认 6 位小数) 10+97+1.5-8765.1234*98 二.运算 符和表达式 C 表达式:由变量、常量、函数等运算对象和运算符组成的式子 C 运算 符作用: 1)能把一些基本运算模块用单一的运算符处理 2)使用丰富的运算符,构 成多种表达式 C 运算符有优先级,优先级高的先执行,同级的由结合规则决定其处理 规则 C 运算符有两种结合规则: 1)从左到右的结合运算顺序;即:a=5+x-10;运 算对象与左边运算符结合 2)从右到左的结合运算顺序;即:x=y=7;运算对象与右边 运算符结合 C 运算符分类 书 P55 1.基本运算符(算术运算符) C 语言有 7 个基本 运算符 1)单目运算符: (表示符号) 正号“+” 负号“-” 2)双目运算符:+、 - 、*、/、%(模运算,求余运算,两侧为整数) 唯 C 动力 http://www.clearner. net/ 提供 12 说明: a)运算顺序的结合方向从左到右 b)求余(取模)运算符是对两个整数 相除的余数,计算结果的符号与第一个数的 符号相同。即:-5%3 值为-2、 -5%-3 值 为-2�
c程序设计谭浩强.ppt
二.
实型数据
1. 实型数据类型标识符 实型数据有单精度型和双精度型两种。 单精度型:类型标识符为float。 双精度型:类型标识符为double。
类型 float double
占用字节数 4 8
有效数字 6-7 15-16
数值范围 3.4*10-383.4*1038 1.7*10-3081.7*10308
m;
unsigned
3、整型常量
C语言中整型常量可以用3种形式表示:
① 十进制数,如+123,-234,0,23;
② 八进制数,如 0234,0777; ③ 十六进制数,如0x234,0x9A。 整型数又分为基本整型、短整型、长整型(后加l或L) 和无符 号整型数(后加u或U) 。 前缀、后缀可同时使用以表示不同类型不同进制的整型数。 如03456LU表示八进制无符号长整型数。
int
short int long int unsigned int unsigned short unsigned long
2
2 4 2 2 4
-32768(-215)~32767(215-1)
-32768(-215)~32767(215-1)
-2147483648(231)~2147483647(231-1)
阶 符
指数部分
数 符
尾数部分
2. 实型变量的定义
float f,f1; double d; /* 定义f、f1为单精度实型变量 */ /* 定义d为双精度实型变量 */
0~65535(216-1) 0~65535(216-1) 0~4294967295(232-1)
任何一种数据类型都有常量和变量之分
2、整型变量的定义
例如:int long
C++程序设计(谭浩强完整版)
a=0.01 b=0.03=9.7654e-005
Press any key to continue
cout<<"a="<<a<<'\t'<<"b="<<b<<endl; cout<<"c="<<c<<'\t'<<"d="<<d<<endl;
0
1
0
0
0
0
0
1
在程序中表示为: char grade ;//定义一个字符型的变量空间(1个字节) grade=„A‟; //必须用‘ ’表示,否则易与标识符混同 „ ‟内括起来的字符表示该字符的ASCII码。
17
进一步,由于在内存中的形式与整型数据相同,所以,可以直接用 其整型值给变量赋值。 char grade; grade=65; 以下的赋值形式均是等同的。 grade='A'; grade=65 ; grade=0x41; 输出: a=A b=A 即在内存中的表示均是相同的 grade=0101;
实型变量分单精度 float 和双精度 double 两种形式: float:占四个字节,提供7~8位有效数字。 double: 占八个字节,提供15~16位有效数字。 举例说明
14
#include<iostream.h>
void main(void)
{ float a, b;
double c, d;
C 程序设计(谭浩强完整版)第二章解析
一般变量都是用匈牙利命名法命名的。 int nCount; char chChoice;
整型数据
整型常量:
常量是根据其表面形式来判定,整型量即是没有小数点的 整数,范围:-231~(231-1) ,有三种形式: 1)十进制(默认方式)
2)八进制 以0开头
43 1345 87654
043, 056, 011
1
0
0
0
0
0
1
非打印字符
有些ASCII的字符代表某些操作,不能打印出来, 如回车、退格等,可用两种方式表示这些字符。 1)用ASCII码的形式 2)用转义字符 char re=13; char re=‘\n’;(p15)
转义字符 \a \n \t \b \r \f \v
含 响铃
义
ASCII代码 7 10 9 8 13 12 8
不同类型的整型数据间 { unsigned short a;的赋值归根到底就是一 short int b= -1; 条:按存储单元中的存 储形式直接传送。
void main() a=b; cout<<"a="<<a<<endl; unsigned short a;
}
结果:65535
a 1111111111111111
3)十六进制 以0x开头 0xdf(举例说明)
0x12
0xa3
0x34
#include<iostream.h>
void main(void)
{ int int10,int8,int16; //定义3个整型变量 int10=10; int8=010; int16=0x10; //默认为十进制 //八进制 //十六进制 输出 int10=10 int8=8 int16=16
c语言程序设计第三版谭浩强课后习题及答案
c语言程序设计第三版谭浩强课后习题及答案C语言程序设计是一门基础而重要的编程课程,谭浩强教授的《C语言程序设计》第三版是许多高校计算机专业学生的必修教材。
课后习题是检验学生对课程内容掌握程度的重要手段,以下是部分习题及答案的示例。
# 第一章:C语言概述习题1:简述C语言的特点。
答案: C语言是一种结构化编程语言,具有以下特点:1. 简洁、紧凑、贴近硬件。
2. 丰富的运算符和数据类型。
3. 具有结构化控制语句。
4. 支持模块化程序设计。
5. 可移植性好。
习题2:为什么说C语言具有“高级语言”的特点?答案: C语言被称为高级语言,因为它:1. 抽象了机器语言的复杂性。
2. 允许使用变量名代替内存地址。
3. 提供了丰富的控制结构和数据类型。
4. 支持高级的编程概念,如函数、数组和指针。
# 第二章:数据类型、运算符和表达式习题3:写出C语言中的基本数据类型。
答案: C语言中的基本数据类型包括:- 整型:`int`- 浮点型:`float` 和 `double`- 字符型:`char`习题4:解释赋值运算符的右结合性。
答案:赋值运算符的右结合性意味着当多个赋值运算符出现在同一个表达式中时,它们将从右向左进行计算。
例如,在表达式 `a = b = c;` 中,首先计算 `b = c`,然后将结果赋值给 `a`。
# 第三章:控制语句习题5:描述if语句的基本用法。
答案: if语句用于基于条件执行代码块。
基本语法如下:```cif (条件) {// 条件为真时执行的代码} else {// 条件为假时执行的代码}```其中条件是一个表达式,如果其值为真(非零),则执行if块中的代码;如果为假(零),则执行else块中的代码。
习题6:举例说明for循环的使用。
答案: for循环用于重复执行一段代码,直到给定条件不再满足。
基本语法如下:```cfor (初始化表达式;条件表达式;更新表达式) {// 循环体}```例如,打印0到9的数字:```cfor (int i = 0; i < 10; i++) {printf("%d ", i);}```以上是部分习题及答案的示例。
C语言第3章(谭浩强)
void main( ) { int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%d\n”,c,d); } 运行结果:a+u=22,b+u=-14 结论:不同类型的整型数据可以进行算 术运算。
位数 16
取值范围 -215-(215-1) -32768—+32767 -32768—+32767
Short [int] Long [int]
短整型 长整型
16 32
16 16 32
Unsinged int 无符号整型 Unsinged short [int] Unsinged long [int] 无符号短整 型 无符号长整 型
8
④大写字母与小写字母意义不同, 被认为是两个不同的字符。一般变 量名用小写字母表示。 注意:常量名常用大写、变量名常 用小写!
year Day a_12 _abcdef #123 .com $100 1999Y a=b 1_2_3 +abcedfghi ∏ -5 等
9
3、变量要先定义后使用
可以改为double型) void main( ) {float x;double y; x=123456.789;y=123456.789; printf(“%f, %f”,x,y);} 结果为: 123456.789062, 123456.789000
29
§3.5
字符型数据
一、字符常量 1、在C语言中字符型常量是用单引号括 起来的一个字符。 如:’a‟、’A‟、’3‟、’?‟、’ ’、 ’$‟等。 2、以‚\”开头的转义字符,如\n不代表 字母n,而是代表换行。
谭浩强C语言全书word版
2.4 变量
变量定义的语句格式: 类型符 变量名1,变量名2,„ 变量定义的意义:
系统给每一个变量名分配一个内存地址; 编译时根据变量的类型分配一定的内存单元; 根据变量的类型检查该变量所进行的运算是否合法 例:int num1,num2,total; num1 num2 total
存储器地址
1652
2.3.4 字符串常量
字符串常量:由一对双引号括起的字符序列。 例如:"Computer"及"program-1"。 程序主要用于输入、输出。 例如:printf("World,hello!\n"); 字符串常量与字符常量之间主要有以下区别: 引用符号不同:字符常量由单引号括起来,字符串常量由 双引号括起来。 容量不同:字符常量只能是单个字符,字符串常量则可以 含一个或多个字符。 字符串结束的标志:字符"\0"(ASCII码为0)。 例如,字符串"CHINA"的长度是6个字符。
格式为:
类型说明符 变量名1=初值1,变量名2=初值2,...;
2.4.1 整型变量
整型变量:只能保存整型值的变量。 整型变量的分类(按照分配的内存单元)
整型变量可分为以下几类:
基本型(类型说明符为int) 在内存中占2个字节(C++中占4个字节),其取值为基 本整常数(-32768~32767)。 短整型(short int):(占2个字节)
2.3.3 字符常量
字符型数据与整型数据的关系 【例2.5】写出下列程序的运行结果。 #include <stdio.h> void main() 运行结果如下: { A,B int i,j; 65,66 i=65; j=i+1; printf("%c,%c\n",i,j); /*以字符形式输出*/ printf("%d,%d\n",i,j); /*以整数形式输出*/ }
《C语言程序设计》教案(清华谭浩强)
《C语言程序设计》教案(清华谭浩强)第一章:C语言概述1.1 课程介绍介绍C语言的历史和发展解释C语言的特点和应用范围强调学习C语言的重要性和目的1.2 C语言的基本概念解释编程语言和编译器的概念介绍C语言的基本数据类型和变量讲解C语言的语法结构和程序结构1.3 C语言的编译过程解释编译器的角色和功能介绍编译过程中的预处理、编译、汇编和步骤强调编译过程中产生的文件和它们的作用第二章:基本数据类型和运算符2.1 基本数据类型介绍整型、浮点型、字符型和布尔型的概念和用法解释不同数据类型的存储方式和大小强调数据类型的选择和使用场景2.2 变量和常量解释变量的概念和作用介绍变量的声明和初始化方法讲解常量的概念和用法2.3 运算符介绍算术运算符、关系运算符和逻辑运算符的概念和用法解释赋值运算符和条件运算符的作用强调不同运算符的优先级和使用规则第三章:控制语句3.1 条件语句介绍if语句的语法和用法讲解switch语句的概念和用法强调条件语句的选择和嵌套使用3.2 循环语句介绍for循环、while循环和do-while循环的概念和用法解释循环控制语句如break和continue的作用强调循环条件的设置和循环次数的控制3.3 跳转语句介绍goto语句的概念和用法讲解label标签的作用和跳转规则强调跳转语句的使用场景和可能导致的问题第四章:函数和指针4.1 函数的基本概念介绍函数的定义和声明讲解函数的参数传递和返回值强调函数的命名规则和命名规范4.2 指针的概念和用法解释指针的概念和作用介绍指针的声明和初始化方法讲解指针的赋值和指针运算4.3 指针和数组介绍数组的概念和用法解释指针和数组的关系强调指针在数组操作中的应用第五章:结构体和文件操作5.1 结构体的概念和用法介绍结构体的定义和声明讲解结构体的成员访问和内存布局强调结构体在数据组织中的应用5.2 文件操作的基本概念解释文件的概念和文件操作的重要性介绍文件打开、读写、关闭等操作的方法强调文件操作中的错误处理和文件指针的管理第六章:动态内存分配6.1 动态内存分配的概念介绍动态内存分配的原因和必要性解释malloc、calloc和realloc函数的作用和用法强调动态内存分配的注意事项和错误处理6.2 链表的概念和用法介绍链表的定义和结构讲解链表的创建、插入、删除和遍历操作强调链表的优势和应用场景6.3 动态内存分配的应用实例通过实例演示动态内存分配在实际编程中的应用讲解内存泄漏和内存溢出的概念强调编写高效和安全的程序的重要性第七章:字符串处理7.1 字符串的基本概念介绍字符串的定义和表示方法解释字符串的长度和字符串的结束标志强调字符串与数组的区别和联系7.2 字符串的常用函数介绍字符串的输入输出函数如printf和scanf 讲解字符串的拷贝、连接、比较等操作函数强调字符串处理函数的使用和注意事项7.3 字符串处理的应用实例通过实例演示字符串处理在实际编程中的应用讲解字符串排序、查找和替换等操作强调字符串处理在文本分析和数据处理中的应用第八章:标准库函数8.1 标准输入输出库函数介绍标准输入输出库stdio.h中的常用函数讲解文件读写、数据转换等函数的用法和功能强调标准库函数的使用场景和注意事项8.2 字符串处理库函数介绍字符串处理库string.h中的常用函数讲解字符串比较、查找和替换等函数的用法和功能强调字符串处理库函数的使用和与其他库函数的配合8.3 数学计算库函数介绍数学计算库math.h中的常用函数讲解数学运算、三角函数和指数函数等函数的用法和功能强调数学计算库函数在数学计算和科学计算中的应用第九章:并发编程和同步机制9.1 并发编程的基本概念介绍并发编程的定义和目的解释进程和线程的概念和关系强调并发编程的优势和挑战9.2 并发编程的同步机制介绍互斥锁、条件变量和信号量等同步机制的原理和用法讲解同步机制在多线程编程中的应用和注意事项强调同步机制在避免竞态条件和数据一致性中的重要性9.3 并发编程的应用实例通过实例演示并发编程在实际应用中的优势和挑战讲解多线程的创建、同步和通信等操作强调并发编程在多任务处理和性能优化中的应用第十章:C语言编程实践10.1 编程实践的重要性强调编程实践在学习和掌握C语言中的重要性解释编程实践对于提高编程能力和解决问题的作用强调编程实践中的代码质量和编程规范10.2 编程实践的项目和案例介绍常见的编程实践项目和案例讲解实际编程中的问题解决方法和技巧强调编程实践中的调试和测试的重要性10.3 编程实践的资源和工具介绍编程实践中的常用工具和环境讲解集成开发环境(IDE)的使用和代码管理强调编程实践中的团队合作和代码分享的重要性重点和难点解析重点环节1:C语言的基本概念和特点需要重点关注C语言的历史和发展,以及其特点和应用范围。
(C++_面向对象程序设计_谭浩强)第2章__数据类型与表达式
第2章数据类型与表达式2.1 C++的数据类型2.2 常量2.3 变量2.4 C++的运算符2.5 算术运算符与算术表达式2.6 赋值运算符与赋值表达式2.7 逗号运算符与逗号表达式2.1 C++的数据类型计算机处理的对象是数据,而数据是以某种特定的形式存在的(例如整数、浮点数、字符等形式)。不同的数据之间往往还存在某些联系(例如由若干个整数组成一个整数数组)。数据结构指的是数据的组织形式。例如,数组就是一种数据结构。不同的计算机语言所允许使用的数据结构是不同的。处理同一类问题,如果数据结构不同,算法也会不同。例如,对10个整数排序和对包含10个元素的整型数组排序的算法是不同的。C++可以使用的数据类型如下:C++的数据包括常量与变量,常量与变量都具有类型。由以上这些数据类型还可以构成更复杂的数据结构。例如利用指针和结构体类型可以构成表、树、栈等复杂的数据结构。C++并没有统一规定各类数据的精度、数值范围和在内存中所占的字节数,各C++编译系统根据自己的情况作出安排。书中表2.1列出了Visual C++数值型和字符型数据的情况。说明:(1) 整型数据分为长整型(long int)、一般整型(int)和短整型(short int)。在int前面加long和short分别表示长整型和短整型。(2) 整型数据的存储方式为按二进制数形式存储,例如十进制整数85的二进制形式为1010101,则在内存中的存储形式如图2.1所示。图2.1(3) 在整型符号int和字符型符号char的前面,可以加修饰符signed(表示“有符号”)或unsigned(表示“无符号”)。如果指定为signed,则数值以补码形式存放,存储单元中的最高位(bit)用来表示数值的符号。如果指定为unsigned,则数值没有符号,全部二进制位都用来表示数值本身。例如短整型数据占两个字节,见图2.2。图2.2有符号时,能存储的最大值为215-1,即32767,最小值为-32768。无符号时,能存储的最大值为216-1,即65535,最小值为0。有些数据是没有负值的,可以使用unsigned,它存储正数的范围比用signed时要大一倍。(4) 浮点型(又称实型)数据分为单精度(float)、双精度(double)和长双精度(long double)3种,在Visual C++ 6.0中,对float提供6位有效数字,对double提供15位有效数字,并且float和double的数值范围不同。对float分配4个字节,对double和long double分配8个字节。(5) 表中类型标识符一栏中,方括号[ ]包含的部分可以省写,如short和short int等效,unsigned int和unsigned等效。常量的值是不能改变的,一般从其字面形式即可判别是否为常量。常量包括两大类,即数值型常量(即常数)和字符型常量。如12,0,-3为整型常量,4.6,-1.23为实型常量,包含在两个单撇号之间的字符为字符常量,如′a′,′x′。这种从字面形式即可识别的常量称为“字面常量”或“直接常量”。2.2 常量2.2.1 什么是常量2.2.2 数值常量数值常量就是通常所说的常数。在C++中,数值常量是区分类型的,从字面形式即可识别其类型。1. 整型常量(整数)的类型在上一节中已知道: 整型数据可分为int,short int,long int以及unsigned int,unsigned short,unsigned long等类别。整型常量也分为以上类别。为什么将数值常量区分为不同的类别呢?因为在进行赋值或函数的参数虚实结合时要求数据类型匹配。那么,一个整型常量怎样从字面上区分为以上的类别呢?(1) 一个整数,如果其值在-32768~+32767范围内,认为它是short int型,它可以赋值给short int型、int型和long int型变量。(2) 一个整数,如果其值超过了上述范围,而在-2147483648~+2147483647范围内,则认为它是long int型,可以将它赋值给一个int或long int型变量。(3) 如果某一计算机系统的C++版本(例如Visual C++)确定int与long int型数据在内存中占据的长度相同,则它们能够表示的数值的范围相同。因此,一个int型的常量也同时是一个long int型常量,可以赋给int型或long int型变量。(4) 常量无unsigned型。但一个非负值的整数可以赋值给unsigned整型变量,只要它的范围不超过变量的取值范围即可。一个整型常量可以用3种不同的方式表示:(1) 十进制整数。如1357,-432,0等。在一个整型常量后面加一个字母l或L,则认为是long int型常量。例如123L,421L,0L等,这往往用于函数调用中。如果函数的形参为long int,则要求实参也为long int型,此时用123作实参不行,而要用123L作实参。(2) 八进制整数。在常数的开头加一个数字0,就表示这是以八进制数形式表示的常数。如020表示这是八进制数20,即(20)8,它相当于十进制数16。(3) 十六进制整数。在常数的开头加一个数字0和一个英文字母X(或x),就表示这是以十六进制数形式表示的常数。如0X20表示这是十六进制数20,即(20)16,它相当于十进制数32。2. 浮点数的表示方法一个浮点数可以用两种不同的方式表示:(1) 十进制小数形式。如21.456,-7.98等。它一般由整数部分和小数部分组成,可以省略其中之一(如78.或.06,.0),但不能二者皆省略。C++编译系统把用这种形式表示的浮点数一律按双精度常量处理,在内存中占8个字节。如果在实数的数字之后加字母F或f,表示此数为单精度浮点数,如1234F,-43f,占4个字节。如果加字母L或l,表示此数为长双精度数(long double),在GCC中占12个字节,在VisualC++ 6.0中占8个字节。(2) 指数形式(即浮点形式)一个浮点数可以写成指数形式,如3.14159可以表示为0.314159×101,3.14159×100,31.4159×10-1,314.159×10-2等形式。在程序中应表示为:0.314159e1,3.14159e0,31.4159e-1 ,314.159e-2,用字母e表示其后的数是以10为底的幂,如e12表示1012。其一般形式为数符数字部分指数部分上面各数据中的0.314159,3.14159, 31.4159, 314.159 等就是其中的数字部分。可以看到: 由于指数部分的存在,使得同一个浮点数可以用不同的指数形式来表示,数字部分中小数点的位臵是浮动的。例如:a=0.314159e1;a=3.14159e0;a=31.4159e-1;a=314.159e-2;以上4个赋值语句中,用了不同形式的浮点数,但其作用是相同的。在程序中不论把浮点数写成小数形式还是指数形式,在内存中都是以指数形式(即浮点形式)存储的。例如不论在程序中写成314.159或314.159e0,31.4159e1,3.14159e2, 0.314159e3等形式,在内存中都是以规范化的指数形式存放,如图2.3所示。图2.3数字部分必须小于1,同时,小数点后面第一个数字必须是一个非0数字,例如不能是0.0314159。因此314.159和314.159e0,31.4159e1,3.14159e2, 0.314159e3在内存中表示成0.314159×103。存储单元分为两部分,一部分用来存放数字部分,一部分用来存放指数部分。为便于理解,在图2.3中是用十进制表示的,实际上在存储单元中是用二进制数来表示小数部分,用2的幂次来表示指数部分的。对于以指数形式表示的数值常量,也都作为双精度常量处理。2.2.3 字符常量1. 普通的字符常量用单撇号括起来的一个字符就是字符型常量。如′a′,′#′,′%′,′D′都是合法的字符常量,在内存中占一个字节。注意:①字符常量只能包括一个字符,如′AB′ 是不合法的。②字符常量区分大小写字母,如′A′和′a′是两个不同的字符常量。③撇号(′)是定界符,而不属于字符常量的一部分。如cout<<′a′;输出的是一个字母“a”,而不是3个字符“′a′ ”。2. 转义字符常量除了以上形式的字符常量外,C++还允许用一种特殊形式的字符常量,就是以“\”开头的字符序列。例如,′\n′代表一个“换行”符。“cout<<′\n′; ” 将输出一个换行,其作用与“cout<<endl; ” 相同。这种“控制字符”,在屏幕上是不能显示的。在程序中也无法用一个一般形式的字符表示,只能采用特殊形式来表示。常用的以“\”开头的特殊字符见书中表2.2。3. 字符数据在内存中的存储形式及其使用方法将一个字符常量存放到内存单元时,实际上并不是把该字符本身放到内存单元中去,而是将该字符相应的ASCII代码放到存储单元中。如果字符变量c1的值为′a′,c2的值为′b′,则在变量中存放的是′a′的ASCII码97,′b′ 的ASCII码98,如图2.4(a)所示,实际上在内存中是以二进制形式存放的,如图2.4(b)所示。图2.4既然字符数据是以ASCII码存储的,它的存储形式就与整数的存储形式类似。这样,在C++中字符型数据和整型数据之间就可以通用。一个字符数据可以赋给一个整型变量,反之,一个整型数据也可以赋给一个字符变量。也可以对字符数据进行算术运算,此时相当于对它们的ASCII码进行算术运算。例2.1 将字符赋给整型变量。#include <iostream>using namespace std;int main( ){int i,j; //i和j是整型变量i=′A′; //将一个字符常量赋给整型变量ij=′B′; //将一个字符常量赋给整型变量jcout<<i<<′ ′<<j<<′\n′; //输出整型变量i和j的值,′\n′ 是换行符return 0;}执行时输出65 66i和j被指定为整型变量。但在第5和第6行中,将字符′A′和′B′分别赋给i和j,它的作用相当于以下两个赋值语句:i=65;j=66;因为′A′和′B′的ASCII码为65和66。在程序的第5和第6行是把65和66直接存放到i和j的内存单元中。因此输出65和66。可以看到:在一定条件下,字符型数据和整型数据是可以通用的。但是应注意字符数据只占一个字节,它只能存放0~255范围内的整数。例2.2 字符数据与整数进行算术运算。下面程序的作用是将小写字母转换为大写字母。#include <iostream>using namespace std;int main( ){char c1,c2;c1=′a′;c2=′b′;c1=c1-32;c2=c2-32;cout<<c1<<′ ′<<c2<<endl;return 0;}运行结果为A B′a′的ASCII码为97,而′A′的ASCII码为65,′b′为98,′B′为66。从ASCII代码表中可以看到每一个小写字母比它相应的大写字母的ASCII代码大32。C++符数据与数值直接进行算术运算,′a′-32得到整数65,′b′-32得到整数66。将65和66存放在c1,c2中,由于c1,c2是字符变量,因此用cout输出c1,c2时,得到字符A和B(A的ASCII 码为65,B的ASCII码为66)。4. 字符串常量用双撇号括起来的部分就是字符串常量,如″abc″,″Hello!″,″a+b″,″Li ping″都是字符串常量。字符串常量″abc″在内存中占4个字节(而不是3个字节),见图2.5。图2.5编译系统会在字符串最后自动加一个′\0′作为字符串结束标志。但′\0′并不是字符串的一部分,它只作为字符串的结束标志。如cout<<″abc″<<endl;输出3个字符abc,而不包括′\0′。注意: ″a″和′a′代表不同的含义,″a″是字符串常量,′a′ 是字符常量。前者占两个字节,后者占1个字节。请分析下面的程序片段: char c;//定义一个字符变量c=′a′;//正确c=″a″; //错误,c只能容纳一个字符字符串常量要用字符数组来存放,见第5章。请思考: 字符串常量″abc\n″包含几个字符?不是5个而是4个字符,其中“\n”是一个转义字符。但它在内存中占5个字节(包括一个“\0”字符) 。编译系统遇到“\”时就会把它认作转义字符的标志,把它和其后的字符一起作为一个转义字符。如果“\”后面的字符不能与“\”组成一个合法的转义字符(如″\c″),则在编译时显示出错信息。如果希望将“\”字符也作为字符串中的一个字符,则应写为″abc\\n″,此时字符包括5个字符,即a,b,c,\,n。如果有以下输出语句:cout<<″abc\\\n″<<endl;则会输出: abc\,然后换行。同理执行cout<<″I say \″Thank you!\″\n″;的输出是: I say ″Thank you!″如果在一个字符串中最后一个字符为“\”,则表示它是续行符,下一行的字符是该字符串的一部分,且在两行字符串间无空格。如cout<<″We must study C\//本行最后的“\”后面的空格和换行均不起作用++ hard!″;//本行的字符紧连在上一行最后的“\”前面字符之后则输出:We must study C++ hard!2.2.4 符号常量为了编程和阅读的方便,在C++程序设计中,常用一个符号名代表一个常量,称为符号常量,即以标识符形式出现的常量。例2.3 符号常量的使用。#define PRICE 30 //注意这不是语句,末尾不要加分号int main ( ){ int num,total;num=10;total=num * PRICE;cout<<″total=″<<total<<endl;return 0;}程序中用预处理命令#define指定PRICE在本程序单位中代表常量30,此后凡在本程序单位中出现的PRICE都代表30,可以和常量一样进行运算,程序运行结果为total=300请注意符号常量虽然有名字,但它不是变量。它的值在其作用域(在本例中为主函数)内是不能改变的,也不能被赋值。如用赋值语句“PRICE=40;”给PRICE赋值是错误的。使用符号常量的好处是:(1) 含义清楚。(2) 在需要改变一个常量时能做到“一改全改”。如#define PRICE 352.3 变量2.3.1 什么是变量其实在前面的例子中已经多次用到了变量。在程序运行期间其值可以改变的量称为变量。一个变量应该有一个名字,并在内存中占据一定的存储单元,在该存储单元中存放变量的值。请注意区分变量名和变量值这两个不同的概念,见图2.6。图2.62.3.2 变量名规则先介绍标识符的概念。和其他高级语言一样,用来标识变量、符号常量、函数、数组、类型等实体名字的有效字符序列称为标识符(identifier)。简单地说,标识符就是一个名字。变量名是标识符的一种,变量的名字必须遵循标识符的命名规则。C++规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。下面列出的是合法的标识符,也是合法的变量名:sum, average, total, day, month, Student_name, tan, BASIC,li_ling下面是不合法的标识符和变量名:M.D.John, $123, #33, 3G64, Ling li, C++, Zhang-ling, U.S.A.注意,在C++中,大写字母和小写字母被认为是两个不同的字符。因此,sum和SUM是两个不同的变量名。一般地,变量名用小写字母表示,与人们日常习惯一致,以增加可读性。应注意变量名不能与C++的关键字、系统函数名和类名相同。在国外软件开发工作中,常习惯在变量前面加一个字母以表示该变量的类型,如iCount表示这是一个整型变量,cSex表示这是一个字符型变量。C++没有规定标识符的长度(字符个数),但各个具体的C编译系统都有自己的规定。有的系统取32个字符,超过的字符不被识别。2.3.3 定义变量在C++语言中,要求对所有用到的变量作强制定义,也就是必须“先定义,后使用”,如例2.2和例2.3那样。定义变量的一般形式是变量类型变量名表列;变量名表列指的是一个或多个变量名的序列。如float a,b,c,d,e;定义a,b,c,d,e为单精度型变量,注意各变量间以逗号分隔,最后是分号。可以在定义变量时指定它的初值。如float a=83.5,b,c=64.5,d=81.2,e; //对变量a,c,d指定了初值,b和d 未指定初值C语言要求变量的定义应该放在所有的执行语句之前,而C++则放松了限制,只要求在第一次使用该变量之前进行定义即可。也就是说,它可以出现在语句的中间,如int a;//定义变量a(在使用a之前定义)a=3; //执行语句,对a赋值float b; //定义变量b(在使用b之前定义)b=4.67; //执行语句,对b赋值char c; //定义变量c(在使用c之前定义)c=′A′; //执行语句,对c赋值C++要求对变量作强制定义的目的是:(1) 凡未被事先定义的,不作为变量名,这就能保证程序中变量名使用得正确。例如,如果在声明部分写了int student;而在执行语句中错写成statent。如statent=30;在编译时检查出statent未经定义,作为错误处理。输出“变量statent未经声明”的信息,便于用户发现错误,避免变量名使用时出错。(2) 每一个变量被指定为一确定类型,在编译时就能为其分配相应的存储单元。如指定a和b为int型,一般的编译系统对其各分配4个字节,并按整数方式存储数据。(3) 指定每一变量属于一个特定的类型,这就便于在编译时,据此检查该变量所进行的运算是否合法。例如,整型变量a和b,可以进行求余运算:a%b%是“求余”(见2.4 节),得到a/b的余数。如果将a和b指定为实型变量,则不允许进行“求余”运算,在编译时会给出有关的出错信息。2.3.4 为变量赋初值允许在定义变量时对它赋予一个初值,这称为变量初始化。初值可以是常量,也可以是一个有确定值的表达式。如float a,b=5.78*3.5,c=2*sin(2.0);表示定义了a,b,c为单精度浮点型变量,对b初始化为5.78*3, 对c初始化为2*sin(2.0),在编译连接后,从标准函数库得到正弦函数sin(2.0)的值,因此变量c有确定的初值。变量a未初始化。如果对变量未赋初值,则该变量的初值是一个不可预测的值,即该存储单元中当时的内容是不知道的。例如,若未对a和b赋值,执行输出语句cout<<a<<″ ″<<b<<″ ″<<c<<endl;输出结果可能为1.48544e-38 15 1.81858(各次运行情况可能不同)初始化不是在编译阶段完成的(只有在第4章中介绍的静态存储变量和外部变量的初始化是在编译阶段完成的),而是在程序运行时执行本函数时赋予初值的,相当于执行一个赋值语句。例如, int a=3;相当于以下两个语句:int a; // 指定a为整型变量a=3;// 赋值语句,将3赋给a对多个变量赋予同一初值,必须分别指定,不能写成float a=b=c=4.5;而应写成float a=4.5,b=4.5,c=4.5;或float a,b,c=4.5;a=b=c;2.3.5 常变量在定义变量时,如果加上关键字const,则变量的值在程序运行期间不能改变,这种变量称为常变量(constant variable)。例如, const int a=3; //用const来声明这种变量的值不能改变,指定其值始终为3在定义常变量时必须同时对它初始化(即指定其值),此后它的值不能再改变。常变量不能出现在赋值号的左边。例如上面一行不能写成const int a;a=3; //常变量不能被赋值可以用表达式对常变量初始化,如const int b=3+6,c=3*cos(1.5);//b的值被指定为9,c的值被指定为3*cos(1.5)但应注意,由于使用了系统标准数学函数cos,必须将包含该函数有关的信息的头文件“cmath”(或math.h)包含到本程序单位中来,可以在本程序单位的开头加上以下#include命令:#include <cmath> 或#include <math.h>变量的值应该是可以变化的,怎么值是固定的量也称变量呢?其实,从计算机实现的角度看,变量的特征是存在一个以变量名命名的存储单元,在一般情况下,存储单元中的内容是可以变化的。对常变量来说,无非在此变量的基础上加上一个限定: 存储单元中的值不允许变化。因此常变量又称为只读变量(read-only-variable)。请区别用#define命令定义的符号常量和用const定义的常变量。符号常量只是用一个符号代替一个字符串,在预编译时把所有符号常量替换为所指定的字符串,它没有类型,在内存中并不存在以符号常量命名的存储单元。而常变量具有变量的特征,它具有类型,在内存中存在着以它命名的存储单元,可以用sizeof运算符测出其长度。与一般变量惟一的不同是指定变量的值不能改变。用#define命令定义符号常量是C语言所采用的方法,C++把它保留下来是为了和C兼容。C++的程序员一般喜欢用const定义常变量。虽然二者实现的方法不同,但从使用的角度看,都可以认为用了一个标识符代表了一个常量。有些书上把用const定义的常变量也称为定义常量,但读者应该了解它和符号常量的区别。2.4 C++的运算符C++的运算符十分丰富,使得C++的运算十分灵活方便。例如把赋值号(=)也作为运算符处理,这样,a=b=c=4就是合法的表达式,这是与其他语言不同的。C++提供了以下运算符:(1) 算术运算符+(加)-(减) *(乘) /(除) %(整除求余)++(自加) --(自减)(2) 关系运算符>(大于)<(小于) ==(等于)>=(大于或等于)<=(小于或等于)!=(不等于)(3) 逻辑运算符&&(逻辑与) ||(逻辑或) !(逻辑非)(4) 位运算符<<(按位左移) >>(按位右移) &(按位与) |(按位或) ∧(按位异或) ~(按位取反)(5) 赋值运算符(=及其扩展赋值运算符)(6) 条件运算符(?:)(7) 逗号运算符(,)(8) 指针运算符(*)(9)引用运算符和地址运算符(&)(10) 求字节数运算符(sizeof)(11) 强制类型转换运算符( (类型) 或类型( ))(12) 成员运算符(.)(13) 指向成员的运算符(->)(14) 下标运算符([ ])(15) 其他(如函数调用运算符())2.5 算术运算符与算术表达式2.5.1 基本的算术运算符在本章中主要介绍算术运算符与算术表达式,赋值运算符与赋值表达式,逗号运算符与逗号表达式,其他运算符将在以后各章中陆续介绍。+(加法运算符,或正值运算符。如3+5,+3)-(减法运算符,或负值运算符。如5-2,-3)* (乘法运算符。如3*5)/(除法运算符。如5/3)%(模运算符,或称求余运算符,%两侧均应为整型数据,如7%4的值为3)。需要说明,两个整数相除的结果为整数,如5/3的结果值为1,舍去小数部分。但是,如果除数或被除数中有一个为负值,则舍入的方向是不固定的。例如,-5/3在有的C++系统上得到结果-1,有的C++系统则给出结果-2。多数编译系统采取“向零取整”的方法,即5/3的值等于1,-5/3的值等于-1,取整后向零靠拢。如果参加+, -, *, / 运算的两个数中有一个数为float型数据,则运算的结果是double型,因为C++在运算时对所有float型数据都按double型数据处理。2.5.2 算术表达式和运算符的优先级与结合性用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C++语法规则的式子,称C++算术表达式。运算对象包括常量、变量、函数等。例如,下面是一个合法的C++算术表达式:a*b/c-1.5+′a′C++语言规定了运算符的优先级和结合性。在求解表达式时,先按运算符的优先级别高低次序执行,例如先乘除后加减。如有表达式a-b*c,b的左侧为减号,右侧为乘号,而乘号优先于减号,因此,相当于a-(b*c)。如果在一个运算对象两侧的运算符的优先级别相同,如a-b+c,则按规定的“结合方向”处理。C++规定了各种运算符的结合方向(结合性),算术运算符的结合方向为“自左至右”,即先左后右,因此b先与减号结合,执行a-b的运算,再执行加c的运算。“自左至右的结合方向”又称“左结合性”,即运算对象先与左面的运算符结合。以后可以看到有些运算符的结合方向为“自右至左”,即右结合性(例如赋值运算符)。关于“结合性”的概念在其他一些高级语言中是没有的,是C和C++的特点之一,希望能弄清楚。附录B列出了所有运算符以及它们的优先级别和结合性。2.5.3 表达式中各类数值型数据间的混合运算图2.7假设已指定i为整型变量,f为float变量,d为double型变量,e为long型,有下面表达式:10+′a′+i*f-d/e运算次序为: ①进行10+′a′的运算,先将′a′转换成整数97,运算结果为107。②进行i*f的运算。先将i与f都转换成double型,运算结果为double型。③整数107与i*f的积相加。先将整数107转换成双精度数(小数点后加若干个0,即107.000…00),结果为double型。④将变量e转换成double型,d/e结果为double型。⑤将10+′a′+i*f的结果与d/e的商相减,结果为double型。上述的类型转换是由系统自动进行的。2.5.4 自增和自减运算符在C和C++中,常在表达式中使用自增(++)和自减(--)运算符,他们的作用是使变量的值增1或减1,如++i(在使用i之前,先使i的值加1,如果i的原值为3,则执行j=++i 后,j的值为4)--i (在使用i之前,先使i的值减1,如果i的原值为3,则执行j=--i 后,j的值为2)i++ (在使用i之后,使i的值加1,如果i的原值为3,则执行j=i++后,j的值为3,然后i变为4)i--(在使用i之后,使i的值减1,如果i的原值为3,则执行j=i--后,j 的值为3,然后i变为2)++i是先执行i=i+1后,再使用i的值;而i++是先使用i的值后,再执行i=i+1。正确地使用++和--,可以使程序简洁、清晰、高效。请注意:(1) 自增运算符(++)和自减运算符(--)只能用于变量,而不能用于常量或表达式。(2) ++和--的结合方向是“自右至左”,见附录B。(3) 自增运算符(++)和自减运算符(--)使用十分灵活,但在很多情况下可能出现歧义性,产生“意想不到”的副作用。(4) 自增(减)运算符在C++程序中是经常见到的,常用于循环语句中,使循环变量自动加1。也用于指针变量,使指针指向下一个地址。2.5.5 强制类型转换运算符在表达式中不同类型的数据会自动地转换类型,以进行运算。有时程序编制者还可以利用强制类型转换运算符将一个表达式转换成所需类型。例如:(double)a (将a转换成double类型)(int)(x+y) (将x+y的值转换成整型)(float)(5%3) (将5%3的值转换成float型)强制类型转换的一般形式为(类型名)(表达式)注意: 如果要进行强制类型转换的对象是一个变量,该变量可以不用括号括起来。如果要进行强制类型转换的对象是一个包含多项的表达式,则表达式应该用括号括起来。如果写成(int)x+y则只将x转换成整型,然后与y相加。以上强制类型转换的形式是原来C语言使用的形式,C++把它保。
C++程序设计(谭浩强完整版)课件
3. C++数据类型
1
基本数据类型
包括整数、浮点数、字符、布尔值等。
2
组合数据类型
包括数组、结构体、联合体和枚举等。
3
指针类型
用于存储变量地址,实现动态内存分配和间接访问。
4. C++运算符
1 算术运算符
包括加、减、乘、除和求余等,用于数值 计算。
2 逻辑运算符
包括与、或、非等,用于条件判断和逻辑 运算。
3 关系运算符
包括等于、不等于、大于、小于等,用于 比较两个值的大小关系。
4 赋值运算符
用于给变量赋值,包括简单赋值和复合赋 值。
5. Cse、switch 和三元运 算符等来实现不同条件下的控 制流程。
循环语句
跳转语句
使用 for、while 和 do-while 来 实现循环执行代码片段的功能。
7. C++数组
1
一维数组
用于存储同类型的数据,在内存中连续存储。
2
多维数组
由若干个一维数组组成,可以表示矩阵等复杂数据结构。
3
动态数组
通过指针和内存分配函数,根据需求动态创建和释放内存空间。
使用 break 和 continue 来跳出 循环或继续下一个迭代。
6. C++函数
函数定义与调用
通过定义函数名、参数和返回类型,以及调 用函数来实现代码的模块化。
递归函数
函数调用自身实现循环和算法的复杂逻辑。
函数重载
允许定义多个同名函数,根据参数类型和个 数来区分不同的函数。
内联函数
通过在函数调用处展开函数代码来提高执行 效率。
可移植性和兼容性
c语言程序设计谭浩强第二版答案
c语言程序设计谭浩强第二版答案C语言程序设计是计算机科学与技术专业中的基础课程之一,谭浩强教授的《C语言程序设计》第二版是该领域内非常受欢迎的教材。
这本书以其清晰的结构、详细的示例和丰富的习题而受到广大学生的欢迎。
以下是该书的一些习题答案,供学生参考。
1. 基本数据类型- 整型(int):用于存储整数,如 1, 2, 3 等。
- 浮点型(float):用于存储小数,如 1.23, 4.56 等。
- 字符型(char):用于存储单个字符,如 'a', 'b' 等。
2. 变量声明- 变量在使用前必须声明其类型和名称,例如 `int age;` 声明了一个整型变量 `age`。
3. 运算符- 算术运算符:`+`, `-`, `*`, `/`, `%` 等。
- 赋值运算符:`=`。
- 比较运算符:`==`, `!=`, `>`, `<`, `>=`, `<=`。
4. 控制语句- 条件语句:`if`, `else if`, `else`。
- 循环语句:`for`, `while`, `do-while`。
- 跳转语句:`break`, `continue`, `return`, `goto`。
5. 数组- 一维数组:例如 `int numbers[10];` 声明了一个包含10个整数的数组。
- 二维数组:例如 `int matrix[3][4];` 声明了一个3行4列的整型数组。
6. 函数- 函数是一段具有特定功能的代码块,可以被重复调用。
- 函数声明:`returnType functionName(parameterList);`- 函数定义:`returnType functionName(parameterList) { ... }`7. 指针- 指针是一种特殊的变量,用于存储另一个变量的内存地址。
- 声明指针:`int *p;`- 指针的解引用:`*p`。
c语言程序设计 谭浩强 完整版
分量运算符:. ->
下标运算符:[]
其它 :( ) -
<
注意:各种运算符混合使用,其优先级与结 合方法是难点,可先预习。
C语言程序设计
第一章 C语言概述
C语言数据结构丰富
整型
数值类型
基本类型
浮点型 字符类型char
C
数 据
构造类型
类
型 指针类型
数组 结构体struct 共用体union 枚举类型enum
第一章 C语言概述
C语言结构特点
❖函数与主函数
程序由一个或多个函数组成
必须有且只能有一个主函数main(),可以放在程序中任一 位置
程序执行从main开始,在main中结束,其它函数通过嵌 套调用得以执行。
❖程序语句
C程序由语句组成 用“;”作为语句终止符
❖注释
/* */为注释,不能嵌套 不产生编译代码
ANSI C: 1983年 87 ANSI C: 1987年 1990年国际标准的ANSI C ,1994年再次修订。
❖C版本 Microsoft C 或称 MS-C Turbo C 或称 TC
<>
C语言程序设计
第一章 C语言概述
§ 1.2 C语言的特点
语言简洁、紧凑、灵活 > > >
运算符丰富 >
switch typedef unsigned union void
volatile while
Turbo C扩充了11个关键字:
asm _cs _ds _es _ss cdecl far
huge interrupt near pascal 注意:在C语言中,关键字都是小写的。
c程序设计谭浩强第五版知识点总结
《C程序设计谭浩强第五版知识点总结》一、基本概念1. C程序设计概述这本书是谭浩强先生编写的C程序设计教材的第五版,内容全面,通俗易懂,适合初学者入门。
2. 程序设计基本流程本书从程序设计基础知识开始介绍,包括编程思想、程序的基本结构、编译信息过程等,为读者打下扎实的基础。
3. C语言基本数据类型本书详细介绍了C语言的基本数据类型,包括整型、浮点型、字符型等,帮助读者深入理解C语言的数据表示和操作。
二、程序设计基础1. 程序流程控制本书系统地介绍了C语言中的顺序结构、选择结构和循环结构,帮助读者掌握程序的基本控制流程。
2. 函数函数是C语言中重要的概念,本书对函数的定义、声明、调用、参数传递等方面进行了详细讲解,帮助读者理解函数的作用和使用方法。
3. 数组数组是C语言中常用的数据结构,本书介绍了数组的定义、初始化、访问等基本操作,还介绍了多维数组和数组作为函数参数的用法。
三、指针和结构体1. 指针指针是C语言中较为复杂的概念,本书对指针的定义、运算、指针与数组、指针与函数等方面进行了详细讲解,帮助读者理解指针的重要性和使用方法。
2. 结构体结构体是C语言中用于表示复杂数据结构的概念,本书介绍了结构体的定义、访问、嵌套等操作,还介绍了结构体数组和结构体作为函数参数的使用方法。
四、文件操作1. 文件输入输出文件操作是C语言中重要的知识点,本书介绍了如何打开文件、读写文件、关闭文件等基本操作,帮助读者掌握文件处理的基本技能。
2. 随机访问文件随机访问文件是C语言中较为复杂的知识点,本书介绍了如何进行文件的随机读写操作,帮助读者理解文件指针的移动和文件的定位操作。
五、综合应用1. 实例分析本书通过大量的实例分析,帮助读者将所学知识运用到实际问题中,提高解决问题的能力和编程的实际水平。
2. 项目设计本书还介绍了一些小型项目的设计思路和实现方法,帮助读者综合运用所学知识,提高程序设计能力。
总结C程序设计谭浩强第五版作为C语言教材的经典之作,系统地介绍了C语言的基本知识和程序设计的基本流程,涵盖了C语言的各个方面,适合初学者入门和进阶学习。
C语言程序设计教程CJ_02基本数据类型_潭浩强第3版
20
辽宁师范大学
蔡静
2.2.2.3 变量的声明
变量必须先声明再使用 定义格式:类型说明符 变量名表 例: int ibook,itable; char cname; 不同类型的数据在内存中占不同长度的存储区,且采用 不同的表示方式; 一种数据类型对应一个取值范围; 一种数据类型对应一组允许的操作. 也可以在定义的同时赋初值. 也可以在定义的同时赋初值. int 与 char 通用. 例:
7
辽宁师范大学
蔡静
2.1.2 整数的有符号类型与无符号类型
有符号数的符号位:
最高位:0表示正,1表示负.
signed有符号整数,unsigned无符号整数 C语言中,实数都是有符号的.
8
辽宁师范大学
蔡静
2.1.3 类型宽度与取值范围
以IBM PC机为例: 以 机为例: 机为例
整型变量类型
Int Short int
12
辽宁师范大学
蔡静
2.2.1.2 实型常量
实型常量 两种表示形式
十进制小数形式:12.6 12. 12 0.58 .58 十进制小数形式 由数字和小数点组成 ,小数点不可缺. 指数形式:12.9e-2 5.4e+3.5 e+6 1e+6 指数形式 由数字,e或E,正整数三部分组成.
C语言程序设计谭浩强第二PPT课件
第三章 数据类型、运算符与表达式
3.3整型数据
4整型数据的溢出 例3.3: Main() {
int a,b; a=32767; b=a+1; printf(“%d,%d”,a,b);
第12页/共35页
第三章 数据类型、运算符与表达式
3.4实型数据 3.4.1实型常量的表示方法 (1)十进制小数表示;123.123 (2)指数形式。123E123 E或e后面的指数必须为整数。123E123.123
运算符类型 1.算术运算符 2.关系运算符 3.逻辑运算符 4.位运算符 5.赋值运算符 6.条件运算符 7.逗号运算符 8.指针运算符 9.求字节数运算符 10.强制类型转换运算符 11.分量运算符 12.下标运算符 13.其他
说明 (+ - * / %) (> < == >= <= !=) (! && ||) (<< >> ~ | ^ &) (=) (? :) (,) (*和&) (sizeof) ((类型)) (. ->) ([]) (如函数调用运算符)
a=123456.789e5;
b=a+20;
第15页/共35页
第三章 数据类型、运算符与表达式
3.5字符型数据
3.5.1字符常量
C的字符常量是用单引号括起来的一个字符。C还允许一种
特殊形式的字符常量,就是以一个“\”开头的字符序列。
字符形式 \n \t \b \r \f \\ \’ \” \ddd \xhh
第19页/共35页
第三章 数据类型、运算符与表达式
3.5字符型数据
3.5.3字符数据在存放和使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
00000000 01111111~ 10000000 (-128~+127)
• 纯整数的补码最小可以表示到-2^n 。这时在[-2^n]中,符号位的1既 表示符号“-”,也表示数值2^n 。
• 若要一个负数变补码,其方法是符号位置1,其余各位0变1,1变0,然后在最 末位上加1 。
10 01.03.2021
2.2 常量与变量
变量命名的规定:C语言规定标识符只能由 字母、数字和下划线三种字符组成,且第一 个字符必须为字母或下划线。
例:sum,_total, month, Student_name,
lotus_1_2_3,BASIC, li_ling
M.D.John, ¥123,3D64,a>b
13 01.03.2021
2.3 整型数据
(3)十六进制整数。以0x开头的数是16进制数。 如:0x123,代表16进制数123,等于十进制数
291。 -0x12等于十进制数-10。
2.3.2 整型变量 (1)整型数据在内存中的存放形式
数据在内存中是以二进制形式存放的。
如: int i; /* 定义为整型变量 */
– 数值的表示方法——原码、反码和补码
• 原码:最高位为符号位,其余各位为数值本身 的绝对值
• 反码:
– 正数:反码与原码相同
– 负数:符号位为1,其余位对原码取反
• 补码:
– 正数:原码、反码、补码相同
01.03.2021
– 负数:最高位为1,其余位为原码取反,再 对整个数加1
5
+7 -7 +0 -0
第二章
本章要点
数据的描述规则 数据的操作规则
主要内容 2.1 C的数据类型 2.2 常量与变量 2.3 整型数据 2.4 浮点型数据运行 2.5 字符型数据
主要内容
2.6变量赋初值 2.7 各类数值型数据间的混合运算 2.8 算术运算符和算术表达式 2.9 赋值运算符和赋值表达式 2.10 逗号运算符和逗号表达式
代符表号常常量量3的0,值此在后其凡作在用本域文内件不中能出改现变的,
P也RI不CE能都再代被表赋30值,可。以和常量一样进行运算
9 01.03.2021
2.2 常量与变量
2.2.2 变量 • 变量代表内存中具有特定属性的一个存储单
元,它用来存放数据,这就是变量的值,在 程序运行期间,这些值是可以改变的。 • 变量名实际上是一个以一个名字对应代表一 个地址,在对程序编译连接时由编译系统给 每一个变量名分配对应的内存地址。从变量 中取值,实际上是通过变量名找到相应的内 存地址,从该存储单元中读取数据。
数的范围
(用一字节表示数)
原码 00000111
反码 00000111
10000111 00000000
11111000 00000000
10000000
11111111
01111111~ 11111111 (-127~ (-127~+127)
补码 00000111
i=10; /* 给i赋以整数10 */
14 01.03.2021
2.3 整型数据 注意:
• 十进制数10的二进制形式为1010, Turbo C 2.0和Turbo C++ 3.0为一个整 型变量在内存中分配2个字节的存储单元( 不同的编译系统为整型数据分配的字节数 是不相同的,VC++ 6.0则分配4个字节) 。
基本类型 字符型 char 单精度实型
float 实型(浮点型)
数据类型
构造类型
数组类型 结构类型 联合类型
双精度实型
struct
double
union
指针类型 枚举类型 enum
空类型(无值类型) void
7 01.03.2021
2.2 常量与变量
2.2.1 常量和符号常量
• 在程序运行过程中,其值不能被改变的量称为常量 • 常量区分为不同的类型:
整型 100,125,-100,0
直接
实型 3.14 , 0.125,-3.789
常量
字符型 ‘a’, ‘b’,‘2’
字符串 〝a〞, 〝ab〞,〝1232〞
8 01.03.2021
例2.1 符号常量的使用 #define PRICE 30
运行结果: total=300
#include <st说di明o.:h>如再用赋值语句给PRICE赋值是错的
• 负数补码转换成十进制数:最高位不动,其余位取反加1
01.03.2021
例 补码:11111001
取反:10000110
加1: 10000111=-7
6
2.1 C的数据类型
数据类型决定: 1. 数据占内存字节数;
C语言提供了以下一些数据类型。2. 数据取值范围; 3. 其上可进行的操作
整型 int
11 01.03.2021
2.2 常量与变量
注意:
• 编译系统将大写字母和小写字母认为是两 个不同的字符。
• 建议变量名的长度最好不要超过8个字符 。
• 在选择变量名和其它标识符时,应注意做 到“见名知意”,即选有含意的英文单词 (或其缩写)作标识符。
• 要求对所有用到的变量作强制定义,也就 是“先定义,后使用” 。
• 数值是以补码(complement) 表示的。
15 01.03.2021
2.3 整型数据
(2)整型变量的分类
有符号基本整型 (signed)int 有符号短整型 (signed)short (int )
共六种 有符号长整型 (signed) long (int)
无符号基本整型 unsigned int 无符号短整型 unsigned short (int) 无符号长整型 unsigned long (int) 注意:括号表示其中的内容是可选的.
void main ( )PRICE=40; {
/* 错误,不能给符号常量赋值
int num, total;
num=10;
total=num * PRICE;
printf(″total=%d\n″,total);
}
说符明号:常量程: 用序一中个用标#d识ef符in代e命表令一行个定常义量P。RICE
12 01.03.2021
2.3 整型数据
2.3.1整型常量的表示方法 整型常量即整常数。在C语言中,整常数
可用以下三种形式表示:
(1)十进制整数。 如:123, -456, 4。
(2)八进制整数。以0开头的数是八进制数。 如:0123表示八进制数123,等于十进制数
83,-011表示八进制数-11,即十进制数-9。