计算机学院2015-2016学年第2学期C语言程序设计考试试卷
A卷(或B卷): A卷 闭卷(或开卷):闭卷 考试时间:2016年 6 月 21 日 专业: 班级: 学号: 姓名:
题号 题分 得分 一 10 二 10 三 10 四 10 五 20 六 20 七 20 总分 100 核对人 注意:试卷后面附有运算符的优先级和结合性表。
试卷所有问题都假设基于32位的系统。
得分 评卷人 一、 单项选择题(在下面每小题的A、B、C、D四个选项中,只有一个选项
是正确的,请选择正确的选项并填写到括号内,选择正确得分。本大题共10 小题,每小题1分,共10分。)
【 】
1、有声明char c; int a;下列语句非法的是 。
A、 a+=c; B、c=2*c-1; C、putchar(c); D、printf(c); 2、下列转义序列中,表示空字符(ASCII值为0)的是 。
A、 ‘\\0’;
B、‘\\n’;
C、‘\\r’;
D、‘\\t’;
【 】
【 】
3、常量‘1’、 1、 1.0的类型分别是 。
A、char、int、float
B、int、char、float
【 】
C、char、int、double D、int、char、double 4、局部变量int a;的存储类型为 。
A、register
B、extern
C、static D、auto
5、用scanf(\语句读入三个整数1、2、3到变量a、b、c中,正确的输入序列是 。 【 】
A、123
B、1 2 3
C、1,2,3 D、1.2.3
【 】
6、char s[]=“HUST”,数组s的元素个数是 。
A、4
B、5
C、32
D、40
7、二维数组a有M行N列,则在a[i][j]之前的元素个数是 。
A. j*N+i B. i*N+j C. i*N+j-1 D. i*N+j+1
【 】
8、有声明const int ci=10, cj=10; const int *pci=&ci; const int * const cpci=&ci;下列语句合法的是 。 【 】
A、pci=&cj; B、*cpci=10;
C、cpci=&cj;
D、*pci=8;
9、表达式 1|2|4>>2 的值是 。 【 】
A、0
B、1
C、3
D、4
10、设有声明: int a=0x12345678, *pa=&a; unsigned char *pc=(unsigned char *)pa;
C语言程序设计试卷 共11页 第 1页
则表达式*(pc+2)的值是 。 【 】 A、0x12 得分 评卷人 B、0x34
C、 0x56
D、0x78
二、 多项选择题(下面每小题的A、B、C、D备选项中,有两个或两个以上的选项是正确的,请选择正确的选项并填写到括号内。本大题共5小题,每小题2分,共10分。)
【 】
1、 下列属于标识符的有 。
A、3days B、float_ C、num-people D、integer
2、 下列声明及初始化,合法的有 。 【 】
A、short int a[5]={1,2,3}; B、int b[3]={1,2,3,4,5}; C、long int c[]={1,2,3,4}; D、double d[] = {}; 3、 设有声明: int i=1,j=2; int *p=&i, *q=&j;
则下列语句不合法的有: 。 A、*p=q; B、i=*q; C、q=&p; D、*p=&q;
4、 打开二进制文件a.dat的语句有 。 A、f=fopen(\B、f=fopen(\
C、f=fopen(\D、f=fopen(\
【 】
【 】
5、下列变量中,生命周期相同的有 。 【 】
A、自动变量 B、静态局部变量 C、全局变量 D、静态全局变量
得分 评卷人 三、 填空题(本大题共10小题,每小题1分,共10分。)
本大题的第1题至第5题请参考下面的说明,写出各表达式的值。各题的表达式相互无关。 char u[] = \char v[] = \struct ST { int a; char *s;
}a[] = {{100,u},{200,v}}, *p=a;
题号 1 2 3 4 5 表达式 (++p)->a *(++p)->s p->s[2]++ *++p->s ++*p->s 值 C语言程序设计试卷 共11页 第 2页
本大题的第6题至第10题请参考下面的说明,写出各表达式的类型与值并填入相应的空格内,各题的表达式相互无关。假设数组a的地址为500。
double a[] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}; double *p = a + 4;
题号 例1 例2 6 7 8 9 10 得分 评卷人
四、 判断改错题 (先判断下面各题代码是否存在错误;如果存在错误,请改正之;否则不必改。本大题共5小题,每小题2分,共10分。)
1、下列程序计算两个数的和。
#include
float add(float, float); int main(void) {
printf(\ return 0; }
float add(float a, float b) {
return a + b; }
2、以下函数change用于将字符变量的值设置为‘N’,例如函数调用change(a)能将a的值设置为‘N’。
void change(char ch){
ch=‘N’; } 3、以下程序段将小写字母转换成大写字母。
if ('a' <= c <= 'z') c += 'A' - 'a';
表达式 p[3] p *p+10 *(a+5) *(p+4) p[-1] a+2 double 类型 double * 值 8.0 532 4、以下程序片段中有带参的宏,实现计算x的平方,如本例中s应等于49。 #define SQ(x) x*x float s;
C语言程序设计试卷 共11页 第 3页
s = SQ(9-2);
5、 以下代码是typearg.c文件的内容,其中的main函数读入用户在命令行下输入的参数并将它们原样输出,如在命令行下输入typearg hello world ,将输出hello world。
#include
int main(int argc, char *argv[]) {
int i;
for(i=0;i printf(\ return 0; } 得分 评卷人 五、简答题(本大题共5小题,每小题4分,共20分) 1、用一条语句(利用自增或自减)替代下列三条语句,不能使用逗号表达式。 b = b + 1; c = a – b; a = a + 1; 2、写一个表达式,取整数x最右边的m位。如0x123456fa,取最右边5位等于0x0000001a; 3、请给出下列代码中函数调用的顺序。注意本题不要求写出输出结果,只需按函数调用顺序写 出函数调用语句(含库函数),如main(), Displayhello(), ……。(这段代码中的函数包括main、printf、Displayworld、Displayhello) #include void Displayworld(void){ printf(\} void Displayhello(void){ printf(\ Displayworld(); } int main(void){ Displayhello(); Displayworld(); C语言程序设计试卷 共11页 第 4页