第一章 c语言基础知识

文档属性

名称 第一章 c语言基础知识
格式 zip
文件大小 113.4KB
资源类型 教案
版本资源 通用版
科目 信息技术(信息科技)
更新时间 2010-09-16 19:27:00

图片预览

文档简介

(共69张PPT)
C语言程序设计
第1章 C语言基础知识
第一节 C语言程序的结构
第二节 整型数据
第三节 实型数据
第四节 算术表达式
第五节 赋值表达式
第六节 Turbo C的基本操作
第一节 C语言程序的结构
C语言程序的总体结构
一个完整的C语言程序,是由一个main()函数(又称主函数)和若干个其它函数结合而成的,或仅由一个main()函数构成。
[案例1.1] 仅由main()函数构成的C语言程序。


main()
{
printf(“This is a C program.\n”);
}
程序运行结果:This is a C program.
[案例1.2] 计算两个整数之和的C语言程序。
#include “stdio.h”
main()
{
int a,b,sum;
a=10;
b=20;
sum = a+b;
printf(“a=%d,b=%d,sum=%d\n”, a,b,sum);
}
程序运行情况:
a=10,b=20,sum=30
函数体
以分号结尾,
叫做语句。
编译预处理命令
main()函数
一个C语言程序,总是从main()函数
开始执行,而不论其在程序中的位置。
当主函数执行完毕时,亦即程序执行完毕。
源程序书写格式
任何一个C程序都必须包含main()函数。
C语言的函数体可以分为两个部分:
定义部分和执行部分。其中,定义部分必须在执行部分的前面。
C程序中用到的变量都必须先定义后使用,定义变量必须放在程序的定义部分。
所有语句都必须以分号“;”结束,函数的最后一个语句也不例外。
程序行的书写格式自由,既允许1行内写几条语句,也允许1条语句分写在几行上。
允许使用注释。
C语言的注释格式为:
(1) “” 必须成对使用,且“/”和“*”、以及“*”和“/”之间不能有空格,否则都出错。
(2)注释的位置,可以单占1行,也可以跟在语句的后面。
(3)如果1行写不下,可另起1行继续写。
(4)注释中允许使用汉字。在非中文操作系统下,看到的是一串乱码,但不影响程序运行。
二、标识符
在C语言中用于标识名字的有效字符序列称为标识符。
标识符可以用作常量名、变量名、符号名、函数名和指针名等等。
C语言的命名规则如下:
(1)标识符只能由字母、数字和下划线组成
(2)标识符的第一个字符必须是字母或下滑线。
C语言中字母的大小写是有区别的。
合法的标识符:
a x sum spels _to file_5
非法的标识符:
yes
234a
yes no
yes/no
标识符的分类
(1)关键字
   关键字在程序中代表着固定的含义。如标识符char、float以及for、if等都已有专门的用途,它们不能用作变量名或函数名。
32个关键字:
auto break case char const
continue default do double else
enum extern float for goto
if int long register return
short signed sizeof static struct
switch typedef unsigned union void
volatile while
(2)预定义标识符
预定义标识符在C语言中也有特定的含义,如库函数的名字和预编译处理命令等。
C语言语法允许用户把这类标识符另作他用,但是失去了在系统中规定的原意。
为了避免误解,建议用户不要把这些预定义标识符另作它用。
(3)用户标识符
由用户根据需要定义的标识符称为用户标识符。一般用来给变量、函数、数组或文件等命名。
如果用户标识符与关键字相同,程序会给出出错信息;
若与预定义标识符相同,则预定义标识符将失去原来的含义。
  
※重点提示:
标识符的命名规则:
(1)C语言规定标识符只能由字母(大小写均可,但区分大小写)、数字和下划线3种字符组成
(2)第1个字符必须为字母或下划线
(3)已被C语言本身使用,不能用作变量名、常量名、函数名等。
三、常量
在程序运行过程中,其值不能被改变的量称为常量。
C语言中有4中基本常量:整型常量、实型常量、字符常量和字符串常量。
此外,C语言中还经常使用两种表现形式不同的常量:转义字符常量和符号常量。
1.整型常量
整型常量也称整数,包括正整数、负整数和零。
如:3、10、100、-5、-35等。
2.实型常量
实型常量即实数,又称为浮点数。
如:3.1415926、-15.25等。
整型常量和实型常量又称为数值型常量。
3.字符常量
 字符常量使用一对单引号括起来的一个字符。如‘a’、‘B’、‘ ’等。
