高级语言程序设计(一)
(试卷编号:8252,考试时间120分钟,满分120分)
学院:________系:________班级:________姓名:________学号:________考号:________
一、填空 (共30题,合计30分)
1.
C语言表达式!(3<6)||(4<9)的值是________________。
2.
int x=2;z=-x+++1; 则x的值为________________。
3.
若有以下定义和语句: int a[5]={1,3,5,7,9},*p;p=&a[2]; 则++(*p)的值是________________。
4.
若所用变量都已正确定义,请填写以下程序段的输出结果________________.for(i=1;i<=5;i++);  printf("OK\n");
5.
设char a,b;若想通过a&& b运算保留a的第1位和第6位的值,则b的二进制数是________________。
6.
在C语言中,文件的存取是以________________为单位的,这种文件被称为________________文件。
7.
若有以下数组a,数组元素:a[0]~a[9],其值为 9  4  12  8  2  10  7  5  1  3该数组可用的最小下标值是________________。
8.
结构体是不同数据类型的数据集合,作为数据类型,必须先说明结构体________________,再说明结构体变量。
9.
将数组a的首地址赋给指针变量p的语句是________________。
10.
调用 fopen 函数打开一文本文件,在"使用方式"这一项中,为输入而打开需填入________________。
11.
按内存排列顺序, 数组char a[2]中的所有元素是a[1]和________________。
12.
当a=3,b=2,c=1;时,执行以下程序段后 a=________________.if(a>b)  a=b; if(b>c) b=c;else c=b;c=a;
13.
C语言中,________________是程序的基本组成部分。
14.
下列程序的运行结果是________________,main(){unsigned x1; int b=-1;x1=b;printf("%u",x1);}
15.
static int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};其中a[1][2]的值为________________。
16.
数组在内存中占一段连续的存储区,由________________代表它的首地址。
17.
设c语言中,int类型数据占2个字节,则long类型数据占________________个字节,short类型数据占________________个字节。
18.
c语言程序的三种基本结构是:顺序结构,选择结构,________________结构。
19.
int x=y=4,z=2;x=y==z; 则x的值为________________。
20.
函数调用时的实参和形参之间的数据是单向的________________传递。
21.
复制字符串的库函数是________________,只写函数名即可。
22.
以下程序段要求从键盘输入字符,当输入字母为'Y' 时,执行循环体,则括号内应填写________________.ch=getchar(); while(ch ____ 'Y')/*在括号中填写*/ch=getchar();
23.
将函数funl 的入口地址赋给指针变量p的语句是________________。
24.
静态变量和外部变量的初始化是在________________阶段完成的,而自动变量的赋值是在________________时进行的。
25.
在c程序中,只能给指针赋NULL值和________________值。
26.
预处理命令行都必须以________________号开始。
27.
执行下列语句后,*(p+1)的值是________________.char  s[3]="ab",*p;p=s;
28.
如果函数不要求带回值,可用________________来定义函数返回值为空。
29.
feof(fp)函数用来判断文件是否结束,如果遇到文件结束,函数值为________________,否则为________________。
30.
在C语言中,最大整型数是________________。
二、判断 (共15题,合计30分)
  下列描述正确打(√),错误打(×)。
