C语言专升本基础测试:运算符与变量

需积分: 22 12 下载量 174 浏览量 更新于2024-07-24 1 收藏 116KB DOC 举报
C语言专升本试题涵盖了C语言基础理论和实践操作的多个方面,旨在检验学生对于该语言的理解程度和编程技能。以下是对部分试题知识点的详细解析: 1. **合法的用户自定义标识符**:在C语言中,合法的标识符必须遵循一定的规则,如不能使用保留字,不能以数字开头,不能包含除字母、数字和下划线(_)(P38)之外的特殊字符。选项D `_isw` 符合这一规则,因此答案是D。 2. **不符合C语言语法的表达式**:C语言表达式中的运算符优先级和结合性需要遵守,例如,乘除运算符的优先级高于除法,而取模运算符 `%` 应放在运算符链的末尾。选项B `3.14%2` 不符合规则,因为它在表达式中不正确地将浮点数与整数进行取模运算。 3. **不正确的字符常量**:字符常量需要用单引号括起来,且只能包含一个字符。选项C `"a"` 是一个字符串常量,而不是单个字符,所以是错误的。 4. **表示逻辑值“真”的C语言表示**:在C语言中,逻辑值通常用非零数值来表示“真”,因为0通常被视为假。因此,选项A `1` 和 B 非0的数是正确的。 5. **同时定义并赋值的变量**:选项A `float x, y = 3.14;` 正确地定义了两个浮点数类型的变量并赋予相同的初始值。 6. **表达式值不为2的判断**:选项A `2&3` 进行位与运算,不会得到2;选项B `1<<1` 进行左移运算,结果是2;选项C `a==2` 和 D `1^3` 分别进行相等比较和异或运算,可能得到2,具体取决于变量a的值。题目没有给出变量a的定义,所以不能确定哪一个是2。 7. **等价的if语句**:选项A `(a>b)?1:0;` 是三元条件运算符的等价形式,表示如果a大于b,则k等于1,否则等于0。选项B和C不是标准的if-else结构,选项D `a<=b?0:1;` 是倒置的条件,所以只有A是正确的。 8. **scanf输入解析**:选项C `a=10 b=10` 符合格式字符串,当输入此格式时,`a` 和 `b` 的值会设置为10,其余选项可能导致解析错误。 9. **函数调用和输出结果**:函数`fun`接收三个参数但未返回任何值,当调用`fun(2,3,c)`时,由于未显式地传递`c`的地址,`c`的值在函数外部不会改变。因此,`printf`输出的是`c`的默认值,即0,选项A是正确答案。 10. **函数隐含类型**:在C语言中,如果没有明确指定函数的返回类型,编译器会假设其为`int`类型。因此,答案是A `int`。 11. **strlen函数的返回值**:`strlen` 函数用于计算字符串的长度(不包括结束符'\0'),所以对于字符串"hello",其长度是5,选项B是正确答案。 12. **数组元素的访问**:选项A `*a` 是错误的,因为它试图访问一个未初始化的指针;B `a[0]` 是正确的方法访问数组第一个元素;C `a` 是错误的,缺少索引;D `a++` 是递增操作符,不符合语法。 13. **指针和地址的运算**:`*p` 表示指向变量`x`的值,`&*p` 则表示`p`所指向的值的地址,即`x`的地址。所以,选项A是错误的,选项B是正确的。 14. **空指针的设置**:选项A `p=EOF` 是错误的,EOF是文件结束标志,不是一个有效的内存地址;选项B `p=0` 正确地将指针设置为空指针;选项C `"` 是字符串常量,不能直接赋给指针。所以,答案是A。 通过这些试题,学生可以检验自己在C语言基础知识和基本语法、运算符、数据类型、函数调用、指针以及输入输出等方面的能力。