以下是关于字符常量的几点说明。
(1)单引号只是作为定界符使用,并不是字符常量的组成部分。
(2)单引号内的字符不允许是单引号或反斜杠。
(3)字符常量具有数值,这个值就是该字符在规定的字符集中的ASCII代码值。P140
(4)字符常量在机器内以整型常量的形式存放,因此字符常量与整型常量等价。
4.字符串常量
  字符串常量是由一对双引号括起来的字符序列,如“hello”、“how are you”等。
注意:C语言中没有专门存放字符串的字符串变量,因此存放时需要放在一个字符型数组中。
5.转义字符常量
  转义字符常量是以一个“\”开头的字符序列。每个转义字符都有其特定的含义和功能。
6.符号常量
  C语言中,允许用一个标识符来代表一个常量,即常量可以用“符号”来代替,代替常量的符号就称为符号常量。
以下是几点说明:
(1)符号常量在使用之前必须先定义,定义方法为用宏替换“#define”使一个标识符与某个常量相对应,其一般形式为:
#define 标识符 常量表达式<或字符串>。
(2)一个#define只能定义一个符号常量。
(3)符号常量定义式的行尾没有分号。
四、变量
变量是指在程序运行期间其值可以发生变化的
一个变量在内存中占据一定的存储单元,在程序中从变量中取值,实际上是通过变量名找到相应的内存地址,从其存储单元中读取数据。
C语言中的任何变量,使用前都必须定义,也就是必须先定义后使用。
  
第二节 整型数据
一、数值转换
2 进制数码:0 和 1,后缀为B
(10,11,12,13,14,15)
8进制数码:0,1,2,3,4,5,6,7,后缀为O
10进制数码:0,1,2,3,4,5,6,7,8,9后缀为D
16进制数码: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,后缀为H
任意进制转换到十进制:
任意R进制的一个数转换为十进制数:
(325.76)8
=3×82+2×81+5×80+7×8-1+6×8-2
= (213.96875)10
十进制与二、八、十六进制的转换
±(kn-1 kn-2 …k0.k-1k-2…k-m)R
=±(kn-1 Rn-1+…+k0R0+k-1R-1+…+k-mR-m)10
(11010.1)2
=1×24+1×23+0×22+1×21+0×20+1×2-1
= (26. 5)10
例如:
2. 十进制转换到其它进制:
整数部分和小数部分分别转换
小数部分采 用基
值重复相乘。直
到乘积为0。即
乘基值取整数法
整数部分采用基
值重复相除。直
到商为0。即除
基值取余数法
2 215
2 107 1
2 53 1
2 26 1
2 13 0
2 6 1
2 3 0
2 1 1
0 1
低位
高位
(215)10 =(11010111)2
(0.6875)10 = 2

0.6875
2
×
1 . 3750
整数
1
0.375
2
×
0 . 750
0
0. 50
2
×
1 . 00
1
0.75
2
×
1 . 50
1
转换结果为:(0.6875)10=(0.1011)2
2 13
2 6 1
2 3 0
2 1 1
0 1
低位
高位
(13)10 =(1101)2
0.8775
×
2
1.7550
整数
1
0.755
×
2
1.510
1
0.510
×
2
1.020
1
(0.8775)10≈(0.111)2
(13.8775)10 = 2 (保留3位小数)

(13.8775)10 ≈(1101.111)2
注意:
实际上将十进制小数转换成二进制、八进制、十六进制小数过程中小数部分可能始终不为零,因此只能限定取若干位为止。
将十进制数转换为八进制、十六进制数的规则和方法与之相同,只是R(基数)的取值不同。

(279.6875)10 = 8
8 279
8 34 7
8 4 2
8 0 4
低位
高位
(279)10 =(427)8
0.6875
×
8
5.5000
×
整数
5
0.5
8
4.0
4
(0.6875)10=(0.54)8
(279.6875)10 =(427.54)8