1.
如果有一个字符串,其中第十个字符为'\n',则此字符串的有效字符为9个。(  )
2.
int i,*p=&i;是正确的C说明。(  )
3.
用fopen("file","r+");打开的文件"file"可以进行修改。(  )
4.
C程序中有调用关系的所有函数必须放在同一个源程序文件中。(  )
5.
若有int ⅰ=10, j=0;则执行完语句if (j=0)ⅰ+ +; else ⅰ- -; ⅰ的值为11。(  )
6.
a=(b=4)+(c=6) 是一个合法的赋值表达式。(  )
7.
关系运算符<= 与 == 的优先级相同。(  )
8.
语句 printf("%f%%",1.0/3);输出为 0.333333。(  )
9.
在Turbo C中,下面的定义和语句是合法的:file *fp;fp=fopen("a.txt","r");(  )
10.
在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。(  )
11.
C语言中只能逐个引用数组元素而不能一次引用整个数组。(  )
12.
int a[3][4]={{1},{5},{9}}; 它的作用是将数组各行第一列的元素赋初值,其余元素值为0。(  )
13.
int i=20;switch(i/10){case 2:printf("A");case 1:printf("B");}的输出结果为A。(  )
14.
若有定义和语句:int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++) sum+=a[i][2-i];则sum=21。(  )
15.
共同体变量所占的内存长度等于最长的成员的长度。(  )
三、单项选择 (共40题,合计40分)
  下列选项中,只有一个是正确的。
