内容 说明
主要 1.c语言出现的历史背景
内容 2.c语言的特点
3.c语言的基本词法—标识符
4.c语言的基本数据类型
重点 1.标识符的概念
2.整型数据类型
难点 1.标识符的概念
2.常量与变量的区别
问题 什么是C语言?为什么会出现C语言?
提出
通过对c语言的介绍,自然引入各部分内容
一.C语言概述
1. 介绍C语言出现的历史背景
2. 介绍C语言的特点
3. C语言的基本结构及程序设计风格
举例:分析以下程序的结构
#include 程序入口 函数体 部分 main() /*主函数*/ {int a,b,sum; /*声明部分,定义变量*/ a=123;b=456; sum=a+b; printf(“sum is %d\\n”,sum); /* 输出c的值*/ } 结合实例讲解 总结: C程序的主要结构特点如下: 所有的c程序都是由一个或多个函数组成的程序模块构成的。 在程序中,可以包含任意多个不同名的函数,但必须有且仅 有一个main()主函数。c程序总是从主函数main()开始 执行的。 c语言程序是由语句组成,使用“;”作为语句的中止符或分 隔符。一行中可以有多个语句,一条语句也可以占用任意多行 c语言程序中用{}将函数体括起来。 c语言中注释的格式:/*注释内容*/。 二. c语言的基础知识 1. 标识符 概念 用来作变量、符号、函数和数组、文件等的名字。 举例说明 规定 标识符的命名原则:由字母、数字和下划线组成,并且第一 个字符必须为字母或下划线。 分类 关键字 参考附录一 int、if… 标识符 预定义标识符 printf… 用户标识符 注意做到见名知义 _in、a23b… 【注意】 标识符区分大小写。 标识符的长度为8个字符,长于8个的字符不被识别。 2. 常量 如整型常量: 12,0,-34 实型常量: 4.6,-1.45 字符常量: ‘a’,‘d’ 概念 在程序运行过程中,其值不能被改变的量。 ① 数值常量 ② 符号常量--用一个标识符代表一个常量,如: #define PRICE 30 /*命令行定义*/ main() { int num,total; 通过程序说明符号常量的使用 num=10; total=num*PRICE; printf(“total=%d”,total); } 如上题中加入赋值语句PRICE=40;是不对的。 【注意】 符号常量的值在其作用域内不能改变,也不能再被赋值。 习惯上,符号常量名用大写,变量名用小写。 改变符号常量值须在命令行中修改,“一改全改”。 3. 变量 概念 其值可以改变的量称为变量。遵守标识符的命名规则。 深化 变量的实质: 介绍变量存储单元的关系。注意区分变量名与变量值概念 例如:a=3;其存储为: 变量名 a 3 变量值 存储单元 【总结】 常量与变量的区别:取值是否固定。 讲述 三. 整型数据 1.整型常量的表示 0123 123,0,-32 十进制整数。 0x123 ② 八进制整数。以0开头。 ③ 十六进制整数。以0x开头。 介绍8进制和16进制与10进制的转化 ⑵ 整型变量 ① 整型数据在内存中的存放形式 数据在内存中以二进制形式存放,占用2个字节,数值以 补码表示。如定义整型变量i的值为10,在内存中存放形式为: 如不加,最高位为符号位,最大正整数为32767。 举例介绍负数求补方法 求负数的补码方法如下:将该数的绝对值的二进制形式,按位 取反再加一。 ② 整型变量的分类。见下表: 数的范围 整数不可能是负数。 如:int a,b; 定义两整型变量a,b ③ 整型变量的定义 格式 整型类型标识符 变量名 【说明】 数据类型的选择要注意避免数据的溢出。 长整型常量与长整型无符号整数常量用后缀l或L和lu或 LU标识 C语言基础知识(二) 内容 说明 主要 1. 实型数据类型的基本知识 内容 2. 字符型数据类型的基本知识 3. 变量定义时赋初值 4. 各数值型数据间的混合运算 重点 1.实型数据类型的基本知识 2.字符型数据类型的基本知识 难点 1.字符型数据与整型数据的相互转化 2. 变量定义时赋初值 介绍 一. 实型变量 1. 实型数据在内存中的存放形式 实型数据在内存中占4个字节(32)位。按照指数形式存贮。 系统把实型数据分成小数部分和指数部分。如实数3.6547的 存放形式如图所示: 数符 小数部分 指数 + .36547 * 10 3.6547 2. 实型变量的分类。见下表: float x,y; double z; 10~10 例:如下程序 出现舍入误差 main() {float a,b; a=123456.78e5; b=a+20; printf(“%f”,b);} 【注意】 避免将一个很大的数和一个很小的数直接相加或相减。 4. 实型常量的类型 【说明】 在常量的后面加f或F,编译系统会按单精度常量进行计算。 在实型常量符值时,要注意常量类型与有效数字的关系。 二. 字符型数据 1. 字符常量 注意:‘a’和‘A’是不同的。 概念 用单引号括起来的一个字符。有如下形式: ①‘a’,‘D’,‘?’,‘#’等。 ② 转义字符----以“\”开头的字符序列,常见的有: \\n----换行 \----水平制表 \\b----退 \\r----回车 \f----换页 \\\\----反斜杠字符“\” 例如:\\101代表ASCII码为65的字符A,\\012代表换行 \\’---- 单引号字符 \”---- 双引号字符 \ddd----1到3位8进制数所代表的字符 \xhh----1到2位16进制数所代表的字符 【注意】 ‘\\0’ 或 ‘\\000’代表ASCII码为0的 “空操作”。 举例 转义字符的使用 main() { printf(“ ab c\ de\\rf\g\\n”); printf(“h\i\\b\\bj k”);} 结果为:f gde h j k 2. 字符变量 概念 用来存放字符常量,注意只能放一个字符 ① 字符变量的定义形式如下: char c1,c2; ② 字符变量的赋值形式如下: c1=’a’; c2=’b’; ③ 字符数据在内存中的存储形式及其使用方法 讲解 一个字符变量在内存中占一个字节,字符型数据与整型数 据可以相互转化。也可以互相赋值。如下例: 注意字符变量与整型变量的相互转化。常用这个特点解决大小写字母转换问题。 main() { char c1; int c2; c1=97; c2=’b’; prntf(“%c %c\\n”,c1,c2); /*以字符形式输出*/ printf(“%d %d\\n”,c1,c2);} /*转换为整数形式输出*/ 运行结果如下: a b 97 98 字符串常量可以输出:printf(“how do you do.”); ④ 字符串常量 概念 字符串常量是一对双引号括起来的字符序列。 如:“how do you do.”,“CHINA”,“$23.34”等。 区分 ⑤ 字符常量与字符串常量的区别: “a”----字符串常量,在字符串结尾加字符串结束 标志’\0’。 如:char c; c=”CHINA”; 是不对的 【注意】 不能把一个字符串赋给一个字符变量 三. 变量定义时赋初值 1.单独赋初值 int a=3; <=> int a; a=3; 2.定义变量的一部分赋初值 int a,b,c=5; <=> int a,b,c; c=5; 【注意】 在定义变量赋初值时不能使用连等。 如下语句错误: int a=b=c=3; 四. 各类数值型数据间的混合运算 整型、实型、字符型数据间可以混合运算,进行运算时, 不同类型数据要先转换成同一类型,然后进行运算。转化规则 如图所示: double float 高 long unsigned 低 int char,short 【规律】 字符型数据向整型数据转换,短字节类型向长字节类型转换。 C语言基础知识(三) 内容 说明 主要 1. 运算符和表达式 内容 2. 算法与N-S图 重点 算术运算中的取余和整除 难点 1. 自增、自减运算符 2. 复合算术运算符 引入 c语言包括多种运算,这里重点讲授算术运算符 ,其他运算 符如:关系运算符,逻辑运算符,条件运算符等,在以后各章 中结合有关内容将陆续介绍其他运算符。 介绍双目单目运算概念 一. 基本的算术运算符 参加运算的两个数中有一个数为实数,则结果为double型。两个整数相除的结果为整数,如果除数或被除数中有一个为负值,多采取“向零取整”法 【说明】 双目运算符运算数的类型必须一致,否则先进行类型转换。 所有实型数的运算均以双精度方式进行。 二. 运算符的优先级、结合性和算术表达式 1. 优先级 ( )、 +、 -、 *、 /、 %、 +、 - 单目 双目 高 低 2. 结合性 单目运算符“-”和“+”的结合性是从右到左,其余运算 符的结合性都是从左到右。 运算对象可以是常量、变量和函数等 三. 算术表达式 【注意】 在算术表达式中使用多层圆括号时,圆括号要成对出现。 运算时从内往外依次计算。 不同优先级按优先级由高到低顺序进行,同级按运算符的结 合方向进行。 强制类型转换得到一个所需类型的中间变量,原来变量的类型不发生变化。 四. 强制类型转换运算符 形式 (类型名)(表达式) 如: (int)x%3 (float)(5%3) 【注意】 表达式应用括号括起来。 五. 自增、自减运算符 ++i , --i (在使用i之前,先使i的值加1或减1) i++ , i-- (在使用i之后,使i的值加1或减1) 举例说明 区分以下两条语句:i的初值为3 j=++i; (i的值先变成4,再赋给j,j的值为4) j=i++; (先将i的值3赋给j,j的值为3,然后i变为4) 说明不宜使用自增自减运算情况:输出语句,一个表达式同一个变量多次自增自减运算。 【注意】 对于形如i+++j的表达式,应理解为(i++)+j的形式。 自增、自减运算符只适用于变量,不能用于常量和表达式。 ++和—的结合方向是“自右至左”。 i++相当于-(i++)。 六. 赋值运算符和赋值表达式 1. 赋值运算符“=” 2. 赋值表达式的一般形式:变量名=表达式 【说明】 赋值运算符的优先级别只高于逗号运算符。具有自右向左的 介绍“截断法”和“补足法” 比如: a=b=c+2; a=(b=10)/(c=2) 结合性。 如果赋值运算符两侧的类型不一致,要进行类型转换。 赋值号右边的表达式也可以是一个赋值表达式,按照自右 向左的结合顺序。 七. 复合的赋值运算符 运算结果 八. 逗号运算符和逗号表达式 概念 用逗号将表达式连接起来的式子称为逗号表达式。 a=3*5,a*4; a的值为15,整个逗号表达式的值为60。 1. 其一般形式为:表达式1,表达式2 2. 逗号表达式的求解过程:先求解表达式1,再求解表达式2。 整个逗号表达式的值是表达式2的值。 说明 一个逗号表达式可以与另一个表达式组成一个新的逗号表达式。 如:(a=3*5,a*4),a+5 3. 逗号表达式一般形式的扩展: 例如:输出语句中多个变量之间用逗号分隔 形式 表达式1,表达式2,……表达式n 【注意】 并不是出现的任何逗号都是作为逗号运算符。 在所有运算符中,逗号运算符的优先级别最低。 九. 算法 引入 怎样才能编写出程序呢? 除了选定合理的数据结构外,还有关键的一步,就是设计算法。 概念 算法是指为解决某个特定问题而采取的确定切有限的步骤。 特点 算法应当具有以下五个特性:有穷性、确定性、可行性、有零 个或多个输入、有一个或多个输出。 流程图是描述算法的很好的工具,有以下几种基本框组成: 开始或终止框 处理框 输入输出框 判断框 流程线 连接点 另外一种描述算法的工具是N-S图。 结构化程序三种基本结构用算法的描述: 1.顺序结构 (流程图) (N-S图) 2.选择结构 (流程图) (N-S图) 3.循环结构 (流程图) (N-S图) 例题 先后输出若干个整数,要求打印出其中最大的数,当输入的 数小于0时结束。用N-S流程图表示算法。 N-S流程图如下: 读入一个数给x max=x 当x>o x>max 是 否 max=x 读入一个数给x 输出max 总结: 通过以上对C语言的基础知识的讲解,我们了解了C语言出现 的背景、结构以及语法知识,这些是我们后面学习的一个基础, 因此要重点掌握。0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
【注意】 无符号整数,因其最高位不再用来存放整数符号,因此无符号类型 字节数 使用表格对比的说明 [signed] int 2 -2~(2-1) Unsigned int 2 0~(2-1) [signed] short [int] 2 -2~(2-1) Unsigned int 2 0~(2-1) Long [int] 4 -2~(2-1) Unsigned long [int] 4 0~(2-1) + .36547 1
3. 定义实型数据:类型标识符 变量名 类型 字节数 有效数字 数值范围 float(单精度) 32 6~7 10~10 double(双精度) 15~16 10~10 long double(长双精度) 80 18~19 例如:
‘a’----字符常量,在内存中占一个字节,存储形式为: a
因此存储形式为:a \\0 类型 运算符 说明 双目或单目 +(加) 如5/3的结果为1,17%-3的结果为2,-19%4的结果为-3。 -(减) 双目 *(乘) /(除) %(取余) 运算量必须为整数。当运算量为负数时,符号与被除数相同
注:其中如果b是包含若干项的表达式,则相当于它有括号。名称 运算符 运算规则 运算对象 例如:x%=y+3 相当于x=x%(y+3) 加赋值 += a+=b<=>a=a+b 整型或实型 整型或实型 减赋值 -+ a-=b<=>a=a-b 乘赋值 *= a*=b<=>a=a*b 除赋值 /+ a/=b<=>a=a/b 模赋值 %= a%=b<=>a=a%b 整型 整型