(172.6875)10 = 16
16 172
16 10 12(C)
0 10(A)
低位
高位
(172)10 =(AC)16
0.6875
×
16
41250
6875
11.0000
整数
11(B)
(0.6875)10 =(0.B)16
(172.6875)10 =(AC.B)16
因为23=8,24=16,
一位十六进制数可由四位二进制数来表示
一位八进制数可由三位二进制数来表示。
作反向转换:
三位二进制数可用一位八进制数表示
四位二进制数可用一位十六进制数来表示
二进制与其他进制数的转换
最后一组
不足用0补!
将二进制整数
从右向左
每隔3位/4位分
为一组
1.二进制到八/十六进制
将每组按二进
制数向十进制
数转换的方法
进行转换
整数
将二进制小数
从左向右
每隔3位/4位分
为一组
将每组按二进
制数向十进制
数转换的方法
进行转换
小数
例:(10110101)2= ( )8
010 110 101
2 6 5
例:(0.1011)2 =( )8
0. 101 100
0. 5 4
最后一组
不足用0补!
例:(10110101)2= ( )16
1011 0101
B 5
例:(0.10111)2 = ( )16
0.1011 1000
0. B 8
最后一组
不足用0补!
2. 八/十六进制到二进制:
0.1011 0111
0. B 7
例:(0.B7)16 = ( )2
0. 101 100
0. 5 4
例:(0.54)8= ( )2
3. 十六进制与八进制的转换
十六/八进制的转换可以按以下规则进行:
十六进制
二进制
八进制
(EA.15)16
=(1110 1010 . 0001 0101)2
=(11101010 . 00010101)2
=(011 101 010.000 101 010)2
=(352.052)8
二、八、十六进制对照表
二进制数 八进制数
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
二进制数 十六进制数 二进制数 十六进制数
0000 0 1000 8
0001 1 1001 9
0010 2 1010 A
0011 3 1011 B
0100 4 1100 C
0101 5 1101 D
0110 6 1110 E
0111 7 1111 F
表1.1 二、八进制数字对照表
表1.2 二、十六进制数字对照表
二、整型常量
1.整型常量的表示形式
 C语言中整型常量有如下三种表示形式:
(1)十进制。用一串连续的数字来表示,如32768,-768,0等。
(2)八进制。用数字0开头,各位用0~7这8个数之一表示,如010,011等。在C程序中不能在一个十进制整数前面加前导零。
(3)十六进制。用0x或0X开头,各位用0~9以及A~F(或a~f)这16个数之一表示,如0x24B,0X34a等。
三、 整型变量
整型变量是用于存储整型值的变量。整型变量可分为基本型、短整型、长整型和无符号型四种。
基本型的整型变量用类型名关键字int进行定义,如 int a; 或 int a, b, c;
基本型整型变量在一般微机中占用2个字节的存储单元,该变量中允许存放的数值范围是:-32768~32767。
在程序中定义变量时,编译程序会为相应的变量开辟内存单元,但并没有在该单元中存放任何初值,这时变量中的值是无意义的,即称为变量值“无定义”。
C语言规定,可以在定义变量的同时给变量赋初值,即变量的初始化。
如:main()
{ int a=1, b=4, i=8;
……}
整型分配的内存空间
00000000 00000110
整数6在内存中的形式
整型数据的分类
整型常量与变量有短整型(short int)、基本整型(int)、长整型(long int)和无符号型(unsigned),以及有符号型的区分。
在表示一个长整型常量时,应该在其后面加一字母后缀L(或l),如123L,345l等。
无论是短整型常量还是长整型常量,C语言系统都默认为是有符号整数。
无符号整数在数字的后面加上一个字母后缀u或者是U。若是长整型无符号整型常量,则应该加后缀lu或者是LU。
例1.8 p9
四、整数在内存中的存储形式
计算机中最小的存储单位是“位(bite)”,8个二进制位组成一个“字节(byte)”,若干个字节组成一个“字(word)”。
C语言中,一个int整数通常用两个字节存放,其中最高位(最左边一位)用来存放整数的符号,正整数时最高位为0,负整数时最高位为1。
1.正整数
   C语言中,正整数以原码形式存放。如整数5在内存中的二进制码为:0000000000000101。 最大有符号正整数是0111111111111111,它对应的十进制整数是215-1=327767。