1.
sizeof(float)是()。
A.
一种函数调用
B.
一个不合法的表达式
C.
一个整型表达式
D.
一个浮点表达式
2.
函数 ftell(fp) 的作用是()。
A.
得到流式文件中的当前位置
B.
移到流式文件的位置指针
C.
初始化流式文件的位置指针
D.
以上答案均正确
3.
以下程序的输出结果是()。main(  ){int  i,j,k,a=3,b=2;i=(--a==b++)?--a:++b;j=a++;k=b;printf("i=%d,j=%d,k=%d\n",i,j,k);}
A.
i=2,j=1,k=3
B.
i=1,j=1,k=2
C.
i=4,j=2,k=4
D.
i=1,j=1,k=3
4.
在一个C程序中()。
A.
main函数必须出现在所有函数之前
B.
main函数可以在任何地方出现
C.
main函数必须出现在所有函数之后
D.
main函数必须出现在固定位置
5.
下面选择中正确的赋值语句是(设char a[5],*p=a;)()。
A.
p="abcd";
B.
a="abcd";
C.
*p="abcd";
D.
*a="abcd";
6.
用下列语句定义a,b,c,然后执行b=a、c='b'+b,则b,c的值是()。 long  a=0xffffff; int  b;  char  c;
A.
0ffffff 和0x61
B.
-1和98
C.
-1和97
D.
指向同一地址
7.
以下对枚举类型名的定义中正确的是()。
A.
enum a={sum,mon,tue};
B.
enum a {sum=9,mon=-1,tue};
C.
enum a={"sum","mon","tue"};
D.
enum a {"sum","mon","tue"};
8.
若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()。
A.
函数调用可以作为独立的语句存在
B.
函数调用可以作为一个函数的实参
C.
函数调用可以出现在表达式中
D.
函数调用可以作为一个函数的形参
9.
位字段数据的单位是()位。
A.
十六进制
B.
八进制
C.
二进制
D.
十进制
10.
以下不符合C语言语法的赋值语句是()。
A.
a=1,b=2
B.
++j;
C.
a=b=5;
D.
y=(a=3,6*5);
11.
语句while(!E);中的表达式!E等价于()。
A.
E==0
B.
E!=1
C.
E!=0
D.
E==1
12.
函数的形式参数隐含的存储类型说明是()。
A.
extern
B.
static
C.
register
D.
auto
13.
以下read函数的调用形式中,参数类型正确的是()。
A.
read(int fd,char *buf,int count)
B.
read(int *buf,int fd,int count)
C.
read(int fd,int count,char *buf)
D.
read(int count,char *buf,int fd)
14.
下面说明不正确的是()。
A.
char a[10]="china";
B.
char a[10],*p=a;p="china"
C.
char *a;a="china";
D.
char a[10],*p;p=a="china"
15.
C程序中的宏展开是在()。
A.
编译时进行的
B.
程序执行时进行的
C.
编译前预处理时进行的
D.
编辑时进行的
16.
以下描述中,正确的是()。
A.
预处理是指完成宏替换和文件包含中指定的文件的调用
B.
预处理指令只能位于C源文件的开始
C.
C源程序中凡是行首以#标识的控制行都是预处理指令
D.
预处理就是完成C编译程序对C源程序第一遍扫描,为编译词法和语法分析作准备
17.
以下不能对二维数组a进行正确初始化的语句是()。
A.
int a[2][3]={0};
B.
int a[][3]={{1,2},{0}};
C.
int a[2][3]={{1,2},{3,4},{5,6}};
D.
int a[][3]={1,2,3,4,5,6};
18.
C语言允许函数类型缺省定义,此时函数值隐含的类型是()。
A.
float
B.
int
C.
long
D.
double
19.
凡是函数中未指定存储类别的局部变量,其隐含的存储类别为()。
A.
自动(auto)
B.
静态(static)
C.
外部(extern)
D.
寄存器(register)
20.
以下不是无限循环的语句为()。
A.
for(y=0,x=1;x>++y;x=i++) i=x;
B.
for(;;x++=i);
C.
while(1){x++;}
D.
for(i=10;;i--) sum+=i;
21.
char *match(char c)是()。
A.
函数定义的头部
B.
函数预说明
C.
函数调用
D.
指针变量说明
22.
以下数值中,不正确的八进制数或十六进制数是()。
A.
while语句的执行流程
0x16
B.
16
C.
-16
D.
0xaaaa
23.
int a[10];给数组a的所有元素分别赋值为1、2、3、……的语句是()。
A.
for(i=1;i<11;i++)a[i]=i;
B.
for(i=1;i<11;i++)a[i-1]=i;
C.
for(i=1;i<11;i++)a[i+1]=i;
D.
for(i=1;i<11;i++)a[0]=1;
24.
设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()。
A.
p=1;
B.
*q=2;
C.
q=p;
D.
*p=5;
25.
下列运算符中是C语言关系运算符的是()。
A.
~
B.
!
C.
&
D.
!=
26.
判断char型变量cl是否为小写字母的正确表达式是()。
A.
'a'<=cl<='z'
B.
(cl>=a)&&(cl<=z)
C.
('a'>=cl)||('z'<=cl)
D.
(cl>='a')&&(cl<='z')
27.
以下语句中,循环次数不为10次的语句是()。
A.
for(i=1;i<10;i++);
B.
i=1;do{i++;}while(i<=10);
C.
i=10;while(i>0){--i;}
D.
i=1;m:if(i<=10){i++;goto m;}
28.
下列程序的输出结果是()。main(  ){char c1=97,c2=98;printf("%d %c",c1,c2);}
A.
97 98
B.
97 b
C.
a 98
D.
a b
29.
以下对C语言函数的描述中,正确的是()。
A.
C程序必须由一个或一个以上的函数组成
B.
C函数既可以嵌套定义又可以递归调用
C.
函数必须有返回值,否则不能使用函数
D.
C程序中有调用关系的所有函数必须放在同一个程序文件中
30.
下列定义数组的语句中不正确的是()。
A.
static int a[2][3]={1,2,3,4,5,6};
B.
static int a[2][3]={{1},{4,5}};
C.
static int a[][3]={{1},{4}};
D.
static int a[][]={{1,2,3},{4,5,6}};
31.
以下标识符中,不能作为合法的C用户定义标识符的是()。
A.
answer
B.
to
C.
signed
D.
_if
32.
假定所有变量均已正确定义,下列程序段运行后x的值是()。k1=1;k2=2;k3=3;x=15;if(!k1)  x--;else  if(k2)    x=4;        else  x=3;
A.
14
B.
4
C.
15
D.
3
33.
求平方根函数的函数名为()。
A.
cos
B.
abs
C.
pow
D.
sqrt
34.
以下程序段 char *alp[]={"ABC","DEF","GHI"}; int j; puts(alp[1]);的输出结果是()。
A.
A
B.
B
C.
D
D.
DEF
35.
C语言中函数调用的方式有()。
A.
函数调用作为语句一种
B.
函数调用作为函数表达式一种
C.
函数调用作为语句或函数表达式两种
D.
函数调用作为语句、函数表达式或函数参数三种
36.
若调用一个函数,且此函数中没有return语句,则正确的说法是:该函数()。
A.
没有返回值
B.
返回若干个系统默认值
C.
能返回一个用户所希望的值
D.
返回一个不确定的值
37.
先用语句定义字符型变量c,然后要将字符a赋给c,则下列语句中正确的是()。
A.
c='a';
B.
c="a";
C.
c="97";
D.
C='97'
38.
以下叙述中不正确的是()。
A.
预处理命令行都必须以#号开始
B.
在程序中凡是以#号开始的语句行都是预处理命令行
C.
C程序在执行过程中对预处理命令行进行处理
D.
以下是正确的宏定义      #define IBM_PC
39.
当说明一个结构体变量时系统分配给它的内存是()。
A.
各成员所需内存量的总和
B.
结构中第一个成员所需内存量
C.
成员中占内存量最大者所需的容量
D.
结构中最后一个成员所需内存量
40.
若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是()。
A.
"ab++"
B.
"wb+"
C.
"rb+"
D.
"ab"
四、多项选择 (共10题,合计20分)
  下列选项中,有一个或多个是正确的。
