C常用语句讲解.pptx
会计学1C常用常用(chn yn)语句讲解语句讲解第一页,共25页。n nMain Main 函数函数格式:格式:void main()void main()特点:无返回值,无参。特点:无返回值,无参。任何任何(rnh)(rnh)一个一个C C程序有且仅有一个程序有且仅有一个mainmain函数,它是整个程序开始执行的入口。函数,它是整个程序开始执行的入口。例:例:void main()void main()总程序从这里开始执行总程序从这里开始执行;其他语句;其他语句;n n若有返回值就用若有返回值就用 int main int main;无返回值;无返回值 就用就用 void mainvoid main()实际上严格些应该为()实际上严格些应该为void void mainmain(voidvoid)。返回值就是在一个函数运)。返回值就是在一个函数运行完后是不是有东西返回。如果一个函数行完后是不是有东西返回。如果一个函数只是完成一系列的动作,没有只是完成一系列的动作,没有return return 语句,语句,就说这个函数没有返回值。就说这个函数没有返回值。第1页/共25页第二页,共25页。13.1 说明说明(shumng)语句语句n n说明语句一般是用来定义声明变量,可以说明其的类型和初始值。一般形式为:说明语句一般是用来定义声明变量,可以说明其的类型和初始值。一般形式为:n n类型说明符类型说明符 变量名变量名(=(=初始值初始值););n n其中,类型说明符指定变量的类型,变量名即变量的标示符,如果在声明变量的时候进行赋值,则需要使用其中,类型说明符指定变量的类型,变量名即变量的标示符,如果在声明变量的时候进行赋值,则需要使用“=”“=”指定初始值。典指定初始值。典型的说明语句示例如下,其中分别进行了变量声明以及型的说明语句示例如下,其中分别进行了变量声明以及(y(y j)j)初始化赋值。初始化赋值。n nint a=1;int a=1;/声明并初始化整型变量声明并初始化整型变量n nfloat c;float c;/声明浮点型变量声明浮点型变量n nchar p6=first;char p6=first;/声明并初始化字符数组声明并初始化字符数组n nsfr P1=0 x80;sfr P1=0 x80;/声明并初始化寄存器声明并初始化寄存器n nbit third;bit third;/声明位变量声明位变量第2页/共25页第三页,共25页。13.2 表达式语句表达式语句(yj)n n表达式语句是用来描述算术运算、逻辑运算或使单片机产生特定的操作。表达式语句是表达式语句是用来描述算术运算、逻辑运算或使单片机产生特定的操作。表达式语句是C51C51语言中最基本的一种语语言中最基本的一种语句。句。n n示例如下:示例如下:n nb=b*20;b=b*20;n nCount+;Count+;n nX=A;Y=B;X=A;Y=B;n nP=(a+b)/a-1;P=(a+b)/a-1;n n以上的都是合法的表达式语句。一般来说,任何表达式在末尾加上分号以上的都是合法的表达式语句。一般来说,任何表达式在末尾加上分号“;”“;”,便可以,便可以(ky(ky)构成语句。示例如下:构成语句。示例如下:n na=a+8a=a+8/赋值表达式赋值表达式n na=a+8;a=a+8;/赋值语句赋值语句第3页/共25页第四页,共25页。13.3 复合复合(fh)语句语句n n复合语句是用花括号复合语句是用花括号“”“”将一组语句组合在一起而构成的语句。将一组语句组合在一起而构成的语句。C51C51语言中由单个表达式和末尾语言中由单个表达式和末尾的分号构成的语句是简单语句。在的分号构成的语句是简单语句。在C51C51语言中,复合语句是允许嵌套的,即就是在花括号语言中,复合语句是允许嵌套的,即就是在花括号“”“”中中的的“”“”也是复合语句。复合语句在程序运行时,也是复合语句。复合语句在程序运行时,“”“”中的各行单语句是依次顺序执行的。在中的各行单语句是依次顺序执行的。在C51C51语言中使用复合语句需要注意如下几点:语言中使用复合语句需要注意如下几点:n nC51C51语言中,复合语句在语法上等同于一条单语句。语言中,复合语句在语法上等同于一条单语句。n n复合语句中不但复合语句中不但(bdn)(bdn)可以由可执行语句组成,还可以用变量定义等语句组成。要注意的是在复可以由可执行语句组成,还可以用变量定义等语句组成。要注意的是在复合语句中所定义的变量,称为合语句中所定义的变量,称为“局部变量局部变量”,所谓局部变量就是指它的有效范围只在复合语句中。,所谓局部变量就是指它的有效范围只在复合语句中。n n对于一个函数而言,函数体就是一个复合语句,函数内定义的变量有效范围只在函数内部。对于一个函数而言,函数体就是一个复合语句,函数内定义的变量有效范围只在函数内部。第4页/共25页第五页,共25页。13.4 循环循环(xnhun)语句语句n n循环语句经常用于需要反复多次执行的操作(cozu)。C51语言中有3种基本的循环语句:while语句、do-while语句和for语句。这几个语句同样都是起到循环作用,但具体的作用和用法又不大一样。下面分别介绍。第5页/共25页第六页,共25页。13.4.1 while语句语句(yj)n nWhileWhile循环语句的一般使用形式为:循环语句的一般使用形式为:n nwhile(while(表达式表达式)n n语句语句;n n当其中的表达式值为真时,便执行语句,然后再次判断表达式的值,直到表达式的值为假时,才结束循环,并当其中的表达式值为真时,便执行语句,然后再次判断表达式的值,直到表达式的值为假时,才结束循环,并继续执行循环外的后续语句。继续执行循环外的后续语句。n nwhilewhile语句的特点语句的特点(tdi(tdi n)n)是先判断条件,后执行语句。是先判断条件,后执行语句。whilewhile语句的循环过程如图所示。语句的循环过程如图所示。第6页/共25页第七页,共25页。n nWhile While(表达式)(表达式)语句语句(y(y j)j)(内部也可为空)(内部也可为空)特点:先判断表达式,后执行语句特点:先判断表达式,后执行语句(y(y j)j)。原则:若表达式不是原则:若表达式不是0 0,即为真,即为真,那么执行语句那么执行语句(y(y j)j)。否则跳出。否则跳出while while 语句语句(y(y j)j)。第7页/共25页第八页,共25页。13.4.2 do-while语句语句(yj)n ndo-while语句的一般形式为:n ndon n语句;n nwhile(表达式);n ndo-while语句是先执行一次do后面的语句,然后(rnhu)再判断表达式是否为真,如果表达式为真,返回再次执行do后面的语句,直到表达式为假时,才结束循环,并继续执行循环外的后续语句。n ndo-while语句的特点是先执行语句,后判断条件。因此,do-while语句至少执行一次do后面的语句。同样,由多个语句构成语句体时,必须用“”括起来,表示成复合语句的形式。第8页/共25页第九页,共25页。13.4.3 for语句语句(yj)n nfor语句的一般形式为:n nfor(表达式1;表达式2;表达式3)n n语句;n n其中,表达式1为赋值语句,给循环变量进行初始化赋值;表达式2是一个关系逻辑表达式,作为判断循环条件的真假;表达式3定义循环变量每次循环后按什么方式变化。当由表达式1初始化循环变量后,则由表达式2和表达式3可以确定循环次数。n n求解完表达式1后,判断循环条件,即表达式2的真假,若条件为真,则执行下面(xi mian)的循环语句和表达式3,直到循环条件为假时,才结束循环,然后继续执行循环外的后续语句。第9页/共25页第十页,共25页。n nFor(For(表达式表达式1;1;表达式表达式2;2;表达式表达式3)3)语句(内部可为空)语句(内部可为空)执行执行(zhxng)(zhxng)过程:过程:1.1.求解一次表达式求解一次表达式1.1.2.2.求解表达式求解表达式2 2,若其值为真(非,若其值为真(非0 0 即为真)即为真),则执行,则执行(zhxng)for(zhxng)for中语句。然后执行中语句。然后执行(zhxng)(zhxng)第第3 3步。否则结束步。否则结束for for 语句,直接跳语句,直接跳出,不再执行出,不再执行(zhxng)(zhxng)第第3 3步。步。3.3.求解表达式求解表达式3.3.4.4.跳到第跳到第2 2步重复执行步重复执行(zhxng)(zhxng)。第10页/共25页第十一页,共25页。13.5 条件条件(tiojin)语句语句n n条件语句常用于需要根据某些条件来决定执行流向的程序中。其是由关键字if构成,即if条件语句。条件语句又被称为“分支语句”。C51语言提供(tgng)了3种形式的条件语句,下面分别进行介绍。第11页/共25页第十二页,共25页。13.5.1 单分支单分支(fnzh)结构结构nn单分支结构的条件语句只有一个语句分支或者语句块分支,其一般形式为:单分支结构的条件语句只有一个语句分支或者语句块分支,其一般形式为:nnif(if(表达式表达式)语句语句;nn其其中中(qzhng)(qzhng),当当if if条条件件语语句句表表达达式式的的结结果果为为真真时时,就就执执行行分分支支语语句句,执执行行完完后后,继继续续执执行行后后续续程程序序;当当表表达达式式为假时,就跳过分支语句,执行后续程序。为假时,就跳过分支语句,执行后续程序。nn使用使用if if语句的单分支结构程序,示例如下:语句的单分支结构程序,示例如下:nn#include#include/头文件头文件nn nnvoid main()void main()/主函数主函数nn nnint a,b;int a,b;/变量声明变量声明nna=1;a=1;/初始化初始化nnb=1;b=1;/初始化初始化nnif(a=b)a+;if(a=b)a+;/if/if语句的单分支结构语句的单分支结构nnprintf(a=%dn,a);printf(a=%dn,a);/输出结果输出结果nn 第12页/共25页第十三页,共25页。13.5.2 双分支双分支(fnzh)结构结构n n双分支结构的条件语句包含两个语句分支,由关键字if和else构成(guchng),其一般形式为:n nif(表达式)n n语句1;n nelsen n语句2;n n当表达式为真时,就执行语句1,执行完后,继续执行if语句后面的语句;当表达式为假时,就执行语句2,执行完后,继续执行if语句后面的语句。第13页/共25页第十四页,共25页。13.5.3 阶梯式阶梯式if-else-if结构结构(jigu)n n阶梯式if-else-if结构是一种多分支结构,其可以包含多个分支语句,其一般形式(xngsh)为:n nif(表达式1)语句1;n nelse if(表达式2)语句2;n nelse if(表达式3)语句3;n nelse if(表达式n)语句n;n nelse 语句n+1;n n这是由if-else语句组成的嵌套,可以实现多方向条件分支。该语句从上到下逐个对条件进行判断,一旦条件为真,就执行与其相关的分支语句,并跳过剩余的阶梯;如果没有一个条件为真,则执行最后一个else分支语句n+1。第14页/共25页第十五页,共25页。13.6 开关开关(kigun)语句语句n n开开关关语语句句主主要要用用于于在在程程序序中中实实现现多多个个语语句句分分支支(fnzh)(fnzh)处处理理。在在C51C51程程序序中中,开开关关语语句句以以关关键键字字switchswitch和和casecase来来标标识识。开关语句的一般形式如下:开关语句的一般形式如下:n nswitch(switch(表达式表达式)n n n ncase case 常量表达式常量表达式1:1:n n语句语句1;break;1;break;n ncase case 常量表达式常量表达式2:2:n n语句语句2;break;2;break;n ncase case 常量表达式常量表达式3:3:n n语句语句3;break;3;break;n ncase case 常量表达式常量表达式n:n:n n语句语句n;break;n;break;n ndefault:default:n n语句语句n+1;n+1;n n 第15页/共25页第十六页,共25页。13.7 跳转语句跳转语句(yj)n n跳转语句主要用于程序执行顺序的跳转和转移。在C51语言(yyn)中,跳转语句主要有三种:goto语句、break语句和continue语句。下面分别进行介绍。第16页/共25页第十七页,共25页。13.7.1 goto语句语句(yj)n ngotogoto语语句句是是一一个个无无条条件件的的转转向向语语句句,在在C51C51程程序序执执行行到到这这个个语语句句时时,程程序序指指针针就就会会无无条条件件地地跳跳转转到到gotogoto后后的的标标号号所所在在的的程程序序段段。gotogoto语句在很多高级语句在很多高级(goj)(goj)语言中都会有,其一般形式如下:语言中都会有,其一般形式如下:n ngoto goto 语句标号语句标号;n n其中的语句标号为一个带冒号的标识符。使用其中的语句标号为一个带冒号的标识符。使用gotogoto语句的程序示例如下:语句的程序示例如下:n n#include#include/头文件头文件n n n nvoid main()void main()/主函数主函数n n n nint i=0,total=0;int i=0,total=0;n nloop:loop:/语句标号语句标号n ntotal=total+i;total=total+i;/执行运算执行运算n ni+;i+;n nif(i=100)if(i=100)/如果满足条件则转向如果满足条件则转向looploop处处n ngoto loop;goto loop;n nprintf(1+2+100=%dn,total);printf(1+2+100=%dn,total);/输出结果输出结果n n 第17页/共25页第十八页,共25页。13.7.2 break语句语句(yj)n nbreak语句通常用在循环语句和开关语句中,用来跳出循环程序块。其使用的一般形式如下:n nbreak;n n在C51程序设计中,break语句主要用于如下两种情况。n n当break用于开关语句switch中时,可使程序跳出switch,而执行switch以后的语句。如果没有break语句,则switch语句将成为一个(y)死循环而无法退出。n n在do-while、for、while循环语句中时,break语句和if语句联在一起使用,可以实现满足条件时便跳出循环的操作。第18页/共25页第十九页,共25页。13.7.3 continue 语句语句(yj)n ncontinuecontinue语语句句的的是是用用来来跳跳过过循循环环体体中中剩剩余余的的语语句句而而强强行行执执行行下下一一次次循循环环。其其使使用用的的一一般般(ybn)(ybn)形式如下:形式如下:n ncontinue;continue;n n在在C51C51语语言言中中,continuecontinue语语句句只只用用在在forfor、whilewhile、do-whiledo-while等等循循环环体体中中,常常与与if if条条件件语语句句一一起使用,可以提前结束本次循环。使用起使用,可以提前结束本次循环。使用continuecontinue语句的程序示例如下:语句的程序示例如下:n n#include#include/头文件头文件n n n nvoid main()void main()/主函数主函数n n n nchar ch=s,S,r,R,t;char ch=s,S,r,R,t;/初始化字符数组初始化字符数组n nint i=-1;int i=-1;n nwhile(i4)while(i=A&chi=A&chi=Z)/如如果果是是大大写写字字符符则则退退出出本本次次循循环环,进进入入下次循环下次循环n ncontinue;continue;n nprintf(ch%d=%cn,i,chi);printf(ch%d=%cn,i,chi);/输出小写字符输出小写字符n n n n 第19页/共25页第二十页,共25页。13.8 函数调用语句函数调用语句(yj)nn函函数数调调用用语语句句用用于于调调用用系系统统函函数数或或者者用用户户自自定定义义函函数数。在在C51C51语语言言中中,函函数数调调用用语语句句比比较较简简单单,在在函函数数名名后后面面加加上上分分号号便便可可构构成成函函数数调调用用语语句句。这里需要注意的是函数调用格式的问题,这将在后面的章节详细介绍这里需要注意的是函数调用格式的问题,这将在后面的章节详细介绍(jisho)(jisho)。下面仅举一个例子加以说明:。下面仅举一个例子加以说明:nn#include#include/头文件头文件nnvoid myprint()void myprint()/定义函数定义函数nn nnprintf(hello world.n);printf(hello world.n);/输出字符串输出字符串nn nnint Add(int a)int Add(int a)/定义函数定义函数nn nnreturn a+1;return a+1;/返回值返回值nn nn nnvoid main()void main()/主函数主函数nn nnint i=2,j;int i=2,j;/初始化初始化nnmyprint();myprint();/调用函数语句调用函数语句nnj=Add(i);j=Add(i);/调用带有返回值的函数语句调用带有返回值的函数语句nnprintf(%d+1=%dn,i,j);printf(%d+1=%dn,i,j);/输出结果输出结果nn 第20页/共25页第二十一页,共25页。13.9 空语句空语句n n空空语语句句是是C51C51语语言言中中有有一一个个特特殊殊的的表表达达式式语语句句,其其仅仅由由一一个个分分号号“;”“;”组组成成。在在实实际际程程序序设设计计时时,有有时时为为了了语语法法(y(y f f)的的正正确确,要求有一个语句,但这个语句又没有实际的运行效果,那么这时就要有一个空语句。最典型的使用空语句的例子便是程序延时。要求有一个语句,但这个语句又没有实际的运行效果,那么这时就要有一个空语句。最典型的使用空语句的例子便是程序延时。n n在在C51C51程程序序中中,whilewhile、forfor构构成成的的循循环环语语句句后后面面加加一一个个分分号号,可可以以形形成成一一个个不不执执行行其其他他操操作作的的空空循循环环体体。常常用用来来编编写写等等待待事事件件发发生以及延时的程序。示例如下:生以及延时的程序。示例如下:n n#include#include/头文件头文件n n n nvoid main()void main()/主函数主函数n n n nprintf(First output);printf(First output);/输出字符串输出字符串n nfor(;a50000;a+);for(;a50000;a+);n nprintf(Delay some times and output);printf(Delay some times and output);/输出字符串输出字符串n n 第21页/共25页第二十二页,共25页。13.10 返回返回(fnhu)语句语句n n返回语句用于终止当前函数的执行,并强制返回到程序调用该函数的位置。在C51语言中,返回语句主要有以下两种形式:n nreturn 表达式;n n或者n nreturn;n n其中,对于带有返回值的函数,则使用第一种返回语句,表达式的值便是(bin sh)函数的返回值。如果函数没有返回值,则可以缺省表达式,而采用第二种返回语句。第22页/共25页第二十三页,共25页。13.11 C51的流程的流程(lichng)控制结控制结构构n n在在C51C51语言的程序设计中,为了控制好模块间的顺序关系,一般采用的是模块化程序结构,语言的程序设计中,为了控制好模块间的顺序关系,一般采用的是模块化程序结构,这时需要采用一定的流程控制结构。这时需要采用一定的流程控制结构。C51C51程序支持多种流程控制结构,比较常见程序支持多种流程控制结构,比较常见(chn(chn jin)jin)的的是顺序结构、分支结构和循环结构等三种。是顺序结构、分支结构和循环结构等三种。n n顺序结构的程序按代码的顺序自上而下执行,没有代码的跳跃。这种结构比较简单,常用于顺序结构的程序按代码的顺序自上而下执行,没有代码的跳跃。这种结构比较简单,常用于实现不是很复杂的任务。实现不是很复杂的任务。n n选择结构的程序通过判断表达式的值来决定执行哪一段程序,一般采用条件语句选择结构的程序通过判断表达式的值来决定执行哪一段程序,一般采用条件语句if if、开关语句、开关语句switchswitch等来构成。这种结构常用于判断、决策等代码中。等来构成。这种结构常用于判断、决策等代码中。n n循环结构的程序循环重复执行同一段代码,一般由循环结构的程序循环重复执行同一段代码,一般由whilewhile、do-whiledo-while、forfor以及以及gotogoto等构成。这种等构成。这种结构常用于需要多次执行某项任务处理的场合,可以简化代码。结构常用于需要多次执行某项任务处理的场合,可以简化代码。第23页/共25页第二十四页,共25页。13.12 小结小结(xioji)n n本章详细讲述了单片机C51语言中的各种语句结构,包括说明语句、表达式语句、复合语句、循环语句、条件语句、开关语句、跳转语句、函数调用语句、空语句和返回语句。这些语句是C51程序的重要组成部分。灵活利用这些语句,可以实现不同的程序流程控制结构:顺序结构、选择结构和循环结构等,以达到简化程序的目的。熟练掌握本章内容(nirng)是进行C51程序设计的基础。第24页/共25页第二十五页,共25页。