新东方在线 计算机专项精讲课程讲义
C语言
计算机硕士专业基础班—C语言
赵海英赵海英
http://t.qq.com/flytianshan2012
章节
第一章
标题
内容 适用课程 例题/习题
基础知识
数制及转换
计算机字长
内存与地址
计算机组成
计算机网络
操作系统
考研真题
第二章
C语言组成
C数据组成、
数据及数据
类型
类型
数据结构
计算机组成
操作系统
操作系统
考研真题
C语言考研
第三章
第四章
顺序结构程序设计 框架
语句
输入、输出
选择结构程序设计 if---else
switch(){…
}
C语言考研 C语言考研
数据结构
C语言考研
章节
标题
内容 适用课程 例题/习题
第五章
循环结构程序
设计
第六章
数组
3种结构
双循环
break
continue
数据结构
操作系统
计算机组成
考研真题
C语言考研
一维数组 数据结构
操作系统
二维数组
计算机组成
字符串
考研真题
C语言考研
第七章
函数与预编译 定义/调用/
原型
分析过程
传值
数据结构
操作系统
考研真题
C语言考研
章节
标题
内容
适用课程 例题/习题
第八章
指针
第九章
第九章
结构体
结构体
列指针
行指针
函数指针等
sturct类型
sturct类型
typedef
构造-定义-使用
数据结构
链表
C语言考研
数据结构
数据结构
计算机组成
考研真题
考研真题
C语言考研
第十章
位运算/文件 打开/关闭
数据结构
C语言考研
读写
指针定位/测试
第一章 基础知识
一、数制及转换
1、四种数制:二进制 十进制 八进制 十六进制
2、四种数制互相转换
二、习题练习
二、习题练习
1、ASCII码
2、内存
3、原码
4、地址映射
5、IP地址
第一章 基础知识
一、数制及转换
1、四种数制:二进制 十进制 八进制 十六进制
(1)十进制定义
(1)十进制定义
0 1 2 3… 9二种编码符号
逢十进一
例如:1234 34561 348758 23e9a1 09111
1
www.xztxxw.com QQ:159740804
新东方在线 计算机专项精讲课程讲义
C语言
第一章 基础知识
一、数制及转换
第一章 基础知识
一、数制及转换
1、四种数制:二进制 十进制 八进制 十六进制
1、四种数制:二进制 十进制 八进制 十六进制
(2)二进制定义
(2)二进制定义
0 1 二种编码符号
逢二进一
(3)八进制定义
(3)八进制定义
0 1 …7 八种编码符号
逢八进一
例如:10001 1001111 1000201 111111171
例如:123451 10678 20740 09341 07323
第一章 基础知识
一、数制及转换
第一章 基础知识
一、数制及转换
2、四种数制转换:
1、四种数制:二进制 十进制 八进制 十
二进制 十进制 八进制 十六进制
六进制六进制
(4)十六进制定义
0 1…9 A B C D E F 十六种编码符号
逢十六进一
例如:1abc1 0945dej5 9002fa1 78z823
(1)十->二进制
(25)10=(?)2
(25)10=(011001)2
口诀:除2取余倒排
例题(65)10=(?)2 (255)10=(?)2
第一章 基础知识
一、数制及转换
2、四种数制转换:
二进制 十进制 八进制 十六进制
(2)二->十进制
(11001)2=(?)10
口诀:按位乘权相加
例题(101111)2=(?)10 (1111 1111)2=(?)10
(3)二->八进制
(11001)2=(?)8 口诀:三位压成一位
二
八
000 -> 0
001 -> 1
010 -> 2
011 -> 3
100 -> 4
101 -> 5
110 -> 6
111 -> 7
例题(101111)2=(?)8 (1111 1111)2=(?)8
2
www.xztxxw.com QQ:159740804
新东方在线 计算机专项精讲课程讲义
C语言
(4)八->二进制
(721)8=(?)2 口诀:一位展成三位
八
二
0 -> 000
1 -> 001
2 ->010
3 -> 011
4 -> 100
5 -> 101
6 -> 110
7 -> 111
(5)二->十六进制
(1100111)2=(?)16 口诀:四位压成一位
二 十六
二
十六
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
例题(363)8=(?)2 (3871)8=(?)2
例题(101111)2=(?)16 (1111 1111)2=(?)16
(6)十六->二进制
(7aB1)16=(?)2 口诀:一位展成四位
十六
二
0 -> 0000 8 -> 1000
1 -> 0001 9 -> 1001
2 -> 0010 A -> 1010
3 -> 0011 B -> 1011
4 -> 0100 C -> 1100
5 -> 0101 D -> 1101
6 -> 0110 E -> 1110
7 -> 0111 F -> 1111
例题(3f9)16=(?)2 (a8f1)16=(?)2
二、数制应用
1、ASCII码
2、内存
3、机器码
3 机
4、地址映射
5、IP地址
1、ASCII码
A a B b $↙ !
二进制存储?
唯一的二进制编码
结论:由美国A制定的标准S信息Ⅰ交换Ⅰ码C
结论:由美国A制定的标准S信息Ⅰ交换Ⅰ码C
A-> 10000165
B->66
a->97
b->98
2、内存
78
23
内容值
地址
1001
1002
1003
1004
1004
1005
3
www.xztxxw.com QQ:159740804
新东方在线 计算机专项精讲课程讲义
C语言
3、机器码
真值->机器码(3种)
十进制-> 二进制
78=? 23=?
78
23
内容值
地址
1001
1002
1003
1004
1004
1005
4、地址映射
地址
1001
1002
78
23
内容值
1003 内容值
1003
1004
1005
题1:16位的逻辑地址,逻辑地址空间是多大?
物理内存32K,地址多少位?
216=64K 32K->15位
题2:假设逻辑地址32位,页面大小4K,逻辑地址
分成多少个页面?
4K=212
4K=212
232/212=220,页面数220,页号是20位
232/212=220,页面数220,页号是20位
题3:4个2K存储芯片,每个2K存储空间起始地址
是多少?
2K->11位 第一个2K:十六进制
000… 0 -> 0000H
111….1 -> 07FFH 第二个2K地址?
地址
1001
1002
1003
1004
1005
78
23
内容值
题3:4个2K存储芯片,每个2K存储空间起始地址
是多少?考研
2K->11位 第一个2K: 十六进制
000… 0 -> 0000H
111….1 -> 07FFH
第二个2K地址
0800H -0FFFH
第三个2K地址
1000H-17FFH
第4个地始是1800H-1FFFH
78
23
内容值
地址
1001
1002
1003
1004
1005
5、IP地址
题1:某主机IP地址为180.80.77.55,子网掩码为
255.255.252.0,问主机号部分多少位?
提示:IPV4地址是32位,对应二进制1的是网络号
,对应0的倍数是主机号倍数
题2:求IP分组到达时,经过多少个路由器?
提示:两个十六进制的差
5、IP地址
题1:某主机IP地址为180.80.77.55,子网掩码为
255.255.252.0,问主机号部分多少位?
提示:IPV4地址是32位,对应二进制1的是网络号
,对应0的倍数是主机号倍数
255->1111 1111 252->1111 1100
255.255.252.0 ->
11111111.11111111.11111100.0000 0000
题2:求IP分组到达时,经过多少个路由器?
40H-31H=?
40H-31H=0FH=15个
4
www.xztxxw.com QQ:159740804
新东方在线 计算机专项精讲课程讲义
C语言
题3:某主机IP地址为180.80.77.55,子网掩码为
地址
255.255.252.0,问主机号部分多少位?
255->1111 1111 252->1111 1100
255.255.252.0 ->
11111111.11111111.11111100.0000 0000
1001
1002
78
23
内容值
1003 内容值
1003
1004
1005
第二章 C语言组成及数据
一、C语言组成
二、数据与数据类型
三、C语言上机运行环境
、 语言上机运行环境
第二章 C语言组成及数据
一、C语言组成
main()
int tmp1,tmp2,count;
count=1;
tmp1=count;
tmp1++;
count=tmp1;
tmp2=count;
tmp2=tmp2+2;
count=tmp2;
{
}
组成结构
组成:若干文件
文件:若干函数
函数:函数头+函数尾
函数头:四部分‐>函数名+()
函数体:{}+语句
语句:三类语句
类型1/* */
类型2定义语句;
类型3执行语句;
main()
{
int tmp1,tmp2,count;
count=1;
tmp1=count;
tmp1++;
count=tmp1;
tmp2=count;
tmp2=tmp2+2;
count=tmp2;
} 多少执行语句?
int count=1;
void fun1()
{ int tmp1;
tmp1=count;
tmp1++;
count=tmp1;
}
void fun2()
int tmp2;
{
tmp2=count;
tmp2=tmp2+2;
count=tmp2;
}
main()
{
/*int count=1;*/
fun1();
fun2();
}
多少执行语句?
第二章 C语言组成及数据
一、C语言组成
二、数据与数据类型
5
www.xztxxw.com QQ:159740804
新东方在线 计算机专项精讲课程讲义
C语言
二、数据与数据类型
数据四类:常量 变量 表达式 函数
常量:值不发生变化的量
变量:值随时随地改变的量
变量:值随时随地改变的量
表达式:用运算符将数据连接起来的合法式子
函数:调用具有一定功能的函数作为运行量
二、数据与数据类型
数据类型四大类:基本类型、构造类型、指针类
型、空类型
1、基本类型:整型 int 、字符型 char 、浮点型
1、基本类型:整型 int 、字符型 char 、浮点型
(单精度型 float 、双精度型 double) 、枚举
类型 enum
2、构造类型:数组型、结构体类型 struct 、共
用体类型 union
3、指针类型
4、空类型 void
标识符(三类)
1、保留字(关键字):共32个,固定含义,不能再做为它用。
如:int float char if else for
2、预定义标识符:在C语言中预先定义并具有特定含义的标识符。
scanf printf include
3、用户自定义标识符:由用户根据需要定义的标识符。如:变量名
、数组名、函数名等。
注:(1)用户自定义标识符,
注:(1)用户自定义标识符,
是字母或下划线
标识符只能由字母、数字、下划线组成,而且第一个字符必须
标识符只能由字母、数字、下划线组成,而且第一个字符必须
(2)在C程序中大小写字母是严格区分的。如int INT sum
SUM ,C语言程序中主要使用小写。
标识符合法性判断:
a_12 a12 3m do if IF aa.txt _12 c#bc Do
二、数据与数据类型
数据四类:常量 变量 表达式 函数
常量四类:
整型常量
实型常量
字符型常量
字符串常量
常量——整型常量
常量——实型常量
1、整型常量:三种形式(十进制、八进制、十六进制)
第一形式-> 十进制:是用一串连续的0…9数字
如32767,-32768,9,0,-7
第二形式-> 八进制:用数字0开头的一串连续合法八进制
第二形式-> 八进制:用数字0开头的一串连续合法八进制
如: 013,05,0777,089(出错)
第三形式-> 十六进制:用0x或0X 开头的一串连续合法的十六
进制
如:0x12,0xfff
若表示长整型常量则必须后加字母l或L,如0L、34l、0x123L
2、实型常量:两种形式(小数、指数)
第一形式 -> 小数形式:由数字和小数点组成。
如:123.456 123. .456 0.456 都是合法的实型常量
第二形式->指数形式:用“E”或“e”后紧跟一个整数表示以10为底幂
数
数
如:1.23E-5
注:(1)字母E或e之前之后必须都有数字,且后必是整数。
(2)字母E或e的前后及各数字之间不能有空格。
如:判断合法性
1.23e4 5.4e0.5 .23e5 4E 3E2 3.E2
6
www.xztxxw.com QQ:159740804
新东方在线 计算机专项精讲课程讲义
C语言
常量——字符型常量
常量——字符型常量
'A'
'@'
'9'
3、字符型常量:四种形式(常规、转义、八进制、十六进制)
第一形式-> 一对单引号括一个字符。
如:'a'
第二形式->转义字符常量:必须以一个反斜杠“\”开头
常用的转义字符有:
常用的转义字符有:
\n 表示换行符
\n 表示换行符
\t 表示制表符
\b 表示退格符
\r 表示回车符
问题‘\’合法?
3、字符型常量:四种形式(常规、转义、八进制、十六进制)
第一形式-> 一对单引号括一个字符。
第二形式->转义字符常量:必须以一个反斜杠“\”开头
第三形式 -> \ddd 最多以有三位八进制数
第三形式 -> \ddd 最多以有三位八进制数
第四形式 -> \xhh 最多可以有两位十六进制数
常量——字符串常量
变量
4、字符串常量:一种形式
定义:用一对双引号(双撇号)括起来若干个字符
如:“abcdefgh”
"1234567“
"a1b2c3d4"
注:(1)每一个字符串尾都有一个字符串结束符’\0’,
(2)C语言中没有字符串变量。
一定要区分字符常量和字符串常量
变量使用规则:先定义后使用
定义格式:数据类型名
比如: (1) int i; int j; int k;
变量名列表 ;
(2) int i,j,k;
(3) int i=1,j=1,k=9; /*赋初值*/
注:(1)变量必须先定义后使用。
注:(1)变量必须先定义后使用。
int long float double char (与常量类型一致)
(2)变量名属于用户标识符,遵守用户标识符命名规则。
(3)在同一“函数体”{}中不能定义同名变量
(4)同时定义多变量,必用逗号分隔
(5)变量可赋初值(初始化),无初值是随机值
777
函数
函数(标准函数 自定义函数)
#include
表达式
定义:表达式:用运算符将数据连接起来的合法式子
运算符:三个属性:功能、优先级、结合性(运算方向)
如:3.5+1/2
1+2+3
3.5+(1/2)
(3.5*1)/2=1.75
可以参与运算: sqrt(7)/9+abs(-5)
1.0/2=?
1/2=?
7
www.xztxxw.com QQ:159740804
新东方在线 计算机专项精讲课程讲义
C语言
表达式
1、算术运算符及算术表达式:
+ - * / %
求余(%):
(1) 两边运算对象必须是整型
(1) 两边运算对象必须是整型
如:7.0%3 、 4%3. 不合法的表达式
表达式
求余(%):
(2)求值方法:先忽略负号不计求出余数,再将所得余数的符
号定成与被除数相同的符号即可。
如:
如:
17%3
17%3
17%-3
-17%3
-17%-3 结果为:-2
结果为:2
结果为:2
结果为:2
结果为:-2
注:(1)单独的常量、变量或函数调用都是C语言合法表达式
(2)凡是表达式都有一个确定的值
隐式转换
double float
long
unsigned
表达式
2、赋值运算符及赋值表达
赋值运算符:=
格式: 变量名=表达式
赋值运算符的功能:将表达式的值赋给“=”左边的变量
int char
例如:A=5+8
表达式
注:(1)赋值运算符左边只能是一个变量
如:a+b=3 4=3 非法表达式
a=6 a+(b=3) 合法的表达式
(2)赋值运算符右边可以合法表达式
如: a=b=20
如: a=b=20 a=(b=10)/(c=2)
a=(b=10)/(c=2)
(3)赋值表达式的值就是赋值运算符左边变量值。
(4)实型数据赋给整型变量时,实型小数舍去;整型数据
赋给实型变量时系统自动将整型数据转成实型数据
表达式
复合赋值运算符:
+= 、-=、*=、/=、%=、&=、|=、^=、>>=、<<=
注:复合赋值运算符的两个运算符中间不能有空格。
如: a+=3 a=a+3
a=5,b=8;则下列表达式的值是多少?用完表达
例1.若有int a=5,b=8;则下列表达式的值是多少?用完表达
例1.若有int
式后变量a 和 b的值分别为多少?
a+=b/=a
表达式的值: A的值: B 的值:
例2.若有int a=5,b=9;float c;则表达式c=b/a+1.2的值多少?
8
www.xztxxw.com QQ:159740804