C语言编程选择题:基础表达式与运算符

需积分: 7 0 下载量 123 浏览量 更新于2024-09-14 收藏 129KB DOC 举报
第二部分主要考察了编程基础中的算术运算、逻辑表达式、类型转换和控制结构等知识点。以下是一些关键题目及解析: 1. 题目1要求将整型变量a的值2转换为0,选项C `b=a%2` 是正确的,因为整数除法`a/2`会得到0,而`(--a)`会使a减1后取值,结果也是1。`a>3?0:1`虽然可以实现,但不会让b变为0。 2. 题目2中,表达式 `x+a%3*(int)(x+y)%2/4` 计算时先对 `x+y` 取模2(因为 `(int)` 表示向下取整),然后除以4得到0,因此整个表达式简化为 `x + a%3 * 0`,等于 `x`,给定的x值为2.5,所以结果为2.5。 3. 题目3涉及逻辑运算,`!(a+b)` 为 `!(3+4)`,计算得到 `false`,接着 `c-1` 为 `4-1`,得3,`b+c/2` 为 `4+5/2`,得6,两者与`false`按位与运算,结果是 `0`。 4. 题目4中,`a=2` 和 `b=5` 后,`b++` 使b变为6,最后 `a+b` 的结果是 `2+6`,等于8。 5. 题目5中,选项A `!(y==x/2)` 不满足条件,选项B `y!=x%3` 和C `x>0&&y<0` 无法确保结果为1,只有D `x!=y||x>=y` 在x=5, y=2的情况下成立,因为 `x!=y` 为 `true`。 6. 题目6 `a+=a-=a*=a` 先进行乘法 `a*a` 得到144,再自减 `a-=144` 得到0,然后自加 `a+=0` 还是0。 7. 题目7中,`10+'b'+x*f` 的表达式中,字符 'b' 转换为整数1,然后与浮点数相加,结果的类型取决于浮点数x,因此最终类型是double。 8. 题目8 `(int)(x+k)` 中,1.2被转换为int类型时,小数部分被截断,得到6.0,再加上整数5,结果是11,向下取整为6。 9. 题目9 `k=(12<10)?4:1?2:3` 是三元运算,先计算12是否小于10(为假,取第二个分支),因此值为2。 10. 题目10中,括号 `()`、数组下标 `[]`、指针成员访问 `->` 和`.` 以及逻辑运算符 `&&`、`||` 的优先级相同,从左到右计算。 11. 题目11 `z=x>y?10:20` 中,由于x=1, y=2,条件 `x>y` 为假,执行 `20` 分支,z的值为20。 12. 题目12中,`y=x+10/4` 先做除法 `10/4` 得2.5,然后 `y=2+2.5` 结果为4.5,但题目要求是double类型,所以最终结果为4.0。 13. 题目13 `sizeof('a' + 10)` 求字符串长度,`'a' + 10` 是字符'a'后的10个空格,总长度为11,但sizeof操作返回的是字符数组的字节数,通常以int类型存储,因此结果是int类型。 这些题目涵盖了C语言的基础语法、算术运算、类型转换、逻辑判断和表达式优先级等内容,有助于巩固编程基础和理解C语言的运算规则。