程序设计基础(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*2 B.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.0 B.3 C.3.5 D.4
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.输出一个数:0 B.输出一个数:3 C.输出两个数:0和-3 D.无限循环,反复输出数
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]=0 D.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.++a C.&a[0]+1 D.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;
struct ss *b;
}x[3]={{5, &x[1]}, {7, &x[2]}, {9, 0}}, *ptr=&x[0]; A.ptr->a B.(++ptr)->a C.x[1].A D.x[0].b->a 15
A.main函数必须出现在其他函数之前 B.main函数中至少必须有一条语句
C.C程序总是从main函数的第一条语句开始执行
D.C程序总是在执行完main函数的最后一条语句后结束 16.已有定义“int a[2][3]={0}, *p=a[0];”,下面表达式中有语法错误的是 。 A.a[0]=1 B.p[0]=1 C.*p=1 D.a[0][0]=1 17.若有如下声明和语句:
int a[3][3], *p[3], k;
for(k=0; k<3;k++) p[k]=&a[k][0];
则表达式*(*(p+1)+2)所引用的是 。 A.a[2][0] B.&a[2][0] C.a[1][2] D.&a[1][2]
18.设有声明语句“int b[3][3]={1,2,3,4,5,6,7,8,9};”,下面语句中不能输出数组元素b[1][2]的值6的是 _。
A.printf("%d ",*(*(b+1)+2)) B.printf("%d ",*(&b[2][0]-1)); C.printf("%d ",*(b[1]+2)); D.printf("%d ",*(b+1)[2]);
19.下面函数中,可以把整型数据以二进制形式写入文件中的函数是________。