广东工业大学C语言试卷B:基础选择与填空题目解析

需积分: 10 1 下载量 6 浏览量 更新于2024-09-27 收藏 65KB DOC 举报
本资源是一份广东工业大学05-1-C语言试卷B的参考版,包含了C语言的基础知识题目。以下是详细解析: 一、选择题部分(共20分,每题2分) 1. **合法变量命名**: - 变量命名需遵循C语言的规则,包括字母、数字和下划线,且不能以数字开头。选项A(xY_0)是合法的,因为符合命名规范。 2. **输出格式转换**: - 函数`printf`中 `%d`、`%u`、`%x` 分别表示十进制整数、无符号十进制整数和十六进制整数。`inta=-1`,输出时不会改变数值,但`%u`会将负数转为无符号表示,因此答案是C. 3. **算术运算**: - `x=2`, `y=x+3/2`,尽管3/2为浮点除法,但在`double`类型中会得到精确结果,即3.0,所以最终`x`的值也为3.000000。 4. **逻辑运算与赋值**: - `x=(a=100)&&(b=0)&&(c=200)`,根据运算符优先级,先执行赋值,再做逻辑与。由于`b=0`,整个表达式的结果是false,所以`x`被赋值为0,其他变量保持原值,答案是C。 5. **合法赋值语句**: - A选项错误,逗号运算符不能单独作为赋值语句;B选项是减1操作,是合法的;C选项是表达式,不是赋值;D选项尝试将`a+b`的值强制转换为整型并赋给`c`,是合法的。 6. **字符串初始化**: - A、B、D都是正确的字符串赋值方式,C选项中的`char*str`虽然可以存储字符串,但不包含字符串结束符,不能直接赋值。 7. **printf格式控制**: - `%2d` 表示宽度为2的十进制整数,`inta=1234`,输出时会左对齐,不足位数用空格填充,因此结果是1234。 8. **函数相关概念**: - A错误,可以在函数体内部调用自身; - B正确,没有返回值的函数确实应声明为`void`; - C错误,函数可以在任何地方调用,不限于`main()`; - D错误,至少有一个函数必须有`return`语句。 9. **控制结构**: - break语句不能直接用于`goto`与if组成的循环,因为`goto`跳转到的是一个标签位置,不是循环结构。 10. **指针赋值**: - A选项将`*p`的值赋给`i`,可能不是指针指向的值;B选项将`&j`的地址赋给`*p`,实现了`i`等于`j`的地址;C和D不是正确的赋值方式。 二、填空题(共20分,每题2分) 1. 1.3<5&&5<7 的值为 true,因为两个条件都为真。 2.!(2<=10)的值为 false,因为2小于等于10是true,取非后为false。 3.!5||(4>>10) 的值取决于`4>>10`,由于右移10位相当于除以2^10,4变为0,所以为 true。 4.!(2<4)||(5<3?0:10)的值为 true,因为第一个条件为true,或者条件表达式`5<3?0:10`的结果为0,取非后也为true。 通过这份试卷,学生可以复习和测试他们在C语言基础如变量命名、数据类型、运算符、函数、控制结构、指针等知识点的理解和应用能力。