2012-2013《C语言》期末试卷答案

2026/4/29 4:18:57

武汉大学2012-2013年上学期3学分《C语言程序设计》期末试卷答案

一、选择题(每小题2分,共34分) 1. 以下不合法的用户标识符是__C____。 A、j2_KEY B、Double C、4d D、_8_ 复习要点:

标识符的定义: 首字符必须是字母或下划线;后续字符可以是字母、数字或下画线。 C、4d 中用了‘4’做首字符,所以不合法

2.以下叙述中正确的是__A____。

A、C程序中注释部分可以出现在程序中任意合适的地方 B、花括号“{”和“}”只能作为函数体的定界符

C、构成C程序的基本单位是函数,所有函数名都可以由用户命名(库函数) D、分号是C语言之间的分隔符,不是语句的一部分 复习要点:

A、C程序中注释部分可以出现在程序中任意合适的地方。对, 注释由/* */包含

B、花括号“{”和“}”只能作为函数体的定界符,不对。还可以用做复合语句的定界符,也可以做结构体的定界符

C、构成C程序的基本单位是函数,所有函数名都可以由用户命名(库函数),不对。库函数声明和主函数声明已经给定,只可以调用

D、分号是C语言之间的分隔符,不是语句的一部分,不对。分号是语句的结束,是语句的组成部分

3.设int a=12,则执行完语句a+=a-=a*a后,a的值是__D____。 A、0 B、264 C、144 D、-264

原因: 赋值运算赋”=”和符合赋值运算赋都是右结合性,所以,先执行a=12然后执行a-=a*a,即a=a-a*a, a的值为-132。最后执行a+=a,即a=a+a.

4.假定x和y为double型,表达式x=2,y=x+3/2的值是__D____。 A、3.500000 B、3

C、2.000000 D、3.000000

复习要点: 各种类型数据运算后的数据类型

在算术运算时,数据运算时的类型按照数据类型自动转换的原则进行。 就这道体来说,3/2是整数和整数相除,计算结果还是整数,且没有4舍5入的概念。 所以3/2的结果为1。则x+1是double类型和 int类型的和,结果的类型应该为double类型。 即2.0+1的最后结果3.000000

5.语句:printf(\的输出结果是___B___。 A、2 B、1 C、-4 D、-2

1

复习要点:逻辑运算符” &&”是”与”运算,即只有两个操作数为真,结果才为真。在判断两个操作a和b数的值时,都是非0,即a和b为真。运算结果为真用1表示,故B 对,

6.若变量c为char类型,能正确判断出c为小写字母的表达式是___D___。 A、′a′<=c<=′z′

B、(c>=′a′)||(c<=′z′) C、(′a′<=c)and(′z′>=c) D、(c>=′a′)&&(c<=′z′)

原因: A)错,不可能用两个运算符“<=”或两个运算符“>=”表达一个数值的范围,学生常常犯这个错误

B)错,逻辑运算符”||”是”或”运算,即只要有一个操作数为真,结果为真,这里显然要两个操作数都为真,所以不可以用 C)错,and 不是一个C语言运算符 复习要点:逻辑运算符” &&”是”与”运算,即只有两个操作数为真,结果才为真。

7.在嵌套使用if语句时,C语言规定else总是___C___。 A、和之前与其具有相同缩进位置的if配对 B、和之前与其最近的if配对

C、和之前与其最近的且不带else的if配对 D、和之前的第一个if配对

这道题出得不太好,正确回答应该是:在语法允许的情况下,和之前与其最近的且不带else的if配对。 例如: if(a)

{ if(b} a=1; } else b=2;

这里else 只能和if(a) 配对。

不可以和if(b},因为在语法上, { if(b} a=1; }是一条复合语句,语法上不可能和复合语句外的语句 配对

8.以下循环体的执行次数是__C____。 main() {

int i,j;

for (i=0,j=1; i<=j+1;i+=2,j--) printf(\}

A、3 B、2 C、1 D、0

原因:循环控制表达式 i<=j+1为假时,循环结束 第一次判断 :i=0, j=1:i<=j+1为真。执行1次

2

第二次判断 :i=2, j=0:i<=j+1为假,退出

9.int a[2][3]={{1},{2,3}};,则a[0][1]的值是_D_____。 A.1 B. 2 C. 3 D. 0

复习要点:数组的初始化,给部分数组元素赋值时,没有赋值的数组元素的值为0

10. 以下对二维数组a的正确说明是__B____。 A. int a[5][]; B. float a[5][4];

C. double a[][4]; D. float a(5)(4);

复习要点:数组的定义: 元素个数国定,类型相同的元素集合。 即数组定义时,下标运算符[]中必须时整型常量表达式。 所以:A和B 显然错,下标运算符[]中无值且没有初始化 D. 错,下标运算符不可以用()

11.有以下程序 main() {

int i,t[][3]={9,8,7,6,5,4,3,2,1}; for(i=0;i<3;i++)

printf(\}

判序执行后的输出结果是___B___。

A、753 B、357 C、369 D、751

原因:循环变量 i=0 ,1, 2

第一次i=0 :输出 t[2][0] 3 第二次i=1 :输出 t[1][1] 5 第三次i=2 :输出 t[0][2] 7

12.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是__D____。

A、函数调用可以作为独立的语句存在 B、函数调用可以作为一个函数的实参 C、函数调用可以出现在表达式中 D、函数调用可以作为一个函数的形参 复习要点:函数调用的用法,前三个都是正确的。而函数的形参只能用变量类型,数组类型,指针类型变量等等

3

13.以下函数值的类型是__A____。 fun(float x) {

float y; y=3*x-4; return y; }

A、int B、不确定 C、void D、float

理由:函数定义时,如果不写函数的类型,默认为int

14. 若有下列定义:int a[5],*p=a; 则对a数组元素地址的正确引用是__B____。 A、&a B、p+2 C、a++ D、&a[5]

原因: A)错,数组名a表示数组的首地址,再用取地址运算符“&”,错 C)错,数组名a表示数组的首地址,是国定值,不可以运算 D)错,数组名a表示数组的首地址,是国定值,不可以运算 B)对,p+2 表示引用元素a[2]

15.若有定义和语句: int a[4][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, (*p)[3] = a, *q[4]; q[0]=a[0];

则不能够正确表示a数组元素的表达式是______。 A、(*(p+1))[1] B、a[4][3] C、q[0][1] D、p[2][2] 题目超范围

16.已定义如下函数: int fun(int *p) {return *p;}, 该函数的返回值是__D____。

A、不确定的值 B、形参p中存放的值

C、形参p的地址值 D、形参p所指存储单元的值

复习要点:指针运算符“*”,*p 表示取得指针变量p所指的变量的值,这是p中存储的是地址值

17.能正确表示a和b同时为正或同时为负的逻辑表达式是___D___。 A、(a>=0‖b>=0)&&(a<0‖b<0) B、(a>=0&&b>=0)&&(a<0&&b<0) C、(a+b>0)&&(a+b<=0) D、a*b>0

原因:A、错 (a>=0‖b>=0)表示a和b不一定同时为正。 (a<0‖b<0) 表示a和b

二、填空题(每小题2分,共16分)

4


2012-2013《C语言》期末试卷答案.doc 将本文的Word文档下载到电脑
搜索更多关于: 2012-2013《C语言》期末试卷答案 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219