314)*5为8*5得40。 sizeof(3.14*5)为 sizeof(1570)其值为8(c语言中规定每个实型 常量当作双精度处理) 答案:B
21 3.14)*5 为 8*5 得 40。sizeof(3.14*5)为 sizeof(15.70)其值为 8(c 语言中规定每个实型 常量当作双精度处理)。 答案:B
第四章最简单的C程序设计 一一顺序程序设计 4.1重点、难点 1.C语言中的语句 C语言中的语句用来向计算机发出命令,一个语句经编译后产生若干条机器指令。 一个C源程序由若干函数构成,每个函数应包含若干条语句。在C语言中所有语句都 是“可执行语句”,没有非执行语句。 C语言中的语句分为简单句和复合句两大类,简单句由分号(:)结尾,表示一个 语句的终结,分号必不可少;复合句用一对花括号({})把一些语句括起来。注意:“} 后不必加“;”,但复合语句中最后一个语句中的“;”不能忽略不写,例如:{y=a+b; printf(“%d”,y);}。复合语句中的每一个语句可以是任意语句,当然包括复合语句 本身,复合语句在形式上是多个语句的组合,但在语法上只相当于一个简单语句,可出 现在任何简单语句可以出现的地方。 C语言中的语句按语句功能又可分为以下四类 (1)控制语句(共9种),完成一定的控制功能。 Dif(条件)语句else语句 (条件语句) ②for(表达式1;表达式2表达式3)循环体(循环语句) ③ while(条件)循环体 (循环语句) ④do循环体 while(条件) (循环语句) (结束本次循环语句) (中止执行 switch或循环语句) ⑦ switch (多分支选择语句) (转向语句) (从函数返回语句) (2)函数调用语句。由一次函数调用加一个分号(;)构成。例: printf(“ program”); (3)表达式语句。由一个表达式加一个分号(:)构成。例:area=3.1415926*rr; (4)空语句。只有一个分号(;)构成,它什么也不做。有时用来做循环体,表示 22
22 第四章最简单的 C 程序设计 ——顺序程序设计 4.1 重点、难点 1.C 语言中的语句 C 语言中的语句用来向计算机发出命令,一个语句经编译后产生若干条机器指令。 一个 C 源程序由若干函数构成,每个函数应包含若干条语句。在 C 语言中所有语句都 是“可执行语句”,没有非执行语句。 C 语言中的语句分为简单句和复合句两大类,简单句由分号(;)结尾,表示一个 语句的终结,分号必不可少;复合句用一对花括号({ })把一些语句括起来。注意:“}” 后不必加“;”,但复合语句中最后一个语句中的“;”不能忽略不写,例如:{y=a+b; printf(“%d”,y);}。复合语句中的每一个语句可以是任意语句,当然包括复合语句 本身,复合语句在形式上是多个语句的组合,但在语法上只相当于一个简单语句,可出 现在任何简单语句可以出现的地方。 C 语言中的语句按语句功能又可分为以下四类: (1)控制语句(共 9 种),完成一定的控制功能。 ①if(条件) 语句 else 语句 (条件语句) ②for(表达式 1;表达式 2;表达式 3)循环体 (循环语句) ③while(条件)循环体 (循环语句) ④do 循环体 while(条件) (循环语句) ⑤continue (结束本次循环语句) ⑥break (中止执行 switch 或循环语句) ⑦switch (多分支选择语句) ⑧goto (转向语句) ⑨return (从函数返回语句) (2)函数调用语句。由一次函数调用加一个分号(;)构成。例:printf(“This a C program”); (3)表达式语句。由一个表达式加一个分号(;)构成。例:area=3.1415926*r*r; (4)空语句。只有一个分号(;)构成,它什么也不做。有时用来做循环体,表示
循环体什么也不做 2.常用的顺序执行语句 1.赋值语句 由赋值表达式加上分号构成。注意:a=x+y和a=x+y;意义不同,前者是表达式, 后者是表达式语句 2.输入输出函数调用语句 C语言本身没有提供输入输出语句,而是在标准库函数中定义了一系列的输入输出 函数,通过对这些函数的调用来实现数据的输入输出,如果在调用这些函数的结尾加上 “;”,就构成了输入输出函数调用语句。注意:在使用标准输入输出(I/O)库函数时, 要用# include“ stdio h”预编译命令将“ stdio. h”文件包括到用户源文件中 (1)字符输入函数 调用形式: getchar( 作用:从终端(或系统隐含指定的输入设备)输入一个字符。注意: getchar没有 参数,函数值是从输入设备得到的字符。该函数可以不赋给任何变量直接输出,例 putchar (getchar () (2)字符输出函数 调用形式: putchar(c) 作用:向终端输出一个字符。函数值是输出的字符。C可以是字符型常量、字符型 变量、整形常量、整形变量及其表达式。 (3)格式输出函数 形式: printf(格式控制字符串,输出表列) 例如: printf(“%d,%d”,a,b) 作用:选择输出数据的格式,向终端(或系统隐含指定的输出设备)输出若干任意 类型的数据。 说明 ①格式控制字符串是用双引号括起来的字符串,用于描述输出项的输出方式,包括 两类,一类是普通字符和转义字符,普通字符(如上例中的“,”)按原样输出,转义字 符按转义后的字符输出;另一类是以%号开头的格式说明符,用于描述输出数据的显示 格式。若输出%本身,应在%前加一个%,即两个%连写 ②输出表列为若干个输出项,应尽可能与格式控制串中以%号开头的格式控制说明 符在数量、数据类型、顺序上保持一致。如果格式控制说明符与输出项数据类型不一致 以格式说明符为主:如果输出项的个数多余格式控制说明符的个数,没有格式控制说明 符的输出项不输出:如果格式控制说明符的个数多余输出项的个数,按格式控制说明符 输出对应的输出项的值,对应多余的格式控制说明符输出随机值。 ③常用格式说明如下
23 循环体什么也不做。 2.常用的顺序执行语句 1.赋值语句 由赋值表达式加上分号构成。注意:a=x+y 和 a=x+y; 意义不同,前者是表达式, 后者是表达式语句。 2.输入输出函数调用语句 C 语言本身没有提供输入输出语句,而是在标准库函数中定义了一系列的输入输出 函数,通过对这些函数的调用来实现数据的输入输出,如果在调用这些函数的结尾加上 “;”,就构成了输入输出函数调用语句。注意:在使用标准输入输出(I/O)库函数时, 要用#include“stdio.h”预编译命令将“stdio.h”文件包括到用户源文件中。 (1)字符输入函数 调用形式:getchar() 作用:从终端(或系统隐含指定的输入设备)输入一个字符。注意:getchar 没有 参数,函数值是从输入设备得到的字符。该函数可以不赋给任何变量直接输出,例 putchar(getchar())。 (2)字符输出函数 调用形式:putchar(c) 作用:向终端输出一个字符。函数值是输出的字符。C 可以是字符型常量、字符型 变量、整形常量、整形变量及其表达式。 (3)格式输出函数 形式:printf(格式控制字符串,输出表列) 例如:printf(“%d,%d”,a,b) 作用:选择输出数据的格式,向终端(或系统隐含指定的输出设备)输出若干任意 类型的数据。 说明: ①格式控制字符串是用双引号括起来的字符串,用于描述输出项的输出方式,包括 两类,一类是普通字符和转义字符,普通字符(如上例中的“,”)按原样输出,转义字 符按转义后的字符输出;另一类是以%号开头的格式说明符,用于描述输出数据的显示 格式。若输出%本身,应在%前加一个%,即两个%连写。 ②输出表列为若干个输出项,应尽可能与格式控制串中以%号开头的格式控制说明 符在数量、数据类型、顺序上保持一致。如果格式控制说明符与输出项数据类型不一致, 以格式说明符为主;如果输出项的个数多余格式控制说明符的个数,没有格式控制说明 符的输出项不输出;如果格式控制说明符的个数多余输出项的个数,按格式控制说明符 输出对应的输出项的值,对应多余的格式控制说明符输出随机值。 ③常用格式说明如下:
1)d格式(输出十进制整数 %d按数据实际长度输出 %mdm为正整数,是指定的输出字段宽度,若实际数据位数<m,则数据 左端补空格,若实际数据位数≥m,按实际位数输出(保证数据正确,突破场宽) %-mdm是指定的输出字段宽度,若实际数据位数<m,则数据右端补空格, 若实际数据位数≥m,按实际位数输出 %d输出长整形数据,也可在1之前加上m。 2)o格式(输出八进制整数 把内存单元(连同符号位)一起按八进制形式输出,因此不会输出负号,同d 格式符一样,有%0,%mo,%lo等形式。 3)x格式(输出十六进制整数) 类似o格式,也有%x,%mx,%Ix等形式,不会输出负值 4)u格式(以十进制形式输出 unsigned数据类型) 5)c格式(用以输出一个字符,其范围为 ASCII码在0——127之间) 6)s格式(用于输出字符串) %s按原样输出字符串。例: printf(“%s”,“ China”);输出 China(注 意:不输出双引号 当字符串长度大于m时,按实际长度输出,否则左边补空格 %-ms当字符串长度小于m时右边补空格 %mns输出m列,但只取字符串左边的n个字符,左边补空格 %-mns同上,但n个字符右边补空格。 7)f格式(以小数点形式输出实数) %f不指定宽度时,由系统自动确定,整数部分全部输出,小数部分输出六位 但有效数位单精度为7位,双精度为16位。 8)e格式(以指数形式输出实数) %e数值按规格化数形式输出(即小数点前有一位非零数字),系统自动确定6 小数部分和4位阶码部分(其中e本身占一位,阶符一位,阶二位,例如e+03)。 m为总列数,n为小数点后位数。 9)g格式(输出实数,系统自动选用e或f且不输出无意义的0) 系统自动在e或f格式中选择输出宽度小的一种方式 表4-1、表4-2总结了 printf l的各种格式字符及附加格式字符(修饰符)。 4-1 printf格式字符表 格式字符 格式字符 以带符号的十进制形式输出整数 以小数形式输出单、双精度数 (正数不输出+) (小数部分占6位) 以八进制无符号形式输出整数E,c以指数形式输出单、双精度数(6
24 1)d 格式(输出十进制整数) %d 按数据实际长度输出; %md m 为正整数,是指定的输出字段宽度,若实际数据位数<m ,则数据 左端补空格,若实际数据位数≥m ,按实际位数输出(保证数据正确,突破场宽)。 %-md m 是指定的输出字段宽度,若实际数据位数<m ,则数据右端补空格, 若实际数据位数≥m ,按实际位数输出。 %ld 输出长整形数据,也可在 l 之前加上 m。 2)o 格式(输出八进制整数) 把内存单元(连同符号位)一起按八进制形式输出,因此不会输出负号,同 d 格式符一样,有%o,%mo,%lo 等形式。 3)x 格式(输出十六进制整数) 类似 o 格式,也有%x,%mx,%lx 等形式,不会输出负值。 4)u 格式(以十进制形式输出 unsigned 数据类型) 5)c 格式(用以输出一个字符,其范围为 ASCII 码在 0——127 之间) 6)s 格式(用于输出字符串) %s 按原样输出字符串。例:printf(“%s”,“China”);输出 China(注 意:不输出双引号); %ms 当字符串长度大于 m 时,按实际长度输出,否则左边补空格; %-ms 当字符串长度小于 m 时右边补空格; %m.ns 输出 m 列,但只取字符串左边的 n 个字符,左边补空格; %-m.ns 同上,但 n 个字符右边补空格。 7)f 格式(以小数点形式输出实数) %f 不指定宽度时,由系统自动确定,整数部分全部输出,小数部分输出六位, 但有效数位单精度为 7 位,双精度为 16 位。 8)e 格式(以指数形式输出实数) %e 数值按规格化数形式输出(即小数点前有一位非零数字),系统自动确定 6 位小数部分和 4 位阶码部分(其中 e 本身占一位,阶符一位,阶二位,例如 e+03)。 %m.ne %-m.ne m 为总列数,n 为小数点后位数。 9)g 格式(输出实数,系统自动选用 e 或 f 且不输出无意义的 0) 系统自动在 e 或 f 格式中选择输出宽度小的一种方式。 表 4-1、表 4-2 总结了 printf 的各种格式字符及附加格式字符(修饰符)。 4-1 printf 格式字符表 格式字符 说 明 格式字符 说 明 d,i 以带符号的十进制形式输出整数 (正数不输出+) f 以小数形式输出单、双精度数 (小数部分占 6 位) o 以八进制 无符号形 式输出 整数 E,e 以指数形式输出单、双精度数(6
(不输出前导符0) 位小数,4位阶码) X,x以十六进制无符号形式输出整数g选%或%格式中输出宽度较 (不输出前导符0x),用X时,则 短的一种格式,不输出无意义的 以大写字母输出 以无符号的十进制形式输出整数 输出字符串 以字符形式输出一个字符 表4-2 printf附加格式字符表 附加字符 说明 于长整形数据的输出,可加在do,xu的前面 正整数m_指定输出数据的宽度实际数据超出时,按实际输出可加在d、o 的前面 正整数n输出实数时,保留n位小数:输出字符串时,表示截取n个字符 输出项在输出域内左对齐排放,不加-号的格式输出项按默认的右对齐输出 无论正、负数,输出时都带符号位 表43 scanf格式字符表 格式字符 格式字 说明 d,i输入有符号的十进制整数‖c输入单个字符 u|输入无符号的十进制整数‖s输入字符串将字符串送入一个字符数组 中,输入时以非空白字符开始,以第一个 空白字符结束。字符串以串结束标志0 作为其最后一个字符 输入无符号的八进制整数 f|输入实数,可以用小数形式或指数形式 X,x输入无符号的十六进制整E,cG,与f作用相同,e与fg可以互相替换(大 数(大小写作用相同) 小写作用相同) 表44canf附加格式字符表 附加字符 用于长整形数据的输入(加在do,x的前面)及 double型数据(%lf、%e)的输入 字母h|用于短整形数据的输入 正整数m指定输入数据的宽度,按指定宽度取值赋给相应变量 对应的输入项不赋给相应的变量,跳过此数据 (4)格式输入函数 形式: scanf(格式控制字符串,地址表列 用:按格式控制串的格式从终端为一个或多个不同类型的变量赋值 说明 ① scanf函数的格式控制字符串与 printf函数的格式控制字符串类似,其格式字符 及附加格式字符见表4-3和表4-4。注意:除表中给出的大写字符外,其它格式说明符 只能用小写字母,如%d不能写成%D
25 (不输出前导符 0) 位小数,4 位阶码) X,x 以十六进制无符号形式输出整数 (不输出前导符 0x),用 X 时,则 以大写字母输出 g 选%f 或%e 格式中输出宽度较 短的一种格式,不输出无意义的 0 u 以无符号的十进制形式输出整数 s 输出字符串 c 以字符形式输出一个字符 表 4-2 printf 附加格式字符表 附加字符 说 明 字母 l 用于长整形数据的输出,可加在 d,o,x,u 的前面 正整数 m 指定输出数据的宽度,实际数据超出时,按实际输出,可加在 d、o、x、u 的前面 正整数 n 输出实数时,保留 n 位小数;输出字符串时,表示截取 n 个字符 - 输出项在输出域内左对齐排放,不加-号的格式输出项按默认的右对齐输出 + 无论正、负数,输出时都带符号位 表 4-3 scanf 格式字符表 格式字符 说 明 格式字 符 说 明 d,i 输入有符号的十进制整数 c 输入单个字符 u 输入无符号的十进制整数 s 输入字符串,将字符串送入一个字符数组 中, 输入时以非空白字符开始,以第一个 空白字符结束。字符串以串结束标志’\0’ 作为其最后一个字符 o 输入无符号的八进制整数 f 输入实数,可以用小数形式或指数形式 X,x 输入无符号的十六进制整 数 (大小写作用相同) E, e, G, g 与 f 作用相同, e 与 f, g 可以互相替换(大 小写作用相同) 表 4-4 scanf 附加格式字符表 附加字符 说 明 字母 l 用于长整形数据的输入(加在 d,o,x 的前面)及 double 型数据(%lf、%le)的输入 字母 h 用于短整形数据的输入 正整数 m 指定输入数据的宽度,按指定宽度取值赋给相应变量 * 对应的输入项不赋给相应的变量,跳过此数据 (4)格式输入函数 形式:scanf(格式控制字符串,地址表列) 作用:按格式控制串的格式从终端为一个或多个不同类型的变量赋值。 说明: ①scanf 函数的格式控制字符串与 printf 函数的格式控制字符串类似,其格式字符 及附加格式字符见表 4-3 和表 4-4。注意:除表中给出的大写字符外,其它格式说明符 只能用小写字母,如%d 不能写成%D