1、C语言的基本知识语言的基本知识辅助训练辅助训练C语言提要语言提要o C语言的语法语言的语法o C语言的基本运算及语言的基本运算及流程控制语句流程控制语句o 控制系统中常用的控制系统中常用的C语言函数语言函数o TC2.0 环境的使用环境的使用o C程序的编写要求程序的编写要求C语言的语法语言的语法-C语言的特点语言的特点o 程序以函数为单元,并且有且仅有一个主函程序以函数为单元,并且有且仅有一个主函数数 main();o 变量的声明和定义必须在函数头部;变量的声明和定义必须在函数头部;o 语句必须以语句必须以“;”结束;结束;o 注释:注释:/*/o C语言允许直接访问物理地址;可以直接对语言
2、允许直接访问物理地址;可以直接对硬件进行操作;能进行位(硬件进行操作;能进行位(bit)操作)操作C语言的语法语言的语法-C语言的数据类型语言的数据类型o 整型:整型:int、short、long(数据在内存中以(数据在内存中以2 2进制形式存放)进制形式存放)o 字符型:字符型:charo 浮点型:浮点型:float、doubleo 指针:指针:char*、int*、float*o 一维整形数组一维整形数组:int a10;数组是有序数据的集合,数组中的每数组是有序数据的集合,数组中的每一个元素都属于同一个数据类型一个元素都属于同一个数据类型o 结构体结构体:structo 公用体:公用体:
3、uniono 无符号数无符号数:unsigned(unsigned int;unsigned char)C语言的基本运算语言的基本运算算术运算算术运算运算符名称例子运算功能加a+b求a与b的和减a-b求a与b的差*乘a*b求a与b的积/除a/b求a除以b的商%取余a%b求a除以b的余数+自增a+a的值加1-自减a-a的值减1-取负-a求a的负数C语言的基本运算语言的基本运算算术赋值运算算术赋值运算运算符名称例子等效于加赋值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注意:5/2=2;5/2.0=2.5C语言的基本运算
4、语言的基本运算位运算位运算运算符名称例子运算功能&位与a&ba和b按位与|位或a|ba和b位或位反 aa按位取反右移位a 2a右移2位左移位a4 0 x05位运算的应用举例位运算的应用举例o 方法方法1:先右移:先右移n位,再与位,再与“0 x01”进行与运算bit=(byten)&0 x01;o 方法方法2:使用屏蔽字:使用屏蔽字unsigned char MASK8=0 x01,0 x02,0 x04,0 x08,0 x10,0 x20,0 x40,0 x80;bit=byte&MASKn;0 0 0 0 1 1 1 01思考:如何从一个字节思考:如何从一个字节bytebyte中取出第中取
5、出第n n位?位?C语言的基本运算语言的基本运算关系运算关系运算运算符名称例子运算功能大于aba大于b小于a=大于等于a=ba大于等于b=小于等于a=ba小于等于b!=不等于a!=ba不等于bC语言的基本运算语言的基本运算逻辑运算逻辑运算运算符名称例子运算功能&逻辑与a&ba与b逻辑或a ba或b!逻辑反!aa反C语言的流程控制语句(语言的流程控制语句(1)o if(表达式表达式)语句语句1else 语句语句2o while(表达式表达式)语句语句o do 语句语句 while(表达式表达式);o for(i=0;iN;i+)语句语句C语言的流程控制语句语言的流程控制语句o 选择语句选择语句n
6、if(表达式表达式)语句语句1 else 语句语句2C语言的流程控制语句语言的流程控制语句o循环语句循环语句n while(表达式表达式)循环体语句循环体语句n do 语句语句 循环体语句循环体语句 while(表达式表达式);C语言的流程控制语句语言的流程控制语句(续续)for(i=0;iN;i+)循环体语句循环体语句C语言的流程控制语句(语言的流程控制语句(2)switch(表达式)表达式)case 常量表达式常量表达式1:语句语句1;break;case 常量表达式常量表达式2:语句语句2;break;case 常量表达式常量表达式n:语句语句n;break;default:语句语句n+
7、1;多分支选择语句:当表达式的值与某一个case后面的常量表达式的值相等时就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行defaut后面的语句辅助控制语句o Break语句 多分支选择语句 switch语句,在执行一个case分支后,使流程跳出switch结构,即终止switch语句的执行。可以用一个break语句来达到此目的。实际上break语句用来从循环体内跳出循环体,即提前结束循环接着执行循环下面的语句。o break语句的一般形式为:Break;o Break语句不能用于循环语句和switch语句之外的任何其它语句中。辅助控制语句o Co
8、ntinue语句 一般形式为:Continue;o 其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。o continue语句和Break语句的区别是:continue语句只结束本次循环,而不是终止整个循环的执行。而Break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。C语言的流程控制语句语言的流程控制语句o转移语句转移语句n break;n continue;int n;for(n=10;n100;n+)if(n%3!=0)continue;printf(“%5d”,n);n return;n goto表达式表达式NYYbreakcont
9、inueNNYYNbreak语句退出循环continue结束本次循环表达式1表达式2d:十进制整数5:输出字段的宽度辅助控制语句Goto语句:goto语句为无条件转向语句,它的一般形式为:goto 语句标号;语句标号用标识符表示它的定名规则与变量名相同(即由字母、数字及下划线组成,第一个字符必须为字母或下划线)。辅助控制语句o Return语句 return语句将被调用函数中的一个确定值带回主调函数中去。o 如果需要从被调用函数带回一个函数值(供主调函数使用),被调用函数中必须包含一个return语句o 如果不需用被调用函数带回函数值可以不要return语句。o 一个函数中可以有一个以上的re
10、turn语句执行到哪一个return语句,哪一个语句起作用。o return语句后面的括弧也可以不要。o标准输入输出:标准输入输出:scanf(“格式控制字符串格式控制字符串”,地址列表,地址列表);例:例:scanf(“%d”,&a);printf(“格式控制字符串格式控制字符串”,输出列表,输出列表);例:例:printf(“%d n”,a);I/O端口读写:端口读写:Inportb(BASEADDR+6);/*读读I/O端口端口*/Outportb(BASEADDR+13,0 x05);/*写端口写端口*/format按按10进制进制整形输出整形输出地址运算符地址运算符&+变量名变量名n
11、换行,将当前位换行,将当前位置移到下一行开头置移到下一行开头cmd 操作操作0 返回按键的键值,该值是2个字节的整型数,若没有键按下,则该函数一直等待,直到有键按下。当按下时,若返回值的低8位为非零,则表示为普通键,其值代表该键的ASCII码。若返回值的低8位表示为扩展的ASCII码,表示按下的是特殊功能键。1 此时,该函数则用来查询是否有键按下。若返回非0值,则表示有键按下,若为0,表示没键按下。2此时,该函数将返回一些控制键是否被按过,按过的状态由该函数返回的低8位的各位值来表示。bioskey(int cmd)它在Bios.h头文件中进行了说明,该函数实际上调用了BIOS的INT16H中
12、断,参数用来确定BIOSKEY()如何操作 键盘控制C语言中几个常用的函数语言中几个常用的函数(2)o 键盘输入:键盘输入:kbhit()/*检查当前按下的键*/bioskey(0)/*返回键盘输入并清空*/while(!kbhit()/*如果没有按下任意键继续*/o 延时:延时:delay(millisecond)/*延时若干毫秒*/Sleep(second)/*延时若干秒*/o File:管理文件和目录,装入或保存程序等;o Edit:进入Turbo C的编辑程序,输入和修改源程序;o Run:编译、连接和运行装入Turbo C环境的当前程序;o Compile:编译和连接装入Turbo
13、C环境的当前程序;o Project:管理多文件工程;o Options:设置编译程序和连接程序的各种选择项;o Debug:设置各种调试选择项;o Break/Watch:设置断点,在调试阶段以便监视所需要观察的变量。o Break/Watch:Watch指屏幕的监视窗口,位于屏幕的编辑窗口的下部,可以从这个监视窗口中看到你所指定的某些变量在程序执行过程中的变化。n Add Watch:允许键入变量名或表达式,在调试程序时,通过窗口监视该变量或表达式的变化情况;n Delete Watch:在监视窗口中删除变量或表达式;n Edit Watch:允许修改监视窗口中的变量或表达式。Turbo
14、C 2.0 环境的使用环境的使用o 菜单栏菜单栏:Alt+F F10o 几个常用的命令几个常用的命令n打开:打开:F3n保存:保存:F2n编译连接生成编译连接生成EXE:F9;n运行运行:Ctrl+F9(用AltF5切换到用户窗口切换到用户窗口)n调试:调试:l 单步:单步:F8 不可进入函数体,取消不可进入函数体,取消ctrl+F2l 单步单步:F7 可进入被调函数体可进入被调函数体l 断点断点:Ctrl+F8l 观察变量:观察变量:Ctrl+F7Turbo C 2.0 环境的使用环境的使用n 全屏全屏窗口窗口 模式切换模式切换:Alt+Entern ALT+X退出n Ctrl+break跳
15、出o 编辑程序编辑程序n 编写程序:打开记事本进行编辑,保存文件名编写程序:打开记事本进行编辑,保存文件名后缀为后缀为TXT,之后在,之后在TC中打开调试中打开调试o 编译时出现:Unable to open input file xxxxx,不能打开输入文件xxxxx(例cos.OBJ)解决办法:1、点右键 另存 2、设路径 3、或者点属性,取消只读文件 o 编译时出现:Unable to open input file xxxxx,不能打开输入文件xxxxx(例cos.OBJ)解决办法:激活菜单到options derectory E:turboc2.0include E:turboc2.
16、0lib E:turboc2.0 saveo 环境配置文件:环境配置文件:C语言程序的编写和要求语言程序的编写和要求o 需要解决的问题是什么?抓住主要问题o 把自然语言描述转换为计算机语言描述:伪代码o 如何解决?理清思路,画出流程图o 记事本上先编写代码,在TC环境中调试o 模块化编程:主函数中的语句尽量清晰明了,多用子函数来完成功能模块。程序编写提示程序编写提示o 使用帮助:F1 或Ctrl+F1n根据函数说明快速使用o 提高程序可读性:n程序模块化n简洁、明了、易读n缩进编写n多写注释o 程序调试:单步执行,加watch,观察变量。例例1omain()oo.ofor(k=0;k.)oof
17、or(j=0;j.)oo.ooo例例2omain()oo o for(k=1,)o o for(j=1;)o o .o o o o复合语句配对的括弧要对齐o 全局变量与局部变量(作用域)int x;/*x就是一个全局变量*/main()int y;/*y就是一个局部变量*/o 尽量少用全局变量,因为系统为其分配固定的永久存储空间;而系统为局部变量分配动态存储空间。o Int I /*全局变量全局变量*/o main()o o int DI_in6,DO_out6,i;/*局部变量局部变量*/o DataInput(参数)o ReadPort(参数)o WritePort(参数)o Contro
18、l(参数)o DataOutput(参数)o 程序规范程序规范(例例)/*屏幕输入模块屏幕输入模块*/*I/O端口输入模块端口输入模块*/*I/O端口输出模块端口输出模块*/*控制模块控制模块*/*屏幕输出模块屏幕输出模块*/训练内容训练内容o 完成下列位操作程序代码:完成下列位操作程序代码:字节字节byte位位bits8n 把一个字节把一个字节byte分离成分离成8位,存于数组位,存于数组bits8:void bytetobits(unsigned int byte,unsigned int*bits)n 把存于数组把存于数组bits8中的中的8位合成一个字节位合成一个字节byte:unsigned int bitstobyte(unsigned int*bits)实现方法实现方法o void bytetobits(unsigned int byte,unsigned int*bits)int i;for(i=0;ii)&0 x01;把一个字节把一个字节byte分离成分离成8位,存于数组位,存于数组bits81.1.变量:变量:2.2.子函数:子函数:3.3.调试方法:调试方法:4.4.程序注释程序注释