浙江大学C语言期末考试试卷

需积分: 10 3 下载量 67 浏览量 更新于2024-09-11 收藏 91KB DOC 举报
"这份资源是一份来自浙江大学2010-2011学年冬学期的《程序设计基础及实验》课程的期末考试试卷,主要针对C语言进行考核。试卷为闭卷形式,考试时长120分钟,旨在帮助学生巩固和检验C语言的掌握程度。试卷包含单选题部分,涉及C语言的基础语法和概念,例如表达式的求值、运算符的使用、数组的引用以及指针的运用等。" 这篇试卷的部分内容展示了C语言的一些核心知识点: 1. 表达式求值:题目中的 `(4>3>2)` 是一个逻辑表达式,比较结果会返回布尔值,但C语言中没有布尔类型,所以 `1` 和 `0` 分别代表真和假。正确的答案是 `B.1`。 2. C语言运算符:`0.5%2` 涉及到浮点数与整数的模运算,这是不合法的;`3&(0.5+0.5)` 中的 `&` 是按位与运算符,不能用于浮点数;`4.6<<2` 是左移运算,同样不适用于浮点数;`2==(3/2)` 比较的是整数除法的结果,即 `1`。正确答案是 `D.2==(3/2)`。 3. 数组引用:C语言数组下标从0开始,`a[2][3]` 和 `a[0][3]` 都越界了;`a[1>2][!1]` 相当于 `a[0][0]`,是合法的。正确答案是 `A.a[2][!1]`,尽管 `!1` 在这里等同于 `0`,但表达式本身是合法的。 4. 指针和输入:`int*p; scanf("%d",&p);` 错误,因为 `%d` 需要地址,而 `p` 已经是地址了;`int*p; scanf("%d",p);` 也是错误的,因为未初始化指针;`int k, *p=&k; scanf("%d", p);` 正确,指针 `p` 初始化为变量 `k` 的地址,然后通过指针读取输入;`int k, *p; *p=&k; scanf("%d", p);` 错误,因为未初始化指针 `p` 就试图给它赋值。正确答案是 `C.intk,*p=&k; scanf("%d",p);`。 5. 多级指针:`int*p[4];` 声明了一个包含4个指向整数的指针的数组;`int**p;` 是一个指向指针的指针;`int*(p[4]);` 和 `int(*p)[4];` 是等价的,声明了指针 `p` 指向一个含有4个整数的数组。正确答案是 `D.int(*p)[4]` 或 `C.int*(p[4]);`。 6. 数组声明:`int a[4]="...";` 是错误的,因为字符串字面量不能赋值给整型数组,需要使用字符数组 `char a[5]`(包括结束符`\0`)。 这些题目覆盖了C语言的关键概念,如逻辑表达式、运算符优先级、数组和指针操作、输入输出以及多级指针的理解。对于准备C语言考试的学生来说,这些都是必备的知识点。