c语言程序设计初步(编辑修改稿)内容摘要:

型变量,且 a 的初值为 6,则计算表达式后 a 的值为 ______。 a+=a=a*a 答 案: 60 详解: 表达式从左向右运算,先计算表达式 a=a36 后 a 为 30,再计算表达式 a=a+a 后 a 的值变为 60。 (十二 ) 条件运算 : 条件运算符的基本形式及功能: 条件运算是一种在两个表达式的值中选择一个的操作。 它的一般形式为: e1?e2:e3 它的操作过程为,若 e1 为真,则表达式的值为 e2,若为假表达式的值为 e3。 优先级别:低于逻辑运算,高于赋值运算。 运算量:三元运算量, e1 一般为算术表 达式, e e3 可以是任意类型的表达式,条件表达式的值的类型为 e2 与 e3 二者中类型较高的。 例 16: 若有条件表达式( exp) ?a++:b,则以下表达式中能完全等价于表达式( exp)的是 ______。 答 案: exp!=0 详解: 对于表达式 e1?e2:e3 , e1 一般为算术表达式、逻辑表达式、关系表达式,结果为 1(真)或 0(假)。 也可以为数值 exp,结果为结果为非 0(真)或 0(假)在本例中与 exp 完全等价的表达式是 exp!=0。 左右结合性:自右至左运算。 例 17: 以下程序的运行结果是 ______。 main() { int k=4, a=3,b=2,c=1。 C 语言程序设计详解 16 printf(―%d‖,ka?k:cb?c:a)。 } 答 案: 1 详解: 条件表达式是从右向左运算,所以在本例中先计算表达式 cb?c:a 的值,把各数值代入此表达式的值为 1。 再计算表达式 ka?k:1 的值,因为 ka 为假,所以整个表达式的值为 1。 (十三 ) 逗号运算 逗号运算符的基本形式及功能: 逗号表达式的一般形式为: 表达式 1,表达式 2。 逗号表达式的求解过程是:先求解表达式 1,再求解 表达式 2。 整个表达式的值是表达式 2 的值。 优先级别:逗号运算符是所有运算符中级别最低的。 例 18: 以下符合 C 语言语法的赋值表达式是 ______。 ( A) d=9+e+f=d+9 ( B) d=( 9+e,f=d+9) ( C) d=9+e,e++,d+9 ( D) d=9+e++=d+7 答 案: B 解析: 表达式 d=9+e+f=d+9 中 9+e+f=d+9 是不正确的表示形式,因为赋值号( =)左边不能是表达式。 表达式 d=9+e, e++,d+9 是逗号表达式,因为赋值运算符( =)的优先级别高于 逗号运算符(,)。 表达式 d=9+e++=d+7 中 9+e++=d+7是不正确的表达式,因为赋值号( =)左边不能是表达式。 运算量:二元运算量。 左右结合性:从左向右运算。 例 19: 假设所有变量均为整型,则表达式 a=2,b=5,b++,a+b 的值是 ______。 答 案: 8 解析: 根据逗号运算符从左向右运算的原则,首先把 2 和 5 分别赋值给了 a,b。 再计算表达式 b++, b 变为 6,再计算表达式 a+b 的值,最后整个表达式的值是 8。 (十四 ) 强制类型转换 强制类型一般形式及功能: 可 以利用强制类型转换运算符将一个表达式转换成所需类型。 例如: (double) a(将 a 转换成 double 类型)其一般形式为: (类型名 )(表达式 ) C 语言程序设计详解 17 优先级别:强制类型转换运算符与逻辑非(。 )、自加( ++)、自减( )属于同等级别,高于算术运算符。 运算量:单元运算量 关于强制类型转换运算符的进一步说明: ① 强制转换表达式时,表达式应该用括号括起来。 如果写成 (int )x+y 则只将x 转换成整型,然后与 y 相加。 ② 如果 x 原指定为 float 型 ,进行强制类型运算后得到一个 int 型的中间变量,它的值等于 x 的整数部分(截去小数部分),而 x 的类型不变(仍为 float 型)。 例 20: main( ) { float x=3. 6。 int i。 i=(int)x printf(―x=%f,i=%d‖,x,i)。 } 输 出结果: x=,I=3 解 析: 变量 x 进行强制类型运算后,其类型仍为 float 型,值仍为。 (十五 ) printf 函数 printf 函数可以输出任意类型的多个数据。 printf 函数的一般格式 printf(格式控制 ,输出表列 ) ① “格式控制”是用双引号括起来的字符串,也称“转换控制字符串”,它包括两种信息:格式说明和普通字符。 格式说明是由“ %”和格式字符组成,如 %d,%f 等。 它的作用是将输出的数据转换为指定的格式输出。 格式说明总是由 ‖%‖字符开始的。 普通字符即需要原样输出的字符。 ② 输出表列是指需要输出的一些数据,可以是表达式,它们之间用“ ,”隔开。 格式控制的完整格式: % 0 m. n l 或 h 格式字符 下面对组成格式说明的各项加 以说明: C 语言程序设计详解 18 ① %:表示格式说明的起始符号,不可缺少。 ② :有 表示左对齐输出,如省略表示右对齐输出。 ③ 0:有 0 表示指定空位填 0,如省略表示指定空位不填。 ④ m. n: m 指域宽,即对应的输出项在输出设备上所占的字符数。 N 指精度。 用于说明输出的实型数的小数位数。 为指定 n 时,隐含的精度为 n=6 位。 ⑤ l 或 h:l 对整型指 long 型,对实型指 double 型。 h 用于将整型 的格式字符修正为 short 型。 格式字符: 格式字符用以指定输出项的数据类型和输出格式。 ① d 格式:用来输出十进制整数。 有以下几种用法: %d:按整型数据的实际长度输出。 %md: m 为指定的输出字段的宽度。 如果数据的位数小于 m,则左端补以空格,若大于 m,则按实际位数输出。 %ld:输出长整型数据。 ② o 格式:以无符号八进制形式输出整数。 对长整型可以用“ %lo”格式输出。 同样也可以指定字段宽度用“ %mo”格式输出。 例 21: main() { int a=1。 printf(―%d,%o‖,a,a)。 } 运行结果: 1,177777 程序解析: 1 在内存单元中(以补码形式存放)为 (1111111111111111) 2,转换为八进制数为 (177777)8。 ③ x 格式:以无符号十六进制形式输出整数。 对长整型可以用“ %lx”格式输出。 同样也可以指定字段宽度用“ %mx”格式输出。 ④ u 格式:以无符号十进制形式输出整数。 对长整型可以用“ %lu”格式输出。 同样 也可以指定字段宽度用“ %mu”格式输出。 ⑤ c 格式:输出一个字符。 ⑥ s 格式:用来输出一个串。 有几中用法 C 语言程序设计详解 19 %s:例如 :printf(―%s‖,‖CHINA‖)输出“ CHINA”字符串(不包括双引号)。 %ms:输出的字符串占 m 列,如字符串本身长度大于 m,则突破获 m 的限制 ,将字符串全部输出。 若串长小于 m,则左补空格。 %ms:如果串长小于 m,则在 m 列范围内,字符串向左靠,右补空格。 %:输出占 m 列,但只取字符串中左端 n 个字符。 这 n 个字符输出 在m 列的右侧,左补空格。 %:其中 m、 n 含义同上, n 个字符输出在 m 列范围的左侧,右补空格。 如果 nm,则自动取 n 值,即保证 n 个字符正常输出。 ⑦ f 格式:用来输出实数(包括单、双精度),以小数形式输出。 有以下几种用法: %f:不指定宽度,整数部分全部输出并输出 6 位小数。 %:输出共占 m 列,其中有 n 位小数,如数值宽度小于 m 左端补空格。 %m. nf:输出共占 n 列,其中有 n 位小数,如数值宽度小于 m 右端补空格。 ⑧ e 格式 :以指数形式输出实数。 可用以下形式: %e:数字部分(又称尾数)输出 6 位小数,指数部分占 5 位或 4 位。 % 和 %m. ne: m、 n 和 ‖‖字符含义与前相同。 此处 n 指数据的数字部分的小数位数, m 表示整个输出数据所占的宽度。 ⑨ g 格式:自动选 f 格式或 e 格式中较短的一种输出,且不输出无意义的零。 关于 printf 函数的进一步说明: 如果想输出字符“ %” ,则应该在“格式控制”字符串中用连续两个 %表示,如 : printf(―%f%%‖,)。 输出 %。 (十六 ) scanf 函数 scanf 函数可以用来输入任何类型的多个数据。 scanf 函数的一般格式 scanf(格式控制 ,地址表列 ) ① “格式控制”的含义同 printf 函数。 普通字符即需要原样输入的字符。 C 语言程序设计详解 20 ② 地址表列是指由若干个地址组成的表列,它们之间用“ ,”隔开。 格式控制的完整格式: % * m l 或 h 格式字符 ① 格式字符与 printf 函数中的使用方式相同,以 %d、 %o、 %x、 %c、 %s、 %f、 %e,无 %u 格式、 %g 格式。 ② 可以指定输入数据所占列宽,系统自动按它截取所需数据。 如 : scanf(―%3d%3d‖,amp。 a,amp。 b)。 输入: 123456 系统自动将 123 赋给 a,456 赋给 b。 ③ %后的“ *”附加说明符,用来表示跳过它相应的数据。 例如: scanf(―%2d%*3d%2d‖,amp。 a,amp。 b)。 如果输入如下信息: 1234567。 将 12 赋给 a, 67 赋给 b。 第二个数据 ‖345‖被跳过不赋给任何变量。 ④ 输入数据时不能规定精度,例如: scanf(―%‖,amp。 a)。 是不合法的,不能企图输入: 而使 a 的值为。 输入数据流分隔 ① 根据格式字符的含义从输入流中取得数据,当输入流中数据类型与格式字符要求不符时,就认为这一项结束。 如: scanf(―%d%c%f‖,amp。 a,amp。 b,amp。 c); 如果输入如下信息: 则 scanf 函数在接收数据时发现 ‖r‖类型不匹配,于是把 ‖1234‖转换成整型赋值给 a,把 ‖r‖赋给变量 b,最后把 ‖‖转换成实型数据赋给 c。 ② 根 据 格 式 项 中 指 定 的 域 宽 分 隔 出 数 据 项。 如 语 句 :scanf(―%2d%3f%4f‖,amp。 a,amp。 b,amp。 c)。 如果输入如下信息: 123456789012345 则 scanf 函数在接收数据时根据域宽把 12 赋值给 a,345 赋值给 b, 6789 赋值给 c。 C 语言程序设计详解 21 ③ 隐示分隔符。 空格、跳格符( ‘\t‘)、换行符( ‘\n‘)都是 C 语言认定的数据分隔符。 ④ 显示分隔符。 在 scanf 函数的两个格式说明项间有一个或多个普通字符,那么在输 入数据时,在两个数据之间也必须以这一个或多个字符分隔。 如语句: scanf(―a=%d,b=%f,c=%f‖,amp。 a,amp。 b,amp。 c)。 则输入数据应该为: a=1234,b=,c= 关于 scanf 函数的进一步说明: ① scanf 函数中的“格式控制”后面应当是变量地址,而不应是变量名。 例如,如果 a、 b 为整型变量,则 scanf(―%d,%d‖,a,b)。 是不对的,应将 ‖a, b‖改为 ‖amp。 a,amp。 b‖。 ② 如果在“格式控制”字符 串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。 例如: scanf(―%d,%d‖,amp。 a,amp。 b)。 输入时应输入: 3, 4。 3 与 4 之间的逗号应与 scanf 函数中的“格式控制”中的逗号相对应,输入其它符号是不对的。 ③ 在用“ %c”格式输入字符时,空格字符和转义字符都作为有效字符输入。 scanf(―%c%c%c‖,amp。 c1,amp。 c2,amp。 c3)。 如输入: a b c。 字符 ‘a‘赋给 c1,字符(空格) ‘ ‘赋给 c2,字符 ‘b‘ 赋给 c3。 scanf 的停止 与返回 ① 格式参数中的格式项用法 正常结束。 ② 发生格式项与输入域不匹配时 不正常退出: (十七 ) getcha。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。