C语言编程:2009年地大(武汉)期末考试真题解析

需积分: 15 7 下载量 81 浏览量 更新于2024-09-07 1 收藏 116KB DOC 举报
"中国地质大学(武汉)C语言期末考试真题-2009下" 这份资料是中国地质大学(武汉)2009年下半学期C语言课程的期末考试试题,适合准备考研的学生作为参考资料。考试以闭卷、笔试的形式进行,包括一单项选择题部分,总分为30分,主要测试学生对于C语言的基础知识和编程能力。 试题内容涵盖C语言的各种核心概念,如常量、表达式、条件判断以及数组操作等。例如: 1. 单项选择题中涉及到C常量的识别,选项分析如下: - A) ’\123’,1e5-2 - 不符合,C语言中八进制常量应以0开头,'\123'不是合法的八进制常量。 - B) 0xffce, ‘\\’ - 都是合法的,0xffce是十六进制常量,'\'是转义字符。 - C) 0246, ‘10’ - 不完全符合,'10'不是合法的八进制常量,它被视为字符串中的字符。 - D) 102,123 - 符合,这些都是十进制整数常量。 2. 表达式的计算和类型转换: - 假设a=2, b=5,表达式a+’1’+(float)(b/a)会先进行类型提升,'1'会被转换为ASCII码对应的整数49,然后加上a的值,再与b/a的结果相加,由于b/a会变成浮点数,所以整个表达式结果为浮点数,答案可能是B) 5.5。 3. 条件表达式的求值规则和运算符优先级: - 在表达式c=(a==--b||--a,a+b+1.0/2)中,根据短路逻辑,如果a==--b为真,那么--a就不会执行,因此c的值取决于a==--b的运算结果。 4. 逻辑表达式的组合: - 为了找出a、b、c中有一个为0,两个为非0的正确表达式,需要使用逻辑运算符。D) !(a*b*c)&&(a+b+c)是正确的,因为当a、b、c中有两个非零时,a*b*c不等于0,同时a+b+c等于2或3。 5. 逻辑表达式等价性的判断: - 比较!(a+b)&&a*b与其它表达式的等价性,可以发现A) a+b==0&&a*b!=0与之等价,因为它们都表示a和b不能同时为0。 此外,试题还包含了一段代码,用于找到数组中的最大值和最小值的索引。这个程序通过遍历数组,比较当前元素与已知最大值和最小值,更新p和q的值,最后打印出最大值的索引p和最小值的索引q。 11. 数组元素的移动: - 要将数组a的后9个元素向前移动一个位置,挤掉第一个元素,正确的操作是C) for(j=9; j>0; j--) a[j-1] = a[j];这个循环从倒数第二个元素开始,逐个将后面的元素移到前面去。 12. if语句中的条件表达式: - if语句后的条件表达式可以用任何能够产生非零(真)或零(假)的表达式,这可以是算术表达式、关系表达式、逻辑表达式等。 这份试题旨在检验学生对C语言基本语法、表达式、逻辑运算、数组处理以及控制结构的理解和应用能力。通过解答这些题目,学生可以检验自己的学习成果,并了解实际考试中可能遇到的问题类型。