c语言考试复习大纲.docx
- 文档编号:25046571
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:17
- 大小:94.01KB
c语言考试复习大纲.docx
《c语言考试复习大纲.docx》由会员分享,可在线阅读,更多相关《c语言考试复习大纲.docx(17页珍藏版)》请在冰豆网上搜索。
c语言考试复习大纲
武汉理工大学管理学院2014级c语言考试梳理
第一章概览
C语言起源:
1972年贝尔实验室
许多计算机语言Basic模仿英语
C语言是为编程人员开发的语言
计算机工作的基本原理
cpu进行绝大多数计算工作,
内存指令->cpu寄存器->cpu计算执行
c语言是高级语言
强大高效可移植面向编程人员
缺点:
(1)给了比较大的自由度,风险也上升,尤其是指针
(2)运算符丰富,组合起来难以理解
c是最接近底层的高级语言
编程机制:
编译器将c源代码编译成机器语言生成目标代码文件,
链接器向最终程序加入代码,启动代码(不同操作系统启动代码不同),库函数。
。
生成可执行文件.exe
C语言标准:
c99
一个实例
#include
#defineAGE“Howoldareyou?
”
/*宏定义指令无参宏有参宏
无参宏:
#define标识符字符
有参宏:
#define标识符(参数)字符表达式*/
intmain(void)
{
inta;//a为标识符int为关键字之一
printf(AGE);
scanf(“%d”,&a);//输出控制&取地址符
return0;
}
printf(“字符串”,变量列表)
printf():
%d%o%x%X%u
%f%e%E
%c%s
附加格式字符%5d%05d%+5d%+-5d%.5f%7.1f%#x%#X
scanf(“字符串”,&变量)
scanf()注意事项输入遇到空白字符时停止输入
代码规范性
第二章基本数据类型和运算符
程序运行离不开数据
2.1基本数据类型
现在所学的
基本型:
整型实型字符型(枚举类型enum)
指针类型
构造类型:
数组array结构struct联合(共用体)union
2.2常量
整型常量:
十进制八进制:
012十六进制:
0Xfff存储方式其实都一样
后缀ULUL
实型常量(浮点型):
十进制小数0.000000
指数形式:
3.2e51e+0120e5-0.45e-4
默认为double可用后缀F或L进行类型转换
字符常量:
‘a’‘d’‘$’空字符:
‘\0’
转义字符‘\n’‘\t’‘\’’‘\”’‘\ddd’‘\xhh’
字符串常量
“字符串”
分多行输出:
printf(“Thisisthefirstline\
Thisisthefirstline\n”);
printf(“Thisisthefirstline”,
“Thisisthefirstline\n”);
printf(“Thisisthefirstline”);
printf(“Thisisthefirstline”);
符号常量定义了符号常量之后,与字符串序列等价
#define或类型限定符const或枚举类型enum
2.3变量
变量声明变量赋值/初始化
先定义才能使用
一个函数中变量名不能重复,标识符不能重复
2.4指针变量
int*p;p的类型是int*,p是一个指向int类型整数的指针
指针运算符*取值;&取地址
&*互为逆运算
指针变量初始化才有意义
inta;
p=&a;p中只能存放同类型变量的地址这里都为int
2.5运算符与表达式
用运算符将若干个式子连接起来构成的式子叫做表达式
求表达式的值在考试中经常见到,直接或者间接的考
2.5.1算术运算符和算术表达式
+-(正和负)+5(右往左)优先级比下面几个高
+-(加和减)*/%(左往右)5.0/2==2.500000
各个注意事项
左右两边类型不一致,自动升级为高等级类型,混合类型中有float类型,会被升级为double
/整数相除要注意,会舍去小数部分,或者说是类型相同时,值的类型也相同
指针用加减的注意事项
%注意事项
字符型操作数,比如‘a’,会将字符型转为整数型,用字符的ASCII码值参加运算
‘a’+3==‘d’
2.5.2赋值运算符和赋值表达式
=+=-=*=/=%=
性质:
所有的优先级相同,结合方向为从右至左。
优先级低于算术运算符
注意优先级所带来的赋值问题a*=3+2
整体表达式的值是最后一次运算之后的值
inta=9,b=5;b=(a=4)/(b=a)值为1
赋值表达式左右类型不一致时的类型转换规则:
整型数据赋给实型变量时,值大小不变
实型赋给整型会舍弃小数部分
float赋给double数值不变,double赋给float截取前七位有效位
整型长的赋给短的,截取相应大小的低字节位;短的赋给长的,
若有符号将符号值填充多出来的高位(0为正1为负),无符号的就用0填充多出来的字节
2.5.3自增和自减运算符
a++++a顺序问题a++就是先用a,再让a增加1
a----a++a就是先让a增加1,再用a
只能用于变量,不能用于常量和表达式,即不能有3++(d=3)++之类
最好只用在整数上,浮点数最好不用
++--单目,优先级比双目高,与+-(正负)优先级相同
-d--结合方向都是从右向左所以可以看做-(d—)
指针变量自增运算
int*p;intx=2;p=&x;
++p
2.5.4逗号运算符和逗号表达式
优先级在所有运算符中最低,结合方向从左往右,顺序执行,
最后一个表达式的值就是整个逗号表达式的值
注意与函数调用,声明等中出现的,的区别,这里面的,只是个分隔符
2.5.5其他运算符
强制类型转换运算符
(int)3.2
sizeof运算符
用法:
sizeof(表达式)或者sizeof(数据类型)
输出可用%z,是一种由u改造的类型,所以输出sizeof()也可用%u
printf(“int类型的大小为%z个字节”,sizeof(int));
2.5.6混合运算
不同类型数据在运算时,首先进行类型转换再进行运算
书写代数,数学上的表达式应注意,使用数学库函数注意参数类型,
如计算sin30°值,应代入弧度值即30*3.14/180
第三章控制结构
3.1基本控制结构
顺序,选择,循环图灵证明这三种控制结构的组合可以解决一切实际问题
3.1.1基本语句
3.1.2常用的输入输出函数
字符输入输出函数getch();getchar();putch();putchar();
getch()不需要回车确认,拿到字符就走人,还不回显;
getchar()需要按回车确认输入好了
printf(“ch=%c\n”,getch());//将输入的字符立即显示
3.1.3顺序结构程序设计示例
3.2程序中的控制运算符
3.2.1关系运算符
6种比较运算的关系运算符:
<<=>>===!
=
前四个同级,优先级比后两个高。
优先级比加减乘除低,比赋值运算符高
关系表达式结果只有真假。
c语言规定非零为真,0为假3>2+2值为0
正确表示数学上的连不等式3<=x<=7x>=3&&x<=7
3.2.2逻辑运算符
!
非&&与||或
&&类似于乘法运算||类似于加法运算
短路特性
3.2.3条件运算符
?
:
三目运算符结合方向从右往左如a>b?
a:
c>d?
c:
d等价于a>b?
a:
(c>d?
c:
d)
3.3程序中的选择结构
3.3.1if语句
用法1:
if(表达式)//条件表达式为真则执行内嵌语句。
若没有强制性语句就
语句;//执行一遍内嵌语句之后就执行下一个语句
用法2:
if(表达式)
语句;
else
语句;
用法3:
if(表达式)
语句
elseif(表达式)
语句
…
else
语句
3.3.2switch语句
用法:
switch(表达式)
{
case常量表达式1:
语句1;
case常量表达式2:
语句2;
……
case常量表达式n:
语句n;
default:
语句n+1;
}
执行过程顺序执行
优化用法:
各个语句最后加上break;
3.3.3多重选择结构
if语句的嵌套
else与它前面最接近的没有和else配对的if配对
switch嵌套
3.4程序中的循环结构
3.4.1while循环结构
用法:
while(表达式)
{
循环体;
}
3.4.2do-while循环结构
用法:
do{
循环体;
}while(表达式);
3.4.3for循环结构
用法:
for(表达式1;表达式2;表达式3)
{
循环体;
}
3.4.4break和continue语句
3.4.5多重循环结构
3.53.6不考
第四章数组和指针
数据类型在实际生活中有很多是批量数据,
单个数据用来处理这些问题效率显然会比较低下
数组是一种构造类型
是由若干相同数据类型的数据组合起来的
4.1一维数组
4.1.1一维数组的定义和初始化
(1)定义:
类型名数组名[数组元素个数]
inta[5];floatb[5];charc[5];
注意事项:
数组a的元素是a[0]a[1]a[2]a[3]a[4]下标从0开始
课本:
不能用变量定义数组长度(变长数组VLA)
可以使用malloc()动态分配
数组一旦确定大小就不能改变
推荐使用宏定义的明显常量作为数组大小比如
#defineMAXNAME50
……
charname[MAXNAME];
一维数组定义之后会在内存中分配连续的存储空间,
大小为数组元素的个数*定义的数据类型所占用字节数比如inta[5]大小就是5*4=20字节
(2)初始化数组如果不初始化,就没有实际意义部分初始化之后,没有初始化的变为0
inta[6]={1,2,3,4,5,6};//整体初始化只能在定义的时候
inta[6]={1,2}//定义之后只能单个初始化a[5]是个元素
4.1.2一维数组元素的引用及基本操作
使用某个已经声明过的数组中的元素:
a[0]a[1]注意下标
引用只能单个引用
for(i=0;i scanf(“%d”,&a[i]);//或printf(“%d”,a[i]); 赋值操作 inta[3];//a[0]a[1]a[2]就相当于普通的整型变量 4.1.3一维数组的应用举例 查找: (1)顺序查找: (只列出核心代码) #defineN20 …… for(i=0;i if(a[i]==key) { printf(“%d被找到啦,哈哈哈~~~”,key); num++;//统计找到的数据个数 } (2)二分法查找(前提是数据升序或者降序排列,本例中为升序) #defineN9 …… intlow=0; inthigh=N-1; intmid,key; …… while(low { mid=(low+high)/2; if(a[mid]==key) break; if(a[mid] low=mid+1; else high=mid–1; } 排序: (1)比较排序法 先从a[0]开始与a[1]比较,如果遇到比a[0]小的 就交换这个数与a[0]的值,这样a[0]最后就是这些数的最小值 然后从a[1]开始,与a[2]比较,类似上面,a[1]就成为除了a[0]的数的最小值 以此类推,就会得到一个从小到大的数组排列
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 考试 复习 大纲