2.负整数
C语言中,负整数在内存中是以整数的“补码”形式存放。
求某个二进制码的补码,步骤如下:
(1)求原码的反码,即将0→1,1→0
(2)将所得的反码加1,即得原码的补码。
例如:求-6在内存中存放的形式,步骤如下:
(1)6的原码:0000000000000110
(2)6的反码:1111111111111001
(3)-6的补码:1111111111111010
反过来,如何利用补码来计算对应的负整数?
例如,在内存中某一补码1111111111111101
转换步骤:
(1)将补码的各位取反,得到0000000000000010
(2)将得到的结果加上1,得0000000000000011
(3)把该二进制转换为十进制得数为:3.
(4)因为补码的最高位为1,表示为负数。因此,所得的数为-3。
3.无符号正整数
无符号整数的最高位不再用来存放整型的符号,因此无符号数不可能是负数。
对于无符号整数,最高位(最左边一位)不再用来存储整数的符号,全部用来存放整数。 例如,11111111 11111111
※重点提示:
在C语言中,对于有符号整数,用最高位(最左边一位)用来存储整数的符号,若是正整数,最高位为0,若是负数,最高位放置1。对于正整数用“原码”形式存放,对于负整数用“补码”形式存放。
第三节 实型数据
一、实型常量
  在C语言中可以有两种表示形式:小数形式和整数形式。
(1)小数形式。由整数部分、小数点和小数部分组成。小数点的前面或后面可以没有数字,但是不能同时没有数字。
如,3.14159、.36、0.0、12.、0.158
(2)指数形式。由尾数部分、字母E或e和指数部分组成,其格式如下:
  ±尾数部分E(或e)±指数部分
指数部分只能是整数,且三个组成部分均不能省略。
如,
合法:12.34E+9, ﹣5.453e﹣10
非法:e2、.6E3.5、.e2、e、E
注意,在字母E(或e)的前后以及数字之间不得插入空格。
二、 实型变量
实型变量分为两种类型:
(1)单精度型(float),分配4个字节的存储单元,数值范围约为﹣1038~1038,并提供7位有效位;小于1038的数被处理成零值。
(2)双精度型(double),分配8个字节的存储单元,数值范围约为﹣10308~10308,并提供15~16位的有效位;小于10308的数被处理成零值。
  在计算机内存中,实数一律是以指数形式存放的,而不是小数的形式。
 例如: float a; double b;
a=123456.789e5 ; b=123456.789 ;
第四节 算术表达式
 C语言中基本的运算符是:
+、-、*、/、%。这些运算符需要两个运算对象,称为双目运算符。
除求余运算符外,运算对象可以是整型也可以是实型。
说明:
(1)乘号“*”不能省略,也不能写成代数式中的“×”或“.”
(2)算术运算符两边的运算对象类型必须保持一致才能运算。
(3)若双目运算符两边的类型不一致,则系统将自动按照类型转换规则使两边类型一致后再进行运算。
(4)求余运算符“%”要求参与运算的量必须为整数,且求余的结果符号与被除数相同。如14%-3的结果为2,-21%4的结果为-1。
(5)在C语言中,所有实型数的运算均以双精度方式进行。若是单精度数,则在尾数部分补0,使之转化为双精度数。
一、运算符的优先级、结合性和算术表达式
在C语言中,常量、变量、函数调用以及按C语言语法规则用运算符把运算数连起来的式子都是合法的表达式。
1.算术运算符和圆括号的优先级次序如下:
(由高→低)
( )、 ﹢ 、﹣、* 、/ 、% 、+ 、-
2.算术运算符和圆括号的结合性
  以上所列的运算符,只有单目运算符“+”和“-”的结合性是从右到左,其余运算符的结合性都是从左到右。
3.算术表达式
用算术运算符和括号将运算对象连接起来的、符合C语法规则的式子,称C算术表达式。
运算对象可以是常量、变量、函数等。
 
关于算术表达式的几点说明:
(1)在表达式中可以使用多层圆括号,但左右括号必须配对。运算时从内层开始,由内向外依次计算表达式的值。
(2)在求解表达式的值时,若包含不同优先级的运算符,则按运算符的优先级别由高到低运行,若表达式中运算符的级别相同,则按运算符的结合方向进行。
如表达式a+b-c,因为加号和减号的优先级相同,它们的结合性为从左到右,因此先计算a+b,然后把所得的结果减去c。
二、强制类型转换表达式
 强制类型转换表达式的形式:
