C语言讲义计算机培训版.docx
- 文档编号:3873545
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:43
- 大小:150.11KB
C语言讲义计算机培训版.docx
《C语言讲义计算机培训版.docx》由会员分享,可在线阅读,更多相关《C语言讲义计算机培训版.docx(43页珍藏版)》请在冰豆网上搜索。
C语言讲义计算机培训版
第一节C语言概述
一、C语言是什么?
一种可编译的高级程序语言
程序语言
1.定义:
人们运用计算机来解决实际问题的工具
2.分类:
机器语言、汇编语言、高级语言
编译:
将高级语言翻译成机器语言的过程
3.组成:
数据结构+算法+程序设计方法+工具
(处理对象)+(动作+顺序)+(结构化设计方法)
注:
算法表示方式:
自然语言、伪码、流程图、N-S图
结构化程序设计三种基本控制结构:
顺序结构、选择结构、循环结构
二、C语言程序的结构
例:
#include
voidmain()//函数头
{
printf("WelcometoCprogramming\n");/*函数体*/
}
考点:
1.C语言程序由一个或多个函数组成。
一个C程序中必须有且只有一个主函数,主函数名为main,其位置不限。
2.C语言程序中每个函数都可独立编译,但必须从main函数开始执行。
3.函数由函数头和函数体两部分组成。
4.C语言程序可以有注释行,用来解释程序的功能,便于理解,作用符为//和/*123*/,注释内容不参与编译。
三、C程序的运行周期
编辑(.C)编译(.obj)连接(.exe)运行
(源程序)(目标程序)(可执行文件)
四、结构化程序设计方法
1.设计思路:
把一个复杂问题的求解过程分阶段进行,每一个阶段处理的问题都控制在人们容易理解并易于处理的范围内。
2.特点:
自顶向下、逐步求精、模块化设计
3.基本控制结构:
顺序结构、选择结构、循环结构
练习题:
11(13.9);11(13.3);11、12(12.9);11、14(12.9笔试);11、13、14(2013.3)
第二节数据类型、运算符和表达式
一、C语言词汇
1.标识符(考点)
元素:
字母、数字、下划线
命名规则:
必须由字母、数字、下划线三元素组成
首字母必须是字母和下划线
字母有大小写之分
标识符不应与关键字相同
练习题:
13(13.9);13(13.3);14(12.9);12,14(12.9笔试);11(09.3)
2.关键字:
int、float、double、char、if、while、include
考点:
sizeof:
返回一个对象或者类型所占的内存字节数
练习题:
2013.3-16、30
typedef:
为现有数据类型创建一个新的名字。
用法:
typedef数据类型别名
例:
typedefinta;具体实例见2013.3-36
练习题:
2013.9-35
3.运算符
算术运算符(七个):
+、-、*、/、%、++、--
关系运算符(六个):
>、<、==、>=、<=、!
=
逻辑运算符(三个):
&&、||、!
赋值运算符:
=
位运算符:
<<(向左移位)、>>(向右移位)、~(取反)、
∣(按位或)、∧(按位异或)、&(按位与)
例:
a=3;a<<4;00000011(十进制3)向左移4位00110000(48)
a=15;a>>2;00001111(十进制15)向右移2位00000011(3)
~9;0000000000001001(十进制9)取反111111*********0
9|5=13;(两数对应的二进制位执行或运算,一真为真,双假为假)
9∧5=12;(两数对应的二进制位相异或,值相同为0,相反为1)
9&5=1;(两数对应的二进制位执行与运算,双真为真,一假为假)
补充知识点:
A进制组成元素
十进制元素:
0、1、2、3、4、5、6、7、8、9
二进制元素:
0、1
八进制元素:
0、1、2、3、4、5、6、7
十六进制元素:
0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
B进制转换
十进制二进制
方法:
整数部分(除2取余,逆序书写)小数部分(乘2取整,正序书写)
二进制十进制方法:
按权相加
二进制八进制方法:
取三合一
八进制二进制方法:
取一分三
二进制十六进制方法:
取四合一
十六进制二进制方法:
取一分四
练习题:
38(13.9);39(13.3);39(12.9);39(12.9笔试);39(09.3)
注:
运算符优先级:
逗号运算符赋值运算符&&和||条件运算符关系运算符算术运算符!
低高
4.分隔符:
空格、逗号
5.常量
6.注释符:
/*程序解释说明*/
二、常量和变量
常量:
在程序运行过程中,值不能被改变的量,类型包括字面常量和符号常量(通过宏定义命令定义一个标识符代表一个常量)。
#definePI3.14
变量:
在程序运行过程中,值可以改变的量
区分三个概念:
变量名、变量值、变量地址
三、数据类型(表示方式、存储方式)
1.整型数据
(1)常量表示方式:
1)十进制形式例:
10、-1
2)八进制形式例:
012、037
3)十六进制形式例:
0x12、0Xffff
(2)整型变量
变量定义:
intnum,score;
变量类型:
int(有符号整型)数值范围:
-32768~32767
unsigned(无符号整型)0~65535
变量存储:
2个字节
正整数——源码存储,最高位为0(正)
负整数——补码存储,最高位为1(负)
注:
原码、补码
计算机中所有的数据都是采用补码存放的。
符号位0为正、1为负
正数:
原码=补码
负数:
原码反码补码
补码的意义:
使符号位能直接参加运算
减法运算换位加法运算
例:
intn=1;
intn=-1;
2.实型数据
(1)常量表示方式:
1)十进制形式例:
0.0、.25、30.
2)指数形式例:
1.25e5(1.25x105)
3)后缀式例:
25f(25.)
注:
1)十进制形式不能缺少小数点
2)指数形式,e前必须有数字,e后必须有整数
(2)实型变量
floatf;单精度实型变量4个字节7位有效数字
doubled;双精度实型变量8个字节16位有效数字
例:
voidmain()
{floatf=111111.111111;
doubled=111111.111111;
printf(“f=%fd=%d”,f,d);
}
运行结果:
f=111111.109375d=111111.111111
3.字符型
(1)字符常量表示方式:
1)普通表示形式例:
'A'、'a'、'¥'
2)转义字符形式
表示控制字符例:
'\n'、'\t'、'\b'
表示特殊字符例:
'\’'、'\”'、'\\'
表示所有字符例:
'\ddd'、'\xhh'
注:
1)'A'为字符,“A”为字符串
2)'\ddd'1~3位八进制数,'\xhh'1~2位十六进制数
(2)字符变量
变量定义:
charc;
变量存储:
字符型变量占用1个字节
每个字符对应一个ASCII码(a-97,A-65)
字符变量保存的是字符对应的ASCII码值
注:
字符变量可以与int变量一样作加减运算
练习题:
12(13.9);12、32(13.3);13(12.9);13、15、22(12.9笔试);16、30(2012.3);13(09.3);
四、表达式
表达式是由运算符和运算对象组成的合法式子。
1.算术运算符及其表达式
单目运算符:
++、--
例:
intm=1,n=m++;n的值为1
intm=1,n=++m;n的值为2
注:
++和—只能用于变量,不能用于常量和表达式
双目运算符:
+、-、*、/、%
注:
求余运算符%的两个运算对象必须是整型。
运算结果的类型取决于数据类型占内存大的运算对象
2.赋值运算符和赋值表达式
赋值运算符:
a=3b=a+3
复合赋值运算符:
c+=32等价于c=c+32
z*=a-b等价于z=z*(a-b)
注:
赋值运算符自右向左结合
3.逗号运算符和逗号表达式
形式:
表达式1,表达式2…,表达式n
取值:
逗号表达式自左向右执行,但整个表达式取值表达式n
4.强制类型转换
形式:
(类型名)(表达式)
例:
intb=7;floata=2.5,c=4.7;
a+(int)(b/3*(int)(a+c)/2.0)%4值为5.5
练习题:
14、15、16(13.9);15(13.3);15(12.9);18(12.9笔试);14(09.3)
第三节顺序结构
一、赋值语句
1.形式:
变量=表达式;
注:
赋值右结合性。
例inta,b;floatc;a=b=c=5.2;
赋值语句不等于赋值表达式。
2.基本数据类型变量的赋值:
整型变量:
inta=5;(初始化)inta;a=5;(赋值语句)
实型变量:
floatf=5.2;或floatf;f=5.2;
doubled=1.23;或doubled;d=1.23;
字符变量:
charc='A';或charc;c='A';
charc=65;charc='\101';charc=\X41;
注:
动态变量只定义,未赋值,其变量保存的是一个随机值。
inti,j,k;i=j=k=0;正确inti=j=k=0;错误;
练习题:
12(09.3)
二、输入输出
1.字符的输入/输出
字符输入getchar();/*只能用键盘输入一个字符*/
字符输出putchar(ch);
例:
charch='A';putchar(ch);putchar('A');
intch=65;putchar(ch);putchar(65);
putchar('\101');putchar('\X41');
2.格式化输入\输出
(1)格式化输入:
scanf("格式控制字符串",地址列表);
格式符:
c-一个字符、s--字符串
d-十进制整数、o-八进制整数、
x-十六进制整数、u-无符号十进制整数
e(le)、f(lf)-单精度(双精度)
例:
scanf("a=%d,b=%c,c=%c",&a,&b,&c);
注:
int、float数据输入可用空格、换行、Tab键作分隔。
对于字符数据来说,空格、转移字符、换行均为有效字符。
(2)格式化输出:
printf("格式控制字符串",输出列表);
格式符:
d、o、x(X)、c、s、f
附加格式说明符:
m-数据最小宽度--字符向左靠
n-输出n位小数(实数)、截取n个字符
注:
%o、%x不能输出负数
visual6.0C++编译器中int数据分配四个字节
练习题:
17(13.9);17、29(13.3);16、17、29(12.9);16(12.9笔试);15(12.3);15、23(09.3)
第四节选择结构
一、关系表达式、逻辑表达式的运算
关系运算符:
>>=<<===!
=
关系运算符结合性:
自左向右
关系表达式的运算值:
非0为真,0为假
逻辑运算符:
&&||!
逻辑运算符结合性:
&&和||自左至右!
自右至左
逻辑表达式的运算值:
&&双真为真,一假为假
||一真(双真)为真,双假为假
!
你真我假,你假我真
注:
逻辑表达式求值采用“非完全求解法”,得值即终
例:
intx=1,y=1,z=1,a;
a=(x=0)&&(y=2)&&(z=3);/*a=0,x=0,y=1,z=1*/
a=(x=5)&&(y=0)&&(z=3);/*a=0,x=5,y=0,z=1*/
a=(x=5)||(y=2)||(z=3);/*a=1,x=5,y=1,z=1*/
a=(!
x)||(y=0)||(z=3);/*a=1,x=1,y=0,z=3*/
二、if语句
if语句三种形式:
(1)单分支选择:
if(表达式)语句;
(2)双分支选择:
if(表达式)语句1;
else语句2;
(3)多分支选择:
if(表达式1)
语句1;
elseif(表达式2);
第二组
语句2;
elseif(表达式3);
语句3;
………
注:
(1)if(表达式1)表达式1可为逻辑表达式、关系表达式、常量、变量、各种表达式。
0为假,非0为真。
(2)复合语句需用{语句1;语句2}。
(3)If语句嵌套:
if执行语句中再次包含if语句。
if-else的配对原则:
else总与它前面最近的尚未匹配过的if配对。
练习题:
19(13.9);18、19、32(13.3);18、19(12.9);17、18、19(09.3)
三、条件表达式
形式:
表达式1?
表达式2:
表达式3
结合性:
自右向左
例:
intw=1,x=2,y=3,z=4;w>x?
w:
y y: z;值为3 练习题: 18(13.9),23(12.9笔试) 四、switch语句 形式: switch(表达式){ case常量表达式1: 语句1; case常量表达式2: 语句2; ………… case常量表达式n: 语句n;break; default: 语句n+1; } 注: 关键字switch后面的表达式的值是整型或字符型 case后必须为常量表达式,且各值不能相同。 default语句可以省略不用。 break语句用来控制语句执行的停止! 练习题: 20、27(13.9);20、22(13.3);20(12.9);19(12.9笔试) 第五节循环结构 二、while语句 形式: while(表达式)循环体 执行程序: 先判断,后执行 练习题: 32(13.9);21、31(12.9);20(12.9笔试);22(09.3) 三、do-while语句 形式: do 循环体 while(表达式); 执行程序: 先执行,后判断 注: do循环体while(表达式); while语句当条件为真时执行。 do-while语句先执行一次再判断真假。 练习题: 32(12.9);21(09.3) 四、for语句 形式: for(表达式1;表达式2;表达式3) 循环体 表达式1: 赋值表达式 表达式2: 关系表达式或逻辑表达式,用来控制循环次数。 表达式3: 修改循环变量的值 注: 三个表达式是任选项,可以省略,但表达式后的分号不可省略 练习题: 21、22、28(13.9);21(13.3);27、28、32(12.9笔试);20、28(09.3) 五、continue和break continue语句形式: continue;作用: 结束本次循环 break语句形式: break; 作用: 结束整个循环练习题: 填空9(09.3) 第三课第一节函数 一、定义: 大程序中的小程序模块,其实现独特的功能。 二、分类 1.定义角度分: 库函数和用户自定义函数 2.定义形式分: 无参函数、有参函数、空函数 类型标识符函数名(形式参数列表) {声明部分 语句 } 注: 函数由函数头(类型标识符+函数名)和函数体({}中的内容)两部分组成 类型标识符: void、int(可省略)、char、float…… 未定义类型标识符的函数,默认返回值为int 三、函数调用 一般形式: 函数名(实际参数表) 调用方式: (1)函数表达式例: d=sum(a,b); (2)函数语句例: printf("%d",a); (3)函数参数例: printf("%d",sum(a,b)); 注: 实参可以是常量、变量、表达式、函数等 C语言中函数不可以嵌套定义,但可以嵌套调用 四、被调函数声明 1.声明形式: 函数头+分号结束 (1)类型说明符被调函数名(类型形参,类型形参,……); (2)类型说明符被调函数名(类型,类型,……); 例: intsum(inta,intb);或intsum(int,int); 注: 1)在主调函数中声明被调函数 2.免声明的三种情况: 函数返回值为整型或字符型 被调函数定义出现在主调函数之前 在所有函数之前,函数外预先声明函数类型 五、函数的参数传递 sum(inta,intb){ a=a+b;/*a,b形参*/ printf("%d",a); } voidmain(){ inta,b; a=b=2; sum(a,b);/*a,b实参*/ printf("%d",a); } 注: 实参和形参在数量上、类型上、顺序上一定要一致 形参变量只有在函数被调用时才分配内存单元,调用结束时,便会释放所分配的内存单元 当形参是普通变量时,实参和形参间值单向传递 六、函数的返回值 返回值: 被调函数运行之后返回给主调函数的值 实现方式: return表达式; 注: (1)函数返回值类型应与函数类型相一致,如果不一致,则以函数类型为准,自动进行类型转换。 (2)空类型void函数不能使用return语句返回值。 (3)函数中允许有多个return语句,但每次函数调用只能有一个return语句被执行。 练习题: 23(13.9),23(13.3) 七、函数的嵌套与递归 嵌套: 主函数调用A函数,A函数中调用B函数 递归: 主函数调用A函数,A函数中调用A函数 八、函数变量 1.根据作用地域可分为: 局部变量和全局变量 例1: 局部变量 #include main() {inta=2,b=4,c; c=a*b; {intc=5; printf("第二个定义: c=%d\n",c); } printf("第一个定义: c=%d\n",c); } 运行结果: 注: 不同函数中的变量名可以相同,但作用域遵守: 我的地盘我做主原则! 例2: 全局变量 #include externintx,y; fun() {printf("%d,%d",x,y);} intx=1,y=2; voidmain() {printf("%d,%d",x,y);} 注: 全局变量作用域从定义变量位置开始到程序文件结束。 关键字extern对全局变量进行声明,可以扩大变量的作用域 2.根据存储方式分类: 静态变量(static)动态变量(auto、register) 注: auto变量,动态分配存储空间,存储局部变量。 register变量,寄存器空间,存储局部自动变量和形式参数 static变量,静态存储空间,初值不是随机的,数值类型初值为0,字符类型为空字符,在程序整个运行期间都不释放。 练习题: 34(13.9),33、34(13.3) 第二节编译预处理命令 编译预处理命令主要包含三种: 文件包含、宏定义和条件编译,每一条编译预处理命令单独占一行,均以“#”开头,末尾不加分号,其可以出现程序中任何位置。 一、文件包含 1.形式: #include"文件名" #include 2.功能: 将指定的文件内容引入当前命令行位置,取代该命令行 二、宏定义 1.形式: 无参宏#define标识符字符串 #definePI3.1415926 有参宏#define宏名(形参数)字符串 #defineS(r)PI*(r)*(r) 2.功能: 将程序中所有宏名用替换文本替换 例: #defineA3+2 #defineBA*A 求表达式“B/B”的值? 答案: 17 练习题: 26、37(13.9);37(13.3); 第三节数组 一、一维数组 1.数组含义: 若干有序排列的相同类型数据元素的集合称为数组。 2.一维数组定义: 类型说明符数组名[常量表达式]; 例: inta[10],b[20];floatc[10];charch[20]; 3.数组元素 含义: 数组的基本单元表示形式: 数组名[下标] 注: (1)所有的数组元素类型必须是相同的 (2)数组名不能与其他变量名相同 (3)数组元素“下标”只能为整型常量或整型表达式,例a[5],a[i],a[i+j]编号从0开始 (4)数组定义时,元素个数可以是符号常量和常量表达式,不可以是变量 4.数组初始化: 含义: 在数组定义时给数组元素赋予初值 形式: 类型说明符数组名[常量表达式]={值,值,……}; 例: inta[5]={0,1,2,3,4}; 注: (1)初始化时可以只给部分元素赋初值,其余元素自动赋值0 例: inta[5]={0,1}; 未初始化或采用赋值语句赋值,其他数组元素为不确定值。 例: inta[5];a[0]=1;a[1],a[2]值不确定 (2)只能给元素逐个赋值,不能给数组整体赋值 例: inta[5]={1,1,1,1,1}; (3)如果给全部元素赋值,可以不给出元素个数 例: inta[]={1,2,3,4,5}; 5.数组的使用: 例inta[5]={0,1,2,3,4}; for(inti=0;i<5;i++) printf(“数组a的第%d个元素的值为%d”,i+1,a[i]); 二、二维数组 1.定义: 类型说明符数组名[常量表达式1][常量表达式2] 例inta[7][8]; 2.数组元素: 数组名[下标(行)][下标(列)]例a[3][4] 3.初始化: 按行分段赋值例inta[2][2]={{12,21},{32,25}}; 按行连续赋值例inta[2][2]={12,21,32,25}; 注: 可以只对部分元素赋初值,未赋值元素自动取值为0. 例: inta[3][3]={{1},{2},{3}}; 如果对全部元素赋初值,则第一维的长度可以不给出。 例: inta[][3]={1,2,3,4,5,6,7,8,9}; 练习题: 26(13.3) 4.元素存储: 按行排列依次连续存储。 例1: 若二维数组a有m列,则元素a[i][j]在数组中的位置是______。 (设a[0][0]位于数组的第一个位置上)答案: m*i+j+1 例2: 若二维数组a有m列,则在a[i][j]前的元素个数为。 A.j*m+iB.i*m+j+1C.i*m+j-ID.i*m+j答案: D 5.数组的使用: 例intinta[2][2]={{12,21},{32,25}} for(inti=0;i<2;i++) for(intj=0;j<2;j++) printf(“%d行,%d列元素的值为%d\n”,i,j,a[i][j]); 6.数组排序(扩展) 方法一: 选择排序法 算法: 从第一个数字开始依次与其后的数字比较,将最小/最大的数字交
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 讲义 计算机 培训
![提示](https://static.bdocx.com/images/bang_tan.gif)