年 月 日 ______系______级______班 学号________姓名________
…………………………………⊙……密………………………………………⊙……封……………………………………⊙…线…………………………………
命题老师: 计算机学院基础教学部
- PAGE 1 -
程序设计基础(C语言)考试卷(本科样卷)
(理论部分)考试时间120分钟,答案请写在答题卡上
一、选择题 (每小题2分,共40分)
1.以下语句中不包含关键字的是( )。
A.x=sqrt(2);
B.while(x!=0)x--;
C.if(x<0)x=-x;
D.return x;
2.执行以下程序时,
#include
main()
{ int a; float b;
scanf("%3d%f",&a,&b);printf("%d\t%f",ab);
}
若要求变量a和b分别从键盘获得输入值45和678.0,则以下四种输入数据中(凵代表”空格”键,↙代表”回车”键),不能达到该要求的输入数据是( )。
A.45凵678↙B.45↙678↙
C.45,678↙D.045678↙
3.已知有声明int x=2:,以下表达式中值不等于8的是( )。
A.x+=2,x*2B.x+=x*=X
C.(x+7)/2*((x+1)%2+1)D.x*7.2/x+1
4.已知有声明”int a=3, b=4, c;”,则执行语句”c=1/2*(a+b);”后,c的值是( )。
A.0B.3C.3.5D.
5.已知字母A的ASCII码是65,字母a的ASCII码是97,变量c中存储了一个大写字母的编码。若要求将c中大写字母编码转换成对应小写字母编码,则以下表达式中不能实现该功能的是( )。
A.c=tolower(c)B.c=c+32
C.c=c-’A’+’a’D.c= (c +’A’)%26-’a’
6.已有声明”char *s1="China", s2[10], *s3="Nanjing"; *s4;”,以下字符串赋值语句在执行时可能出现错误的是( )。
A.strcpy(s3, s1);B.strcpy(s4, s1);
C.strcpy(s2, s1);D.strcpy(s2, s3);
7.执行以下程序后的结果是( )。
#include
void main()
{ int x=3;
Do
{
printf("%d\t", x=x-3);
}while(!x);
}
A.输出一个数:0B.输出一个数:3
C.输出两个数:0和-3D.无限循环,反复输出数
8.设有声明”int p[10]={1, 2}, i=0;”,以下语句中与”p[i]=p[i+1], i++;”等价的是( )。
A.p[i]=p[i+1];B.p[++i]=p[i];
C.p[++i]=p[i+1];D.i++, p[i-1]=p[i];
9.已知有声明”int m[]={5,4,3,2,1},i=0;”,下列对m数组元素的引用中,错误的是( )。
A.m[++i]B.m[5]
C.m[2*2]=0D.m[m[4]]
10.若有函数fun的定义为
void fun(…)
{static int a=1;
…
}
则下列叙述中不正确的是( )。
A.在每次调用fun函数时,变量a的值是上次调用结束时a的值
B.在fun函数之外,可以用变量名a直接引用a的值
C.在其他函数中,可以出现声明double a=2.5;
D.fun函数的形式参数不能取名为a
11.若函数调用时的实参为变量,则以下关于函数形参和实参的叙述中正确的是( )。
A.实参和其对应的形参占用同一存储单元
B.形参不占用存储单元
C.同名的实参和形参占用同一存储单元
D.形参和实参占用不同的存储单元
12.已有声明”int a[5];”,以下表达式中不能正确取得a[1]指针的是( )。
A.&a[1]B.++aC.&a[0]+1D.a+l
13.若有如下声明和语句:
int t[3][3], *pt[3], k;
for(k=0; k<3;k++) pt[k]=&t[k][0];
则表达式*(*(pt+1)+2)所引用的是( )。
A.t[2][0]B.&t[2][0]C.t[1][2]D.&t[1][2]
14.若有如下的类型定义和变量声明,则在给出的选项中值不为7的表达式是( )。
struct ss
{ int a;