(类型名)(表达式)
 其中(类型名)称为强制类型转换运算符。
例如:
(float)(x) 将x转换成浮点型
(double)(8%3)将8%3转换成双精度型
 ※重点提示:在求解表达式的值时,若包含不同优先级的运算符,则按运算符的优先级别由高到低运行,若表达式中运算符的级别相同,则按运算符的结合方向进行。
第五节 赋值表达式
一、赋值运算符和赋值表达式
1.赋值运算符
  赋值符号“=”称为赋值运算符,由赋值运算符组成的表达式为赋值表达式。
格式如下: 变量名=表达式;
其作用是将一个表达式的值赋给另一个变量。
例如:a=5的作用是把5赋给变量a,即把5存入变量a对应的存储单元。
关于简单的赋值运算,要注意以下几点:
(1)赋值符“=”左边必须是变量,右边既可以是常量,变量,也可以是函数调用或表达式。如 z=sqrt(3)+2*c。
(2)赋值表达式右边的“表达式”,也可以是一个赋值表达式,即出现多个赋值符号的情况。例如:a=(b=3),它相当于b=3。
(3)赋值运算符的作用是将赋值运算符右边的值赋值给左边的变量,运算后左边变量的值被右边表达式的值代替,而右边的值不会发生变化。
(4)赋值符“=”与数学中的等号“=”外观相同,但含义、作用不同,如i=i+1,在数学中是不成立的,但在C语言中是正确的。它的含义是将i当前值加1再赋给变量i。
(5)如果赋值号两边的运算对象类型不一致,则系统会自动进行类型转换。
转换的规则是:将赋值号右边表达式的值的类型转换成赋值号左边变量的类型。
二、复合的赋值表达式
1.复合的赋值运算符
  在赋值符“=”之前加上其他运算符,可以构成复合的赋值运算符。
例如 +=:
x+=4 它相当于表达式:x=x+4 即先使x加4,再赋给x。
采用这种复合运算符,一是为了简化程序,二是为了提高编译效率。
C语言规定可以使用以下10种复合赋值运算符,如下:
+=、 ﹣=、 *=、 %=、 <<=、 >>=、 &=、 ^=、 \=、 |=
  其中后五种是有关位运算方面的,将在后续章节中介绍。
 注意:复合赋值运算符的优先级与赋值运算符的优先级相同。
例如1.14:如已有变量n,值为8,计算表达式n+=n*=n-2的值。
因为赋值运算符与复合的赋值运算符的优先级相同,且运算方向自右向左.
计算步骤为:
(1)先计算n-2,该表达式值为6。
(2)再计算n*=6,即n=n*6,此时n的值仍为8,所以表达式值为48。
(3)最后计算n+=48,即n=n+48,此时n的值已经改变为48,所以表达式的值为96。
  即表达式n+=n*=n-2最终的值为96,而n最终的值也是96。
2. 赋值运算中的类型转换
  如果赋值运算符两侧的类型不同,在赋值时系统要自动进行类型转换,转换原则是不论赋值号两侧类型级别高低如何,一律将赋值号右边的类型转换成左边变量的类型,然后再赋值,具体规定如下:
1.将实数赋给整型变量时,舍弃实数的小数部分(不是四舍五入)。例如i是整型变量,则i=2.99;结果i的值为2,在内存中以整数形式存储。
2.将整数赋给单、双精度变量时,数值不变,但将整数转换成浮点数形式存放到左边的变量中。例如:float x,x=2,结果是将2转换成2.000000赋给变量x。
3.将字符型赋给整型时,由于字符型为1个字节,而整型是2个字节,故将字符的ASCII码值放到整型量的低8位中,高8位为0。
4.将整型赋给字符型时,只把低8位赋给字符量。
 ※重点提示:赋值运算符的左边只能是变量,不能是常量或表达式。计算表达式的值时,参加运算的各个数据类型都转换成数据长度最长的数据类型,然后再计算,计算的结果是数据长度最长的数据类型。
