




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机应用教程内容三C语言基础知识C语言是单片机程序开发的常用语言。和汇编语言相比具有可阅读性强,编写简单,易掌握等优点。单片机用的C语言采用ANSIC语言标准,同时在此基础上作了扩充。一C语言基本结构及特点1.C语言的发展过程2.当代最优秀的程序设计语言3.目前最流行的C语言MicrosoftC或称
MSCBorlandTurboC或称
TurboCAT&TC4.C语言的特点①
C语言简洁、紧凑,使用方便、灵活。②运算符丰富。共有34种。③数据结构类型丰富。④具有结构化的控制语句。⑤语法限制不太严格,程序设计自由度大。一C语言基本结构及特点4.C语言的特点⑥C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。⑦生成目标代码质量高,程序执行效率高。⑧与汇编语言相比,用C语言写的程序可移植性好。
5.简单的C程序介绍6.C源程序的结构特点①一个C语言源程序可以由一个或多个源文件组成。②每个源文件可由一个或多个函数组成。③一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。一C语言基本结构及特点6.C源程序的结构特点④源程序中可以有预处理命令(include命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。⑤每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。⑥标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。7.书写程序时应遵循的规则①一个说明或一个语句占一行。②用{}括起来的部分,通常表示了程序的某一层次结构。③低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。一C语言基本结构及特点8.C语言的字符集①字母
小写字母a~z共26个
大写字母A~Z共26个②数字
0~9共10个③空白符空格符、制表符、换行符等统称为空白符。④
标点和特殊字符9.C语言词汇①标识符在程序中使用的变量名、函数名、标号等统称为标识符。一C语言基本结构及特点9.C语言词汇①标识符
C规定,标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。以下标识符是合法的:
a,x,x3,BOOK_1,sum5以下标识符是非法的:
3s以数字开头
s*T出现非法字符*
-3x以减号开头bowy-1出现非法字符-(减号)一C语言基本结构及特点9.C语言词汇②关键字
关键字是由C语言规定的具有特定意义的字符串,通常也称为保留字用。C语言的关键字分为以下几类:类型说明类语句定义类预处理命令类③运算符④分隔符⑤常量⑥注释符二C语言数据及运算1.数据类型①C的数据类型二C语言数据及运算1.数据类型②基本类型的名字和长度下列关键字称为类型区分符:char、
int、
short、
long、
signed、unsigned、float、double2.常量和变量①常量的表示
C的常量有整数常量、浮点常量、字符常量、字符串常量和枚举常量。整数
整数有三种形式:十进制整数、八进制整数和十六进制整数。浮点数
单精度浮点数、双精度浮点数、高精度浮点数二C语言数据及运算字符常量
字符常数通常是指一对单引号(单撇号)括起来的一个字符,形式为:‘字符’字符串常量
字符串常数(简称字符串)是用一对双引号括起来的一个字符序列,其字符的个数称为字符串长度。形式为:“字符序列”符号常量
三种方法定义一个符号常量:一种是利用编译预处理的宏替换功能#define;另一种是用const类型限定符说明并初始化一个标识符;第三种方法是通过定义枚举类型来定义符号常量。二C语言数据及运算2.变量说明
C程序中任何变量必须遵循现说明后引用的原则,以便编译程序为变量分配适当长度的存储单元以及确定变量所允许的运算。变量说明的形式:类型区分符
变量表。给变量赋初值有两种方式:一是通过赋值语句置初值(如i=0;);另一个方式是在变量说明时给出初值称为初始化。格式为:
类型区分符
变量名=表达式,…;如:intage=15,index=1,i=0,j=0;二C语言数据及运算3.运算符与表达式
由运算符通过对运算对象(操作数)进行各种操作,按操作数的数目可将运算符分为:单目(一元),双目(二元)和三目(三元)运算符;按运算符的功能分类有:算术运算符、关系运算符、逻辑运算符、自增和自减运算符、位运算符、赋值运算符和条件运算符。另外还有数组的下标[]、函数调用()、表顺序求值的逗号运算符和类型强制运算符等。
表达式是由运算符、操作符数组成的符合C的语法算式。从本质上说,表达式是对运算规则的描述并按规则执行运算,运算的结果是一个值,称为表达式的值,其类型称为表达式的类型。二C语言数据及运算3.运算符与表达式①算术运算
算术运算符包括﹢、﹣、++、--、*、/、%②关系运算关系运算符包括
<(小于)
<=(小于等于)
>(大于)
>=
(大于等于)
==(等于)
!=(不等)③逻辑运算逻辑运算符包括:&&(与)
||(或)
!(非)④自增和自减运算自增和自减运算符包括:++(增1)--(减1)二C语言数据及运算3.运算符与表达式⑤位运算位运算符是指
~(求反)
&(按位与)
|
(按位或) ^(按位加、异或)
>>(右移)
<<(左移)⑥简单赋值
简单赋值运算符“=”⑦复合赋值复合赋值运算符包括+=-=*=/=%=&=|=^=<<=和>>=⑧条件运算条件运算符(?:)是一个三元运算符,一般形式为
操作数1?操作数2:操作数3三C语言基本语句1.语句综述
C语言提供的语句主要有说明语句和执行语句,其中执行语句包括空语句、表达式语句、控制语句、复合语句等,它们构成了程序的三种程序控制结构:顺序结构、选择结构和循环结构。2.顺序结构
C语言中的顺序结构主要由说明语句、表达式语句、空语句以及复合语句组成。在顺序结构程序中,各语句(或命令)是按照位置的先后次序顺序执行的,且每个语句都会被执行到。顺序结构流程图:三C语言基本语句main(){inta,b,t;scanf("%d%d",&a,&b);/*提供数据*/t=a;a=b;b=t;/*运算*/printf("%d%d",a,b);/*输出*/}顺序结构结构图三C语言基本语句3.选择结构①简单的if语句if(表达式)语句②if…..else语句if(表达式)
语句1else
语句2三C语言基本语句3.选择结构③系列if….else语句if(条件1)语句1elseif(条件2)语句2…..elseif(条件n)语句nelse语句n+1三C语言基本语句3.选择结构(程序示例)
输入任意一个整数,输出该整数的绝对值main(){intn;scanf(“%d”,&n);if(n>=0)printf(“%d”,n);elseprintf(“%d”,-n);}
三C语言基本语句3.选择结构(程序示例)
输入一个分数,输出其等级;90分以上,打印A;80~90分,打印B;70~80分,打印C;60~70分,打印D;60分以下,打印E。#include<stdio.h>Voidmain(void){inta;scanf(“%d”,&a);if(a>=90)printf(“ThescoreisA”);elseif(a>=80)printf(“ThescoreisB”);elseif(a>=70)printf(“ThescoreisC”);elseif(a>=60)printf(“ThescoreisD”);elseprintf(“ThescoreisE”);}
三C语言基本语句3.选择结构④switch语句(不带break语句)switch(表达式e){case常量表达式e1:语句1case常量表达式e2:语句2……..case常量表达式en:语句ndefault语句n+1}三C语言基本语句3.选择结构(switch程序示例)
输入字符,判断其百分成绩范围#include<stdio.h>Voidmain(void){chargrade;grade=getchar();switch(grade){case‘A’;printf(“90~100\n”):break;case‘B’;printf(“80~89\n”):break;case‘C’;printf(“70~79\n”):break;case‘D’;printf(“60~69\n”):break;case‘E’;printf(<60\n”):break;default}三C语言基本语句4.循环结构
循环结构要解决的问题是在某一条件下,要求程序重复执行某些语句或某一个模块,这里的“条件”实际上也是一个表达式,根据表达式的两个状态(非0或0)决定循环是否继续。这些被重复执行的语句或模块,称为循环体。为了使循环不至于变成无限循环(死循环),在执行循环体的过程中,一定要使循环条件表达式中的变量(循环控制变量)值有所变化。一个合理的循环结构,最终会使循环条件由一个状态变为另一个状态,使循环正常终止。循环条件所用的表达式,可以是算术表达式、关系表达式、逻辑表达式或最终能得到非0或0值的其他表达式。三C语言基本语句4.循环结构
在C语言中,主要有以下三种循环结构:while结构do-while结构for结构①while语句while(表达式)
语句
三C语言基本语句4.循环结构②do….while语句用do-while语句写成的循环结构也被称作为“直到型”循环。
do
语句while(表达式);
这种结构是先执行循环体,然后再判断表达式是否成立,若表达式成立,那么继续执行循环体,接着重新计算循环表达式中的值并判断真假,直到循环表达式的值为0(假)时终止循环。
三C语言基本语句4.循环结构③for语句
语法格式如下:for(表达式1;表达式2;表达式3)
语句表达式1:初始化表达式。通常用来设定循环变量的初始值或者循环体中任何变量的初始值,可用逗号作分隔符设置多个变量的值;表达式2:循环条件表达式;表达式3:增量表达式。
三C语言基本语句4.循环结构(程序示例)
编程实现依次输出26个大写字母#include<stdio.h>main(){charI;for(i=‘A’;i<=‘Z’;i++)printf(“%c”,i);printf(“\n”);}三C语言基本语句5.Break语句
break语句由关键字break后加分号“;”组成。前面章节介绍到switch多分支选择结构时,曾介绍过break语句,它用来跳出switch结构,使程序能够执行该结构下面的语句。在这里break语句被用在循环结构中作用是跳出它所在的循环体,提前结束循环,使程序的执行流程无条件的转移到循环结构的下一句继续执行。
注意:break语句只能用于switch结构和循环结构中。
三C语言基本语句5.Break语句(程序示例)
编写一个程序,求整数m是否是素数。#include<stdio.h>main(){intm,i;scanf(“%d”,&m);for(i=0;i<m;i++)while(m%i==0)break;if(i==m)printf(“%disaprimenumber.\n”,m);elseprintf(“%disnotaprimenumber.\n”,m);}三C语言基本语句6.continue语句
continue语句由continue后面加分号“;”构成,它的作用是结束本次循环,使程序回到循环条件,判断是否提前进入下一次循环。
需要注意break语句与continue语句之间的区别,continue语句只结束本次循环,而不是终止整个循环的执行。而break语句则是结束循环。
四C语言数组1.一维数组①一维数组定义
类型说明数组名[常量表达式]例如:floatsheep[10];ints2007[100];一维数组的定义说明:数组名的命名规则同与变量名相同,必须是合法的标识符。即第一个字符应为英文字母或下划线。用方括号将常量表达式括起来。常量表达式定义了数组元素的个数。即数组的长度。它只能是整型常量或符号常量。数组在定义之后,长度是不能改变的。
四C语言数组一维数组的定义说明:在数组定义时,常量表达式中不允许包含变量,但在操作语句(即数组元素的引用)中,数组常量表达式中允许包含变量。数组下标从0开始。各元素在内存中占据的地址空间是连续的。元素a[0]的地址是整个数组的首地址,紧接着是a[1]的地址,然后是a[2]的地址……依次排列。也可用数组名a表示数组的首地址,即a等价于&a[0];。
四C语言数组1.一维数组②一维数组的引用
数组不能整个引用,只能逐个引用数组元素,其一般格式为:
数组名[下标]
数组的下标可以是整型常量或整型表达式,固定从0开始,最大的下标是数组元素的长度减1。#include<stdio.h>voidmain(){intI,n;intnum[6];for(i=0;i<=5,i++)scanf(“%d”,&num[i]);for(n=5;n>=0;num[n]);printf(“%3d”,num[n]);}
四C语言数组1.一维数组③一维数组的初始化
数组元素的初始化就是对所有元素赋初值。人机交互赋值在数组定义的同时赋初值inta[6]={2,3,4,5,6,7}inta[]={2,3,4,5,6,7}在定义数组以后赋值inta[5];a[0]=2;a[1]=10;a[2]=5;a[3]=7;a[4]=12
四C语言数组2.二维数组①二维数组的定义
类型说明数组名[常量表达式1][常量表达式2]其中类型说明指出该二维数组各元素的数据类型;常量表达式1为行下标,常量表达式2为列下标。
例如:inta[3][4];floatb[5][10]
四C语言数组3.字符数组①字符数组的定义
类型说明数组名[常量表达式]如:chara[3]charb[3][4]②字符数组的初始化逐个字符给字符数组中的元素赋初值如:chara[3]={‘y’,’e’,’s’}用字符串常量为字符数组各元素赋初值如:chara[4]={“yes”}或chara[4]=“yes”
五C语言函数1.函数的概念C程序由一个main和任意个函数组成。函数不可嵌套定义,具有全局性、平行性,函数分为有参与无参函数。程序从main开始执行,最后又回到main函数结束。2.定义函数的一般形式无参函数
类型标识符函数名([void]){
声明部分
语句}
五C语言函数说明:形参全称为“形式参数”。形参表是用逗号分隔的一组变量说明(即定义),包括形参的类型和形参标识符,其作用是指出每一个形参的类型和形参的名称,当调用函数时,接受来自主调函数的数据,确定各参数的值
。
如:
intfunc(intx,inty)
{……}用{}括起来的部分是函数的主体,称为函数体。
五C语言函数有参数的函数
函数返回值类型函数名(形参表说明){
声明语句
执行语句}说明:函数的类型,是指函数返回值的类型。当不指明函数类型时,系统默认的是int型。函数名本身也有值,它代表了该函数的入口地址,使用指针调用该函数时,将用到此功能。
五C语言函数3.函数参数和函数的值①形式参数和实际参数形式参数:函数定义时由用户定义的形式上的变量。实际参数:函数调用时,主调函数为被调函数提供的原始数据。
按值传递参数——数值传递若实参和形参均为普通变量,则实参向形参传送数据的方式是"按值传递"。等价于:
数据类型形参变量名=实参变量名;形式参数是函数的局部变量,仅在函数内部才有意义,不能用它来传递函数的结果。
五C语言函数按值传递参数——数值传递
例如:调用函数的数据传递
#include<stdio.h>intmax(intx,inty)//x和y为形参,接受来自主调函数的原始数据{ intz; z=x>y?x:y; return(z);//将函数的结果返回主调函数
}main(){ inta,b,c; puts("pleaseentertwointegernumbers"); scanf("%d%d",&a,&b); c=max(a,b);//主函数内调用功能函数max,实参为a和b printf("max=%d\n",c); return0;}
五C语言函数按地址传递参数——地址传递
函数的参数可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。
#include<stdio.h>voidswapf(int*p1,int*p2);main(){inta,b;a=5;b=10;//说明两个变量并赋初值
printf(“beforeswapa=%db=%d\n”,a,b);swapf(&a,&b);printf(“afterswapfa=%db=%d\n”,a,b);return0;}voidswapf(int*p1,int*p2){inttemp;temp=*p1;*p1=*p2;*p2=temp;printf(“inswapf*p1=%d*p2=%d\n”,*p1,*p2);}
五C语言函数3.函数参数和函数的值②函数的返回值格式:return表达式
或return(表达式)#include<stdio.h>intfunc(intx)main(){inta,c;scanf(“%d”,&a);c=func(a);printf(“%d\n”,c);return0;}
Intfunc(intx){intz;if(x>=0)z=2*x*x*x-x;elsez=2*x*x;returnz;}
五C语言函数3.函数参数和函数的值说明:函数的返回值只能有一个。当函数中不需要指明返回值时,可以写成:return。若用void声明函数的返回类型,也可以不写。一个函数体内可以有多个返回语句,不论执行到哪一个,函数都结束,回到主调函数。当函数没有指明返回值,即return;或没有返回语句时,可以定义无类型函数,其形式为:
void函数名(形参表){}函数定义时的类型就是函数返回值的类型
六C语言指针1.什么是指针
指针是一种变量,具有变量的三要素:名字、类型和值。
指针是用来存放某个变量的地址值。
指针的类型是该指针所指向的变量的类型,而不是指针本身值的类型。如:inta=5,*P;P=&a;
六C语言指针1.什么是指针C语言中关于地址值得表示有如下规定:①一般变量的地址值用变量名前加运算符&表示。②数组的地址值可用数组名表示,数组名表示该数组的首元素的地址值。数值中某个元素的地址值用&运算符加上数组元素名。如:inta[10],*p1,*p2;p1=a;p2=&a[5]
六C语言指针2.指针的表示①指向int型变量的指针
如:int*p1,*p2②指向char型变量的指针
如:char*pc1,*pc2③指向float型变量的指针
如:float*pf1,*pf2double*pd1,*pd2④指向数组的指针
如:floatm[3][2],*p1[3],(*p2)[2]
六
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度解除劳动合同经济补偿及社会保险衔接协议
- 二零二五年度能源互联网合同管理制度及智能调度流程
- 二零二五年度铁路运输安全责任协议书
- 2025年度汽车维修店汽车美容装潢业务转让合同
- 2025年度美甲店转让合同含店铺装修升级及开业庆典策划
- 《睡谷的传说》THE LEGEND OF SLEEPY HOLLOW小说英文原版电子版
- 2025年杭州驾校考试货运从业资格证考试题库
- 2025年新余道路运输从业资格证考试内容是什么
- 感谢领导发言稿
- 2025年宣城道路运输从业人员资格考试内容有哪些
- GA/T 701-2024安全防范指纹识别应用出入口控制指纹识别模块通用规范
- 2025年阜新高等专科学校单招职业倾向性测试题库附答案
- 2025年包头轻工职业技术学院单招职业适应性测试题库及答案一套
- 《养老保险的理念》课件
- 2024-2025学年第二学期英语教研组工作计划
- 山东省海洋知识竞赛(初中组)考试题库500题(含答案)
- 服务行业人力资源薪酬体系管理与优化
- 马尼拉草皮施工方案
- 《蔚来发展》课件
- 人工智能融入土木水利硕士人才培养模式研究
- 2024年山东商务职业学院高职单招语文历年参考题库含答案解析
评论
0/150
提交评论