一、选择题(每小题2分,共34分)
1. 以下不合法的用户标识符是__c___
a、j2_keyb、double
c、4dd、_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、0b、264
c、144d、-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("%d",(a=2)&&b=-2));的输出结果是___b___
a、2b、1
c、-4d、-2
复习要点:逻辑运算符” &是”与”运算,即只有两个操作数为真,结果才为真。在判断两个操作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},因为在语法上, a=1; }是一条复合语句,语法上不可能和复合语句外的语句配对
8.以下循环体的执行次数是__c___
main()
int i,j;
for (i=0,j=1; i<=j+1;i+=2,j--)
printf("%d ",i);
a、3b、2
c、1d、0
原因:循环控制表达式 i<=j+1为假时,循环结束
第一次判断 :i=0, j=1:i<=j+1为真。执行1次
第二次判断 :i=2, j=0:i<=j+1为假,退出
9.int a[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[4d. float a(5)(4);
复习要点:数组的定义: 元素个数国定,类型相同的元素集合。
即数组定义时,下标运算符[]中必须时整型常量表达式。
所以:a和b 显然错,下标运算符[]中无值且没有初始化
d. 错,下标运算符不可以用()
11.有以下程序
main()
int i,t[3]=;
for(i=0;i<3;i++)
printf("%d",t[2-i][i]);
判序执行后的输出结果是___b___
a、753b、357
c、369d、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、函数调用可以作为一个函数的形参
复习要点:函数调用的用法,前三个都是正确的。而函数的形参只能用变量类型,数组类型,指针类型变量等等
13.以下函数值的类型是__a___
fun(float x)
float y;
y=3*x-4;
return y;
a、intb、不确定
c、voidd、float
理由:函数定义时,如果不写函数的类型,默认为int
14. 若有下列定义:int a[5],*p=a; 则对a数组元素地址的正确引用是__b___
a、&ab、p+2
c、ad、&a[5]
原因: a)错,数组名a表示数组的首地址,再用取地址运算符“&”错
c)错,数组名a表示数组的首地址,是国定值,不可以运算
d)错,数组名a表示数组的首地址,是国定值,不可以运算
b)对,p+2 表示引用元素a[2]
15.若有定义和语句:
int a[4][3] =p)[3] =a, *q[4];
q[0]=a[0];
则不能够正确表示a数组元素的表达式是___
a、(*p+1))[1b、a[4][3]
c、q[0][1d、p[2][2]
题目超范围
16.已定义如下函数: int fun(int *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分)
1.表示条件:10 2. 若函数调用语句为f(a, b, f(a+b,a-b,b));则函数f的参数个数是___3
分别为a, b和f(a+b,a-b,b)。第三个参数是一个函数调用
3.若有以下整型的a数组:int a[10]=;
则:a[a[9]]的值为___8___a[a[4]+a[8]]的值为___8___
计算过程:
a[9] 的值 3
a[a[9]]即为 a[3]. 其值为8
a[4]+a[8]为 2+1
c语言试卷c
a.p q c.p n1 10 若有说明语句 int a,b,c,d c 则能从键盘读入三个整数分别赋给变量a b c的语句是。a.scanf d d d a,b,d b.scanf d d d a,b,d c.scanf d d d a,b,dd.scanf d d d a,b,d 11 c语言标...
C语言试卷A
青海大学试卷 a卷 系别 班级学号姓名。考试课程 程序设计基础 c 考试日期 2009 年 12月17日。注 所有答案均写在答题卡上,答在试卷上不得分,考试结束后试卷和答题卡一并交回。一 填空题 每空1分,共16分 1 整型静态数组没有初始化,也没有赋值,此时数组元素的值均为 0 2 数组在内存中占...
C语言试卷
一 填空共5题 共计10分 第1题 2.0分 题号 339 赋值运算符的结合性是由 右 至 左 第2题 2.0分 题号 925 在c 语言结构化程序中,函数 是程序的基本组成单元 在c 语言的面向对象设计框架中,对象 是程序的基本组成单元。第3题 2.0分 题号 926 c 语言的参数传递机制包括传...