1、第第3章章 顺序结构顺序结构3.1 表达式语句、函数调用语句和空语句 n1.C语言的语句共分五大类:表达式语句、控制语句、函数调用语句、空语句和复合语句。n2.表达式语句的一般形式为 表达式;最典型的表达式语句是由一个赋值表达式加一个分号构成的赋值语句。n3.控制语句是C语言程序设计中用来构成分支结构和循环结构的语句。此类语句有if语句,for语句,while语句,do-while语句,switch语句等。n4.函数调用语句的一般形式为 函数名(实参表);n5.空语句的一般形式为 ;这条语句的含义是什么也不做。凡是在C语句程序中出现语句的地方都可以用一个分号来代替一条语句。n6.复合语句的一般
2、形式为 语句1;语句2;复合语句在功能上相当于一条语句。3.2 数据的输入与输出,输入输出函数的调用 n 1.C语言本身没有提供输入、输出操作语句。C程序的输入和输出完全依靠调用C语言的标准输入、输出函数来完成。四个常用的输入、输出函数是:printf函数、scanf函数、putchar函数、getchar函数n2.printf函数是C语言提供的标准输出函数,它的作用是在终端设备(或系统隐含指定的输出设备)上按指定格式进行输出。Printf函数的一般调用形式如下:printf(格式控制,输出项表)如果在printf函数调用之后加上;,就构成了输出语句。格式控制参数以字符串的形式描述,由两部分组
3、成:普通字符:将被简单地显示;格式字符:将引起一个输出参数项的转换和显示,由“%”引出并以一个类型描述符结束的字符串,中间可加一些可选的附加说明项,如下表所示。附加说明项附加说明项 说 明 n0 用于指定是否填写0,有此项表示空位用0补充,无此项表示以空格补充 m.n 用于指定输出域宽及精度,m是指域宽,n为精度,当指定n时,隐含的精度为6位。nL或h 用于输出长度修正。其中,l对于整型是指long,对实型是double;h只用于整型的格式字符,并修正为short型格式字符用于指定输出项的数据类型及输入格式,如下表所示。n 注意:编译程序只是在检查了printf函数中的格式参数后,才能确定有几
4、个输出项,是什么类型、以什么格式输出。在编程序时,应使输出格式与输出项对应。格式字符格式字符 说 明nCcD 输出一个字符 nd或I 输出带符号的十进制整型数 nOoO 以八进制无符号形式输出整型数(不带前导0)nx或X 以十六进制无符号形式输出整型数(不带前导0 x或0X),对于x,用abcdef输出十六进制数码;对于X,用ABCDEF输出十六进制数码 nUuU 按无符号的八进制形式输出整型数 nFfF 以小数的形式输出单精度或双精度数,小数位由精度指定,隐含的精度为6;如指定精度为0,则小数部分(包含小数点)都不输出 ne或E 以指数形式输出单精度及双精度数,小数位数由精度指定,隐含的精度
5、为6;如指定精度为0,则小数部分(包含小数点)都不输出 ng或G 由系统决定是采用%f不是采用%e格式,以便使输出宽度最小 nSsS 输出字符串中的字符,直到遇到0时为止,或输出指定的字符数 nPpP 输出变量的内存地址 n%打印一个%3.scanf函数是C语言提供的标准输入函数,它的作用是在终端设备(或系统隐含指定的输入设备)上输入数据。Scanf函数的一般调用形式是:scanf(格式控制,输入项表)如果在scanf函数调用之后加上;,就构成了输入语句。格式控制是用双引号括起来的字符串,称为格式控制串。格式控制串的作用是指定输入时的数据转换格式,即格式转换说明。格式转换说明是由%符号开始,其
6、后是格式描述符。输入项表中的各输入项用逗号隔开,各输入项只能是合法的地址表达式,即在变量之前加一个地址符号&。在scanf函数中每个格式说明都必须用%开头,以一个格式字符结束。Scanf函数中的格式控制字符与printf函数中的相似,由格式说明项与输入格式符组成。格式说明项如下表所示。格式说明项格式说明项 说 明%起始符*赋值抑制符,用于按格式说明读入数据,但不送给任何变量 MmM 域宽说明 l或h 长度修正说明符 scanf中的格式字符如下表所示。格式说明项 说 明 CcC 输入一个字符 DdD 输入十进制整型数 IiI 输入整型数,整数可以是带前导0的八进制数,带前导0 x(或0X)的十六
7、进制数 OoO 以八进制形式输入整型数(可为带前导0,也可不带前导0)XxX 以十六进制形式输入整型数(可带前导0 x或0X,也可不带)UuU 无符号十进制整数 FfF 以带小数点形式或指数形式输入实型数 EeE 与f的作用相同 SsS 输入字符串 4.putchar函数的作用是把一个字符输出到标准输出设备(常指显示器或打印机)上。一般调用形式为 putchar(ch);其中ch代表一个字符变量或一个整型变量,ch也可以代表一个字符常量(包括转义字符常量)。5.getchar函数的作用是标准输入设备(通常指键盘)上读入一个字符。一般调用形式为 getchar();getchar函数本身没有参数
8、,其函数值就是从输入设备得到的字符。3.3 复合语句 在C语言中,一对花括号不仅可以用做函数体的开头和结尾标志,也可以用做复合语句的开头和结尾标志。复合语句的形式为:语句1;语句2;语句n;3.4 goto语句及语句标号的使用 goto语句称为无条件转向语句,一般形式为如下:goto语句标号;goto语句的作用是把程序执行转向语句标号所在的位置,这个语句标号必须与此goto语句同在一个函数内。语句标号在C语言中不必加以定义,这一点与变量的使用方法不同。标号可以是任意合法的标识符,当在标识符后面加一个冒号,该标识符就成了一个语句标号。第4章 选择结构4.1 用if语句实现选择结构 n1.在C语言
9、中,if语句有两种形式:形式1:if(表达式)语句 形式2:if(表达式)语句1 else 语句2n2.if语句执行时,首先计算紧跟在if后面一对圆括号中的表达式的值,如果表达式的值为非零(真),则执行if后的语句,然后去执行if语句后的下一个语句。如果表达式的值为零(假),直接执行if语句后的下一个语句。n3.if语句后面的表达式并不限于是关系表达式或逻辑表达式,而可以是任意表达式。If语句中可以再嵌套if语句。C语言规定,在嵌套的if语句中,else子句总是与前面最近的不带else的if相结合。4.2 用switch语句实现多分支选择结构 n 1.switch语句是用来处理多分支选择的一种
10、语句。它的一般形式如下:switch(表达式)case 常量表达式1:语句1;case 常量表达式2:语句2;:case 常量表达式n:语句n;default:语句n+1 n 2.switch语句的执行过程是:首先计算紧跟switch后面的一对圆括号中的表达式的值,当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句体并将流程转移到下一个case继续执行,直至switch语句的结束;若所有的case中的常量表达式的值都没有与表达式值匹配,又存在default,则执行default后面的语句,直至switch语句结束;如果不存在default,则跳过switch语句
11、体,什么也不做。4.3 选择结构的嵌套 if语句和switch语句都可以嵌套使用,特别要注意,对于构成嵌套的if语句,else子句总是和离它最近的、不带else的if子句相匹配,不能弄混;在一个switch语句中的case后面又嵌套了一个switch语句,在执行内嵌的switch语句后还要执行一条break语句才跳出外层的switch语句。第5章 循环结构5.1 for循环结构 n 1.for循环语句的一般表达式是:for(表达式1;表达式2;表达式3)语句n 2.C语言语法规定:循环体语句只能包含一条语句,若需多条语句,应使用复合语句。5.2 while和do while循环结构 n 1.w
12、hile语句用来实现当型循环结构,它的一般形式如下:while(表达式)语句 当表达式为非0值时执行while语句中内嵌的语句;当表达式的值为0时,直接跳过while语句后面的语句,执行下一条语句。n 2.while语句执行的特点是:先判断表达式,后执行语句。n 3.do while用来实现直到型循环结构,它的一般形式为:do语句 while(表达式);这个语句执行时,先执行一次指定的内嵌的语句,然后判别表达式,当表达式的值为非0时,返回重新执行该语句,如此反复,直到表达式的值为等于0为止,此时循环结束。n 4.do while语句执行的特点是:先执行语句,后判断表达式。5.3 continu
13、e语句和break语句 n 1.break语句有两个用途:在switch语句中用来使流程跳出switch结构,继续执行switch语句后面的语句;用在循环体内,迫使所在循环立即终止,即跳出所在循环体,继续执行循环体后面的第一条语句。n 2.continue语句结束本次循环,即跳过循环体中尚未执行的语句。在while和do while语句中,continue语句将使控制直接转向条件测试部分,从而决定是否继续转向循环。在for循环中,遇到continue语句后,首先计算for语句表达式3的值,然后再执行条件测试(表达式2),最后根据测试结果来决定是否继续转向for循环。5.4 循环的嵌套 n 1.一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。n 2.三种循环(while循环、do while循环和for循环)可以互相嵌套。The end!