第三章语句及控制结构 本章的主要内容包括: ◆C语言中的语句 ◆C语言中的控制结构 ◆结构化程序设计方法 回首页
本章的主要内容包括: C语言中的语句 C语言中的控制结构 结构化程序设计方法 第三章 语句及控制结构 回首页
3.1语句 语句是C语言中描述计算过程的最基本单位。由分号‘;’结束 语法:语句在形式上的严格要求 ●语义:每个形式上合法的语句都表示了一种含义,表示了程序执 行时要求进行的一个动作 C语句分类: (1)控制语句,完成选择、循环、转移等功能,共9种。 (2)函数调用语句,由一次函数调用加一个分号构成一个语句。 如:pint(helo”) (3)表达式语句,由一个表达式加一个分号构成一个语句 如:a=3;++x;表达式能构成语句是C语言的一个重要特色。任何 表达式都可以加上分号而成为语句。C语言也被叫作“表达式语言”。 (4)空语句,只有一个‘;’号的语句。 (5)复合语句,将语句用{}组合起来的结构,用于执行一系列语句,与 顺序结构对应。 语句的书写和注释
语句是C语言中描述计算过程的最基本单位。由分号‘ ; ’结束。 语法:语句在形式上的严格要求 语义:每个形式上合法的语句都表示了一种含义,表示了程序执 行时要求进行的一个动作。 C语句分类: (1)控制语句,完成选择、循环、转移等功能,共9种。 (2)函数调用语句,由一次函数调用加一个分号构成一个语句。 如:printf(“hello”); (3)表达式语句, 由一个表达式加一个分号构成一个语句。 如:a=3;++x;表达式能构成语句是C语言的一个重要特色。任何 表达式都可以加上分号而成为语句。C语言也被叫作“表达式语言”。 (4)空语句, 只有一个‘ ; ’号的语句。 (5)复合语句,将语句用{}组合起来的结构,用于执行一系列语句,与 顺序结构对应。 语句的书写和注释 3.1 语句
3.2顺序结构 ◆顺序结构:按语句在程序中出现的顺序逐条执行,由这样的语句构成的 程序结构是顺序结构。 3.2.1赋值语句和复合赋值语句 ●3.2.2数据输入输出 3.2.2.1字符输入函数 getchar getchar(函数从标准输入读入一个字符,没有参数,返回读入字符的 ASCI码值(整数),遇文件结束标志返回EOF(EOF是C系统定义的 常数,表示文件结束符,在标准输入上输入文件结束标志方法:CTRL 3.2.2.2字符输出函数 putchar putchar(intc)函数向标准输出写一个字符,输出控制字符时,会变成 相应的设备动作
顺序结构:按语句在程序中出现的顺序逐条执行,由这样的语句构成的 程序结构是顺序结构。 3.2.1 赋值语句和复合赋值语句 3.2.2 数据输入输出 3.2.2.1 字符输入函数getchar getchar()函数从标准输入读入一个字符,没有参数,返回读入字符的 ASCII码值(整数),遇文件结束标志返回EOF(EOF 是C系统定义的 常数,表示文件结束符,在标准输入上输入文件结束标志方法:CTRLZ)。 3.2.2.2 字符输出函数putchar putchar(int c)函数向标准输出写一个字符,输出控制字符时,会变成 相应的设备动作。 3.2 顺序结构
3.2顺序结构 3.2.2.3格式输出函数 printf printf函数在标准输出设备上按指定格式进行输出 11. printf函数的一般调用形式 printf(格式描述串,〈参数表》 格式描述串的作用: (1)为参数表中的输出项提供格式说明:由符号“%”和格式描述 符组成。如系统规定用d作为int类型的格式描述符。 (2)提供需要原样输出的文字或字符: 如 printf(sum=%d\n?,sum);中“sum-”是希望原样输出的字符, “%d的位置上输出变量sum的值,最后的“\n使输出换行。 格式转换说明的个数与参数表的输出项个数应该相同,且格式描 述符要与对应输出项的类型匹配。否则输出的结果无法预料, 甚至可能会引起严重的运行错误。 printf函数的返回值,是本次调用中输出字符的个数
3.2.2.3 格式输出函数printf printf()函数在标准输出设备上按指定格式进行输出 1 1. printf函数的一般调用形式 printf(格式描述串,) 格式描述串的作用: (1)为参数表中的输出项提供格式说明:由符号“%”和格式描述 符组成。如系统规定用d作为int类型的格式描述符。 (2)提供需要原样输出的文字或字符: 如printf(“sum=%d\n”,sum);中“sum=”是希望原样输出的字符, “%d”的位置上输出变量sum的值,最后的“\n”使输出换行。 格式转换说明的个数与参数表的输出项个数应该相同,且格式描 述符要与对应输出项的类型匹配。否则输出的结果无法预料, 甚至可能会引起严重的运行错误。 printf函数的返回值,是本次调用中输出字符的个数。 3.2 顺序结构
3.2顺序结构 3.2.2.3格式输出函数 printf printf(函数在标准输出设备上按指定格式进行输出 2. printf函数中常用的格式说明 每个格式说明都必须用“%开头,以一个格式字符作结束 格式字符 说 输出一个字符 d或i 输出带符号的十进制整型数 以八进制无符号形式输出整型数(不带前导0) x或X 以十六制无符号形式输出整型数(不带前导0x或0X)。对x用 labc def输出;对x用 ABCDER输出 uf 按无符号的十进制形式输出整型数 以带小数点的形式输出单精度和双精度数 e或E 以指数形式输出实数,隐含精度为6,对E用输出大写形式 g或G 由系统决定使用f或e格式,以使输出宽度最小 输出字符串,直到遇到“0,或输出由精度指定的字符数 sp% 输出变量的内存地址 输出一个%字符
3.2.2.3 格式输出函数printf printf()函数在标准输出设备上按指定格式进行输出 2. printf函数中常用的格式说明 每个格式说明都必须用“%”开头,以一个格式字符作结束。 3.2 顺序结构 格式字符 说 明 c 输出一个字符 d或i 输出带符号的十进制整型数 o 以八进制无符号形式输出整型数(不带前导0) x或X 以十六制无符号形式输出整型数(不带前导0x或0X)。对x用abcdef输出;对X用 ABCDEF输出。 u 按无符号的十进制形式输出整型数 f 以带小数点的形式输出单精度和双精度数 e或E 以指数形式输出实数,隐含精度为6,对E用输出大写形式 g或G 由系统决定使用f或e格式,以使输出宽度最小 s 输出字符串,直到遇到“\0”,或输出由精度指定的字符数 p 输出变量的内存地址 % 输出一个%字符
3.2顺序结构 3.2.2数据输入输出 3.2.2.4格式输入函数 scanf 1. scanf函数的一般调用形式 scanf(格式描述串,) 格式描述串是用双引号括起来的字符串,由“%”符号和格式描述 符组成。作用是指定输入时的数据格式。参数表中各输入项用 逗号隔开,各输入项只能是合法的地址表达式。格式描述串描 述了程序所要求的转换方式,它控制着函数 scanf由标准输入 读入的过程。 scanf函数返回成功完成输入转换的输入项数。 2. scanf函数常用格式说明 每个格式说明都必须用“%3开头,以一个格式字符作结束 3. scanf函数的工作过程 4. scant函数实例
3.2.2 数据输入输出 3.2.2.4 格式输入函数scanf 1. scanf函数的一般调用形式 scanf (格式描述串,) 格式描述串是用双引号括起来的字符串,由“%”符号和格式描述 符组成。作用是指定输入时的数据格式。参数表中各输入项用 逗号隔开,各输入项只能是合法的地址表达式。格式描述串描 述了程序所要求的转换方式,它控制着函数scanf由标准输入 读入的过程。scanf函数返回成功完成输入转换的输入项数。 2. scanf函数常用格式说明 每个格式说明都必须用“%”开头,以一个格式字符作结束。 3.scanf函数的工作过程 4. scanf函数实例 3.2 顺序结构
3.2顺序结构 323复合语句和空语句 3.2.3.1复合语句 复合语句也称“语句块”,形式如下: 语句1;语句2;,语句n; 最后一个语句的分号“;”不能缺少,复合语句内,不仅可以有 执行语句,还可以有定义部分,定义部分应该出现在可执行语 句的前面。C编译将整个括起来的结构视作一条语句。 C语言中复合语句经常用来表示一些控制结构的执行体。如循环结 构的循环体、选择结构某一条件的执行部分、函数的执行体等 等 3.2.3.1空语句 只有一个分号的语句叫“空语句”。空语句执行时不产生任何 动作,程序中有时需要用空语句来表示存在一条语句。但随意 加分号也会导致逻辑上的错误,要特别小心
3.2.3 复合语句和空语句 3.2.3.1 复合语句 复合语句也称“语句块” ,形式如下: { 语句1;语句2;...,语句n; } 最后一个语句的分号“ ; ”不能缺少,复合语句内,不仅可以有 执行语句,还可以有定义部分,定义部分应该出现在可执行语 句的前面。C编译将整个{}括起来的结构视作一条语句。 C语言中复合语句经常用来表示一些控制结构的执行体。如循环结 构的循环体、选择结构某一条件的执行部分、函数的执行体等 等。 3.2.3.1 空语句 只有一个分号的语句叫“空语句”。空语句执行时不产生任何 动作,程序中有时需要用空语句来表示存在一条语句。但随意 加分号也会导致逻辑上的错误,要特别小心。 3.2 顺序结构
3.3选择结构 3.3.1关系运算和逻辑运算 3.3.1.1C语言中的逻辑值 C语言中规定 (1)用0、1表示逻辑假和真值;C语言没有专门的逻辑值,而是用1 来表示“真”,用0表示“假”。 (2)任何基本类型的值都可作为逻辑值使用。所有非0的值被当作“真” 使用,而0值被当作“假”使用。 3.3.1.2关系运算符和关系表达式 1.关系运算符 C语言的关系运算符共6种: (大于) ②>=(大于等于) (小于) ④<=(小于等于) (等于) ⑥!=(不等于) 优先级:前四种优先级高于后两种 结合方法:从左向由结合
3.3.1 关系运算和逻辑运算 3.3.1.1 C语言中的逻辑值 C语言中规定: (1)用0、1 表示逻辑假和真值;C语言没有专门的逻辑值,而是用1 来表示“真” ,用0表示“假”。 (2)任何基本类型的值都可作为逻辑值使用。所有非0的值被当作“真” 使用,而0值被当作“假”使用。 3.3.1.2关系运算符和关系表达式 1. 关系运算符 C语言的关系运算符共6种: ① > (大于) ② >= (大于等于) ③ < (小于) ④ <= (小于等于) ⑤ == (等于) ⑥ != (不等于) 优先级: 前四种优先级高于后两种 结合方法:从左向由结合 3.3 选择结构
3.3.1关系运算和逻辑运算 3.3.1.1C语言中的逻辑值 3.3.1.2关系运算符和关系表达式 2.关系表达式 由关系运算符将两个表达式连接起来组成的表达式 关系表达式求值只有两种可能的结果 ①关系成立,关系表达式取值为1,代表“真” ②关系不成立,关系表达式取值为0,代表“假 关系表达式计算的注意事项 (1)进行关系运算的两个数据的类型不同,按照算术运算同样的 规则进行转换,再比较 (2)C语言中一般不使用连续关系运算符的描述方式。这样的表 达式其计算结果往往会出乎人们的预料。 (3)关系表达式中经常出现的一个错误是把“==”写成“=
3.3.1.1 C语言中的逻辑值 3.3.1.2关系运算符和关系表达式 2. 关系表达式 由关系运算符将两个表达式连接起来组成的表达式。 关系表达式求值只有两种可能的结果: ① 关系成立,关系表达式取值为1,代表“真” ; ② 关系不成立,关系表达式取值为0,代表“假” 关系表达式计算的注意事项: (1)进行关系运算的两个数据的类型不同,按照算术运算同样的 规则进行转换,再比较。 (2)C语言中一般不使用连续关系运算符的描述方式。这样的表 达式其计算结果往往会出乎人们的预料。 (3)关系表达式中经常出现的一个错误是把“==”写成“=”。 3.3.1 关系运算和逻辑运算
3.3.1关系运算和逻辑运算 3.3.1.3条件运算符和条件表达式? 条件运算符是C语言中唯一的三目运算符 表达式1?表达式2:表达式3 条件运算符的优先级高于赋值运算,低于关系和算术运算符 结合方式:从右向左 ●①关系成立,关系表达式取值为1,代表“真”; ②关系不成立,关系表达式取值为0,代表“假” ●条件表达式的计算:表达式1先被计算,如果表达式1的值为非0, (条件成立,逻辑为真)就计算表达式2的值并将计算结果 作为整个条件表达式的值;如果表达式1的值为0,(条件不 成立,逻辑为假)就计算表达式3的值并将计算结果作为整 个条件表达式的值; 有一部分表达式不参加求值运算
3.3.1.3 条件运算符和条件表达式 ?: 条件运算符是C语言中唯一的三目运算符 表达式1 ?表达式2 :表达式3 条件运算符的优先级高于赋值运算,低于关系和算术运算符 结合方式:从右向左 ① 关系成立,关系表达式取值为1,代表“真” ; ② 关系不成立,关系表达式取值为0,代表“假” 条件表达式的计算:表达式1先被计算,如果表达式1的值为非0, (条件成立,逻辑为真)就计算表达式2的值并将计算结果 作为整个条件表达式的值;如果表达式1的值为0,(条件不 成立,逻辑为假)就计算表达式3的值并将计算结果作为整 个条件表达式的值; 有一部分表达式不参加求值运算 3.3.1 关系运算和逻辑运算