华中科技大学信息学院C语言程序设计第1、2章回顾C程序结构:C程序由main函数和若干个其他子函数(标准函数和自定义函数等)构成。函数包括函数头和函数体,C程序语句以分号作为结束标志。语法单位(单词):关键字、标识符、分隔符、常量、变量、运算符。数据类型的规定以及表达式运算规则。输入输出函数getchar,putchar,scanf,printf的使用。华中科技大学信息学院C语言程序设计第3章程序和流程控制•3.1C语言程序的版式及语句•3.2结构化程序设计和流程控制•3.3if语句•3.4switch多分支选择语句•3.5循环控制•3.6辅助控制语句•3.7典型程序编写方法举例•3.8小结C语言流程控制语句华中科技大学信息学院C语言程序设计3.1C语言程序的版式及语句•3.1.1C语言程序的版式•3.1.2C语言的语句华中科技大学信息学院C语言程序设计例3.1/*求二整数之和的程序*/#includestdio.h//预处理voidmain()//函数定义{inta,b;//变量说明intsum;scanf(%d%d,&a,&b);//数据输入sum=a+b;//执行部分printf(sum=%d,sum);//信息输出}该程序的运行结果为:78//输入sum=153.1.1C语言程序的版式特征程序设计主要任务1.输入2.处理3.输出华中科技大学信息学院C语言程序设计编写C语言程序一般应包含如下几个部分(1)注释部分:格式为/*注释内容*/或//注释内容;在函数的最上端,一般都应有一段注释信息,主要说明函数的功能,输入、输出及其限制;如是商品软件还应包含版权信息,在程序的其他部分也可加注释。编程者要养成一边编程序、一边加注释的习惯。一般长段的注释用/*注释内容*/形式,短段的注释用//注释内容形式。(2)预处理块、全局变量说明等。(参见后面章节)(3)函数定义部分,包括函数类型,函数名及参数表,由于只有一个函数故取名main(),由于无返回值故类型为void,无参数输入时,main()内参数表为空。(4)变量说明部分,对所用的变量进行说明;(5)数据输入部分,对要使用的变量赋初值,可直接或间接输入,有些是在第(4)部分完成(即变量直接初始化);(6)执行部分,它是整个程序的核心,一般是对程序算法用结构化程序设计方法进行描述,然后将其转化成对应的C语言语句;(7)信息输出部分,根据要求输出所求的信息或返回结果;有些是在第(6)部分一边执行一边输出。华中科技大学信息学院C语言程序设计如上述程序的执行部分采用函数调用则上述程序应为例3.2/*求二整数之和的程序*/#includestdio.h//预处理intadd(intx,inty);//函数声明voidmain()//函数定义{inta,b;//变量说明intsum;scanf(%d%d,&a,&b);//数据输入sum=add(a,b);//执行部分printf(sum=%d,sum);//信息输出}/*求和函数,输入参数为二整数,返回值为其和*/intadd(intx,inty)//函数定义{intz;//变量说明z=x+y;//执行部分returnz;//返回结果}输入:78该程序的运行结果为:sum=15华中科技大学信息学院C语言程序设计语句是C语言程序的基本元素,语句以分号为结束标志。程序中的各函数模块都是由一定含义的语句组成的。例:charch=‘H’;/*分号为语句结束标志*/inty=7;c=a+b;printf(“hello!”);语句的分类:说明语句用来对程序中所使用的各种类型变量及属性进行说明,按其所起作用有时也称为定义语句。执行语句包括表达式语句、流程控制语句、函数调用语句等完成一定运算操作功能的语句。3.1.2C语言的语句华中科技大学信息学院C语言程序设计1.说明语句用来对程序中所使用的各种类型变量进行说明,也称为定义语句。说明语句的格式:存储类型数据类型变量名列表;例:inti,j;//说明了两个整型变量i和j说明语句同时也可以进行初始化赋值,如:charch=‘H’;unsignedlongy=0x35847412;执行语句中所使用的每一个变量都必须在此前说明过。华中科技大学信息学院C语言程序设计2.执行语句。一般包含四大类:表达式语句(包括空语句)复合语句流程控制语句辅助控制语句(1)表达式语句任何一个表达式加上一个分号就是一条表达式语句;//表达式语句,通常是赋值表达式或函数调用表达式。例:c=a+b;sum=add(a,b);//赋值语句printf(“hello!”);//函数调用语句;//空语句华中科技大学信息学院C语言程序设计(2)复合语句将若干语句用一对大括号{}括起来就构成了复合语句。复合语句的一般格式为:{说明语句;可执行语句;}复合语句在程序结构上是以整体出现,相当于程序块(BLOCK),当一个功能必须用多条语句才能完成时,就需要使用复合语句。采用{}可以清晰地表达程序的层次结构。华中科技大学信息学院C语言程序设计3.2结构化程序设计和流程控制•3.2.1结构化程序设计•3.2.2C语言的流程控制语句和辅助控制语句华中科技大学信息学院C语言程序设计3.2.1结构化程序设计结构化程序设计的基本思想,任何程序都可以用三种基本结构表示:•顺序结构•选择结构•循环结构。采用这三种基本结构编写程序的设计风格称为结构化程序设计。华中科技大学信息学院C语言程序设计AB图3.1顺序结构示意图顺序结构:按语句顺序依次执行。//通过语句书写顺序自然实现inta,b;//变量说明intsum;scanf(“%d%d”,&a,&b);//输入sum=a+b;//执行运算printf(“sum=%d”,sum);//输出华中科技大学信息学院C语言程序设计选择结构根据条件选择两支或多支程序中的一支执行。PAB真假图3.2选择结构示意图由两分支选择结构可以派生出另一种基本结构,多分支选择结构。//if,switch语句,选择运算符实现if(a=0){printf(comein!);}else{printf(goaway!);}华中科技大学信息学院C语言程序设计循环结构在判断条件成立的情况下,反复执行某个程序段。PAA真假P真假图3.3循环结构示意图//while,dowhile以及//for语句来实现while(i=100){sum=sum+i;i++;}华中科技大学信息学院C语言程序设计3.2.2C语言的流程控制语句和辅助控制语句流程控制语句选择循环ifelseswitchforwhiledowhile辅助控制语句breakcontinuegotoreturn华中科技大学信息学院C语言程序设计3.3条件选择语句:if语句if条件选择语句的三种形式①双路分支选择执行语句if…else…②单路分支选择执行语句if…③多路分支选择执行语句if…elseif…else...华中科技大学信息学院C语言程序设计1if语句的标准形式if…else…双路分支表达式真假语句一语句二{语句一;}{语句二;}if(表达式)else华中科技大学信息学院C语言程序设计例:if(a==b){mark++;printf(“youareright!);}else{printf(“youarewrong!);}注意:对于某分支包含多行语句时,必须采用{}括起来构成复合语句形式,初学者书写程序时尤其要注意此问题。例a:if(a==b)n++;printf(youareright!);elsemark--;printf(youarewrong!);易犯错误!①Sample-3-1.c华中科技大学信息学院C语言程序设计对于分支只有单行语句则可以不用{}.如:if(a=90&&a=100)printf(“GradeA!);elseprintf(“GradeB!);还可以写成:if(a=90&&a=100)printf(“A!);elseprintf(“b!);华中科技大学信息学院C语言程序设计表达式真假语句一{语句一;}if(表达式)2if单路分支形式(选择性执行语该分支)scanf(“%f”,&i);if(i60){printf(“不及格”);}printf(“%f”,i);华中科技大学信息学院C语言程序设计在C语言程序中,还常用如下书写形式:if(x)等价于if(x!=0)if(!x)等价于if(x==0)如变量x为float或double实型变量,则与0比较的if语句建议如下:if(fabs(x)=1e-6)华中科技大学信息学院C语言程序设计表达式1if表达式2表达式3表达式n语句1语句2语句3语句n假真假真假真......真假语句n+1...图3.7多路分支if语句if(表达式1)语句1;elseif(表达式2)语句2elseif(表达式n)语句nelse语句n+1华中科技大学信息学院C语言程序设计算法1:……;floati;//定义i表示学生成绩,chargrade;//grade表示等级。scanf(“%f”,&i);//输入学生成绩if(i=90)grade='A';elseif(i=70)grade='B';elseif(i=60)grade='C';elseif(i=0)grade='D';putchar(grade);//输出该生成绩等级也可用printf(“%c/n”,grade);90~100分A70~90分B60~70分C0~60分D例3.3给某班学生的一次考试成绩分等级.90分以上的为A,70分到90分之间的为B,60分到70分之间的为C,60分以下的得D。②Sample-3-3-1.c华中科技大学信息学院C语言程序设计算法2:……;floati;//定义i表示学生成绩,chargrade;//grade表示等级。scanf(“%f”,&i);//输入学生成绩if(i60)grade=‘D';elseif(i70)grade=‘C';elseif(i90)grade=‘B';elsegrade=‘A';putchar(grade);//输出该生成绩等级也可以用printf(“%c/n”,grade);0~60分D60~70分C70~90分B90~100分A例3.3给某班学生的一次考试成绩分等级.90分以上的为A,70分到90分之间的为B,60分到70分之间的为C,60分以下的得D。华中科技大学信息学院C语言程序设计例:小灵通服务语音提示内部程序处理流程:话费查询请按1,小灵通充值请按2,挂失请按3。……;printf(“话费查询请按1,小灵通充值请按2,挂失请按3”);scanf(“%d”,&i);if(i==1){...//话费查询处理}elseif(i==2){...//小灵通充值处理}elseif(i==3){...//挂失处理}else{...//输入错误提示及处理}多分支语句的应用:华中科技大学信息学院C语言程序设计小灵通充值服务内部处理流程printf(“话费查询请按1,小灵通充值请按2,挂失请按3”);scanf(“%d”,&i);if(i==2)//小灵通充值处理{printf(“为本机充值按1,为其他小灵通充值按2,回到上级指令”);scanf(“%d”,a);if(a==1){...//为本机充值操作}elseif(a==2){...//为其他小灵通充值操作处理}else{...//回到上一级指令}}...条件语句嵌套的应用:华中科技大学信息学院C语言程序设计VC6调试程序方法1.程序编写时静态测试;2.直接运行检查结果是否正确;3.单步调试功能F10;4.调试程序F5,退出调试状态shift+F5;5.设置断点(取消断点)F9;6.调试过程中,通过variable窗口查看变量值华中科技大学信息学院C语言程序设计3.3条件选择语句:if语句if条件选择语句的三种形式①双路分支选择执行语句if…else…②单路分支选择执行语句if…③多路分支选择执行语句if…elseif…else...华中