【武汉大学C语言考试试卷】 本试卷为2001-2002学年度第一学期2001级《高级语言程序设计》的期末考试试卷,主要考察学生对C语言的基本控制结构、运算符、指针、数组、文件操作、面向对象特性以及程序设计方法的理解和应用。 一、选择题部分 1. C语言的基本控制结构包括转移、循环和选择,不包括顺序。所以D选项"顺序"不是基本控制结构。 2. 表达式65|9和65&9的值分别为73和1。因为65(二进制1000001)与9(二进制1001)进行或运算得到73(二进制1001001),与运算得到1(二进制0000001)。 3. 当m=a>b和n=a>b均为假时,表达式(m=a>b)&&(n=a>b)的结果为0,因此m和n的值都为0,选D。 4. 表达式35<<3表示35左移3位,即1000111左移3位得到10100000,转换为十进制为280,因此选D。 5. 宏定义WIDTH为80,LENGTH为WIDTH+1,即LENGTH为81,所以赋值语句v=LENGTH*20后,v的值为1620,选A。 6. 使指针q与p指向同一变量,应使用q=&*p,因此选B。 7. 执行p=a; p+=4;后,*(p+4)等价于a[8],因为指针p在增加4后指向了a数组的第五个元素,再加4就到了第八个元素的位置,选A。 8. fp=fopen("A:Exam1_8.txt","wb");返回null,最可能的原因是文件"A:Exam1_8.txt"不存在,选B。 9. 非结构不是对象的基本特性,对象的基本特性包括封装、多态和继承,因此选C。 10. 结构化程序设计追求的首要目标是程序的结构优,选C。 二、程序纠错部分 程序段A中,`scanf("%u", buf);`应改为`scanf("%d", &buf);`,因为buf是int类型,需要取地址符&。程序段B中,递归函数f(n)的计算有误,tmp的初始化应在函数开始时完成,且递归调用前应判断n是否大于等于2,修正后的代码如下: ```c long f(int n) { int tmp; if (n >= 2) { tmp = (2 * n) * (2 * n - 1) * f(n - 2); } else { tmp = 1; } return (long) tmp; } ``` 三、程序阅读与分析部分 1. 下面的程序求矩阵A(m,m)的右下三角区的所有元素的和,程序的空白处填写内容如下: ```c #define m 100 main() { int a[m][m]; int i, j, sum = 0; for (i=0; i<m; i++) { for (j=0; j<m; j++) { scanf("%d", &a[i][j]); } } for (i=0; i<m; i++) { for (j=i; j<m; j++) { // 注意这里,j应该从i开始 sum += a[i][j]; } } } ``` 这个程序读取一个m*m的矩阵,然后计算并输出右下三角区域(包含对角线)所有元素的和。
剩余28页未读,继续阅读
- 粉丝: 274
- 资源: 32
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助