三、自加、自减运算符
  自增运算符(++)是使运算量增加1,自减运算符(--)是使运算量减1,它们有以下几种形式:
 ++a a值先增加1后再参与其他运算
a++ 先参与其他运算再使a值增加1
--a a值先减少1后再参与其他运算
a-- 先参与其他运算再使a值减少1
前缀增量运算符
后缀增量运算符
关于自增和自减运算,要注意以下几点:
(1)++a和a++的区别。
(2)增量运算符的运算对象只能为变量,不能是常量或是表达式。
例如,++3、++(i+1)等非法。
(3)不论++(或--)在变量的前面还是后面,对于变量本身增加1(或减少1)都具有相同的效果。
(4)但自增、自减运算符和其他运算符混合使用时,应注意其结合性为“自右向左”,如-a++,即相当于-(a++)。
a++作为一个表达式,该表达式的值为变量a没有增加1之前的值,而++a的值为变量a增加1之后的值。
注意区别:j=i++; j=++i;
四、逗号运算符和逗号表达式
  “,”是C语言提供的一种特殊运算符,用逗号将表达式连接起来的式子称为逗号表达式。
其一般形式为:
表达式1,表达式2,……,表达式n
例如:
x=5,y=6,z=7
说明:
1.逗号运算符的结合性为从左到右,先计算表达式1,最后计算表达式n,最后一个表达式的值就是该逗号表达式的值。
2.逗号运算符再所有运算符中优先级最低。
3.表达式可以嵌套,即表达式1和表达式2本身也可以是逗号表达式,如(x=2*5,x-3),x*4,整个表达式的值应为40。
4.并非所有出现逗号的地方就可以作为逗号表达式,如printf(“%d,%d”,a,b)。
 ※重点提示:自增和自减运算符只能用于变量,不能用于常量或表达式。逗号运算符的结合性为从左到右,最后一个表达式的值就是该逗号表达式的值。
1.4 Turbo C V2.0的基本操作
进入Turbo C 2.0集成开发环境中后,显示:
1.运行一个C语言程序的一般过程
运行一个C语言程序的一般过程:
(1)启动TC,进入TC集成环境。
(2)编辑(或修改)源程序。
(3)编译。如果编译成功,则可进行下一步操作;否则,返回(2)修改源程序,再重新编译,直至编译成功。
(4)连接。如果连接成功,则可进行下一步操作;否则,根据系统的错误提示,进行相应修改,再重新连接,直至连接成功。
(5)运行。通过观察程序运行结果,验证程序的正确性。如果出现逻辑错误,则必须返回(2)修改源程序,再重新编译、连接和运行,直至程序正确。
(6)退出TC集成环境,结束本次程序运行。
2.TC的启动、退出与命令菜单
(1)启动Turbo C: tc ←┘
(2)命令菜单的使用
1)按下功能键F10,激活主菜单。如果主菜单已经被激活,则直接转下一步。
2)用左、右方向键移动光带,定位于需要的主项上,然后再按回车键,打开其子菜单(纵向排列)。
3)用上、下方向键移动光带,定位于需要的子项上,回车即可。执行完选定的功能后,系统自动关闭菜单。
注意:菜单激活后,又不使用,可再按F10/Esc键关闭,返回原来状态。
(3)退出Turbo C
退出TC有两种方法:
1)菜单法:File | Quit(先选择File主项,再选择并执行Quit子项)
2)快捷键法:Alt+“X”(先按下Alt键并保持,再按字母键X,然后同时放开)
(4)编辑并保存一个C语言源程序
(5)运行与查看结果
(1)运行当前正在编辑的源程序文件
选择并执行Run | Run项(快捷键:^F9),程序运行结束后, 仍返回到编辑窗口。
当你认为自己的源程序不会有编译、连接错误时,也可直接运行(即跳过对源程序的编译、连接步骤)。这时,TC将一次完成从编译、连接到运行的全过程。
(2)查看运行结果
选择并执行Run | User Screen项(快捷键:Alt+F5)。查看完毕后,按任一键返回编辑窗口。
如果发现逻辑错误,则可在返回编辑窗口后,进行修改;然后再重新编译、连接、运行,直至正确为止。
同课章节目录