C语言运算符与表达式详解及实例

版权申诉
0 下载量 108 浏览量 更新于2024-07-01 收藏 145KB DOC 举报
本资源是一份C语言习题集,针对第2章的运算符与表达式进行练习和测试。以下是部分题目及知识点解析: 1. 题目涉及类型转换和算术运算,表达式 `((float)(a+b)/2+(int)x%(int)y)` 其中 `(float)(a+b)` 表示将整数相加结果转换为浮点数,`x` 和 `y` 的整数除法后取余数。由于 `a` 和 `b` 的整数值分别为 2 和 3,整数除法 `(int)x%(int)y` 结果为 1,而 `(float)(a+b)` 结果为 2.5,因此最终值为 3.500000,选项C。 2. 该题考查类型转换和算术运算,`(x+y)%2` 对 `x` 和 `y` 之和取模,结果为 1(因为 3+2 的和为 5),然后 `(int)a/(int)b` 由于 `a` 为2.5和 `b` 为3.5的整数部分,结果为 0,所以最终表达式值为 1,选B。 3. 这道题考察取模和自减运算,`x%=(n%=2)` 中,首先 `n%=2` 使得 `n` 变为 1 或 0,然后 `x%=` 进行取模运算,如果 `n` 是 1,`x` 会变为 0;如果 `n` 是 0,则 `x` 不变。由于 `x` 初始值为 12,`n` 初值为 5,最终 `x` 的值为 0,选A。 4. 表达式 `(x++*1/3)` 先计算 `x++`,即先使用当前值11,然后递增为12,然后做乘法和除法,得到的结果是 `11 * 1 / 3 = 3`,选A。 5. 代码中涉及类型转换和浮点数运算,`y=(x+3.8)/5.0` 的结果是 `1.2 + 3.8 / 5`,结果向下取整为 `1`,然后与 `d` 相乘得到 `3.0`,选D。 6. 该题考察数据类型的隐式转换,`i`、`l`、`f` 分别被赋值为 `20/3` 的整数部分、长整型部分和浮点型部分。由于 `20/3` 等于 6.66666...,整数部分为 6,长整型和浮点型保持原值,输出结果小数点后一位,选A。 7. 题目涉及双精度浮点数的赋值,`x=1` 直接赋值,`y=x+3/2` 则 `3/2` 被解释为浮点数,结果为 1.5,加上 `x` 后为 2.5,但题目要求保留小数点后一位,选C。 8. 在 C 语言中,合法的语句是: A) 语法错误,`i=int(a)` 应该是 `i=(int)a`; B) 正确,`++i` 递增 `i` 的值; C) 语法错误,应为 `a=a+5`,不能同时递增和赋值; D) 语法错误,`a=int(i)` 应该是 `a=(int)i`。选B。 9. `c3=1.0/c2*c1` 先计算 `c2` 为 2,再取倒数为 0.5,然后与 `c1` 相乘,结果为 0,选A。 10. `printf` 语句中 `(++x,y++)` 先递增 `x`,再递增 `y`,所以 `(++x,y++)` 结果为 `(4,3)`,最后与 `z+2` 相加得到 `4+3`,选D。 11. 表达式表示逻辑“a>=10或a<=0”,在C语言中可以写作 `a >= 10 || a <= 0`,选D。 这些题目旨在检验学生对C语言基本运算符的理解和应用能力,通过解答这些习题,可以帮助学习者巩固C语言基础并提高解决问题的能力。