1.
以下对二维数组a进行正确初始话的是()。
A.
static char word[]='Turbo\0';
B.
static char word[]={'T','u','r','b','o','\0'};
C.
static char word[]={"Turbo\0"};
D.
static char word[]="Turbo\0";
2.
以下叙述正确的是()。
A.
C语言严格区分大小写英文字母
B.
C语言用";"作为语句分隔符
C.
C程序书写格式自由,一行内可以写几个语句,一个语句也可以写在几行上.
D.
可以使用/*…*/对C程序中的任何部分作注释
3.
以下关于typedef的叙述正确的是()。
A.
用typedef可以定义各种类型名,但不能用来定义变量
B.
用typedef可以增加新类型
C.
用typedef只是将已存在的类型用一个新的名字来代表
D.
使用typedef便于程序的通用
4.
以下对switch语句和break语句中描述错误的有()。
A.
在switch语句中必须使用break语句
B.
break语句只能用于switch语句
C.
在switch语句中,可以根据需要使用或不使用break语句
D.
break语句是switch语句的一部分
5.
在定义int a[2][3];之后,对a的引用正确的有()。
A.
a[0][2]
B.
a[1,3]
C.
a[1>2][!1]
D.
a[2][0]
6.
以下4个选项中,可以看作是一条语句的有()。
A.
{;}
B.
a=0,b=0,c=0;
C.
if(a>0);
D.
if(b==0) m=1;n=2;
7.
以下描述错误的是()。
A.
continue语句的作用是重新开始一次循环体的执行
B.
只能在循环体内和switch语句体内使用break语句
C.
在循环体内使用break语句和continue语句的作用相同
D.
从多重循环嵌套中退出是,只能使用goto语句
8.
对do-while语句描述正确的是()。
A.
do-while语句构成的循环可以使用break语句退出循环
B.
do-while语句构成的循环必须使用break语句退出循环
C.
do-while语句构成的循环,当while中的表达式值为非零时结束循环
D.
do-while语句构成的循环,当while中的表达式值为零时结束循环
9.
下列选项中是C语言合法标志符的有()。
A.
good_morning
B.
main
C.
stdio.h
D.
8abc
10.
以下关于数组描述错误的是()。
A.
数组的大小是固定的,但可以有不同的类型的数组元素
B.
数组的大小是可变的,但所有数组元素的类型必须相同
C.
数组的大小是固定的,所有数组元素的类型必须相同
D.
数组的大小是可变的,可以有不同的类型的数组元素

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。