西安交通大学习题答案《程序设计基础》答案.docx
《西安交通大学习题答案《程序设计基础》答案.docx》由会员分享,可在线阅读,更多相关《西安交通大学习题答案《程序设计基础》答案.docx(30页珍藏版)》请在冰豆网上搜索。
西安交通大学习题答案《程序设计基础》答案
《程序设计基础》习题一答案
一、单项选择题(本大题共20小题,每小题2分,共40分)
1.inta[10];合法的数组元素的最小下标值为()。
A:
10
B:
9
C:
1
D:
0
答案:
D
2.以下运算符中优先级最低的是()。
A:
&&
B:
&
C:
||
D:
|
答案:
C
3.若使用一维数组名作函数实参,则以下正确的说法是()。
A:
必须在主调函数中说明此数组的大小
B:
实参数组类型与形参数组类型可以不匹配
C:
在被调用函数中,不需要考虑形参数组的大小
D:
实参数组名与形参数组名必须一致
答案:
A
4.已知函数的调用形式:
fread(buffer,size,count,fp);其中buffer
代表的是()。
A:
一个整数,代表要读入的数据项总数
B:
一个文件指针,指向要读的文件
C:
一个指针,指向要读入数据的存放地址
D:
一个存储区,存放要读的数据项
答案:
C
5.对以下说明语句inta[10]={6,7,8,9,10};的正确理解是()。
A:
将5个初值依次赋给a[1]至a[5]
B:
将5个初值依次赋给a[0]至a[4]
C:
将5个初值依次赋给a[6]至a[10]
D:
因为数组长度与初值的个数不相同,所以此语句不正确
答案:
B
6.下列程序的输出结果是()。
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{
case1:
switch(y)
{
case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
A:
a=1,b=0
B:
a=2,b=1
C:
a=1,b=1
D:
a=2,b=2
答案:
B
7.下列程序的输出结果为()。
main()
{intm=7,n=4;
floata=38.4,b=6.4,x;
x=m/2+n*a/b+1/2;
printf("%f\n",x);
}
A:
27.000000
B:
27.500000
C:
28.000000
D:
28.500000
答案:
A
8.若k为int型变量,则以下程序段的执行结果是()。
k=-8567;printf("|%06D|\n",k);
A:
格式描述符不合法,输出无定值
B:
输出为|%06D|
C:
输出为|0-8567|
D:
输出为|-8567|
答案:
B
9.下列程序段的输出结果为()。
intx=3,y=2;
printf("%d",(x-=y,x*=y+8/5));
A:
1
B:
7
C:
3
D:
5
答案:
C
10.chara[]="Thisisaprogram.";输出前5个字符的语句是()。
A:
printf("%.5s",a);
B:
puts(a);
C:
printf("%s",a);
D:
a[5*2]=0;puts(a);
答案:
A
11.下列程序的输出结果是()。
main()
{charc1=97,c2=98;
printf("%d%c",c1,c2);
}
A:
9798
B:
97b
C:
a98
D:
ab
答案:
B
12.以下选项中合法的实型常数是()。
A:
5E2.0
B:
E-3
C:
.2E0
D:
1.3E
答案:
C
13.C语言中的文件类型只有()。
A:
索引文件和文本文件两种
B:
ASCII文件和二进制文件两种
C:
文本文件一种
D:
二进制文件一种
答案:
B
14.以下叙述不正确的是()。
A:
一个C源程序可由一个或多个函数组成
B:
一个C源程序必须包含一个main函数
C:
C程序的基本组成单位是函数
D:
在C程序中,注释说明只能位于一条语句的后面
答案:
D
15.以下运算符中,优先级最高的运算符是()。
A:
||
B:
%
C:
!
D:
==
答案:
C
16.执行以下程序段后,输出结果和a的值是()。
inta=10;
printf("%d",a++);
A:
10和10
B:
10和11
C:
11和10
D:
11和11
答案:
B
17.能正确表示逻辑关系:
"a≥10或a≤0"的C语言表达式是()。
A:
a>=10ora<=0
B:
a>=0|a<=10
C:
a>=10&&a<=0
D:
a>=10‖a<=0
答案:
D
18.以下叙述中错误的是()。
A:
二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B:
在程序结束时,应当用fclose函数关闭已打开的文件
C:
在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D:
不可以用FILE定义指向二进制文件的文件指针
答案:
D
19.下列程序段的输出结果为()。
floatk=0.8567;
printf("%06.1d%%",k*100);
A:
0085.6%%
B:
0085.7%
C:
0085.6%
D:
.857
答案:
B
20.若有int*p=(int*)malloc(sizeof(int));则向内存申请到内存
空间存入整数123的语句为()。
A:
scanf("%d",p);
B:
scanf("%d",&p);
C:
scanf("%d",*p);
D:
scanf("%d",**p);
答案:
A
21.经过下列的语句intj,a[10],*p;定义后,下列语句中合法的是()。
A:
p=p+2;
B:
p=a[5];
C:
p=a[2]+2;
D:
p=&(j+2);
答案:
A
22.以下对二维数组a的正确说明是()。
A:
inta[3][]
B:
floata(3,4)
C:
doublea[1][4]
D:
floata(3)(4)
答案:
C
23.经下列语句定义后,sizeof(x),sizeof(y),sizeof(a),sizeof(b)在
微机上的值分别为()。
charx=65;
floaty=7.3;
inta=100;
doubleb=4.5;
A:
2,2,2,4
B:
1,2,2,4
C:
1,4,2,8
D:
2,4,2,8
答案:
C
24.以下叙述中不正确的是()。
A:
一个好的程序应该有详尽的注释
B:
在C程序中,赋值运算符的优先级最低
C:
在C程序中,j++;是一条赋值语句
D:
C程序中的#include和#define均不是C语句
答案:
B
25.应用缓冲文件系统对文件进行读写操作,关闭文件的函数名为()。
A:
fclose()
B:
close()
C:
fread()
D:
fwrite
答案:
A
26.staticstruct{inta1;floata2;chara3;}a[10]={1,3.5,'A'};
说明数组a是地址常量,它有10个结构体型的下标变量,采用静态存
储方式,其中被初始化的下标变量是()。
A:
a[1]
B:
a[-1]
C:
a[0]
D:
a[10]
答案:
C
27.函数的形式参数隐含的存储类型说明是()。
A:
extern
B:
static
C:
register
D:
auto
答案:
D
28.可将C源程序存在磁盘上,还可将数据按数据类型分别以什么的
形式存在磁盘上()。
A:
内存
B:
缓冲区
C:
文件
D:
寄存器
答案:
C
29.若用数组名作为函数的实参,传递给形参的是()。
A:
数组的首地址
B:
数组第一个元素的值
C:
数组中全部元素的值
D:
数组元素的个数
答案:
A
30.doublex;scanf("%lf",&x);不可以赋值给x变量的常量是()。
A:
123
B:
100000
C:
A'
D:
"abc"
答案:
D
31.以下的选择中,正确的赋值语句是()。
A:
a=1,b=2
B:
j++
C:
a=b=5;
D:
y=int(x)
答案:
C
32.要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,
下面符合此要求的函数调用是()。
A:
fopen("A:
\user\abc.txt","r")
B:
fopen("A:
\\user\\abc.txt","r+")
C:
fopen("A:
\user\abc.txt","rb")
D:
fopen("A:
\\user\\abc.txt","w")
答案:
B
33.与实际参数为实型数组名相对应的形式参数不可以定义为()。
A:
floata[];
B:
float*a;
C:
floata;
D:
float(*a)[3];
答案:
C
34.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为()。
A:
自动(auto)
B:
静态(static)
C:
外部(extern)
D:
寄存器(register)
答案:
A
35.下面有关for循环的正确描述是()。
A:
for循环只能用于循环次数已经确定的情况
B:
for循环是先执行循环循环体语句,后判断表达式
C:
在for循环中,不能用break语句跳出循环体
D:
for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
答案:
D
36.下列语句的结果是()。
main()
{intj;
j=3;
printf("%d,",++j);
printf("%d",j++);
}
A:
3,3
B:
3,4
C:
4,3
D:
4,4
答案:
D
37.执行下列程序后,其输出结果是()。
main()
{inta=9;
a+=a-=a+a;
printf("%d\n",a);
}
A:
18
B:
9
C:
-18
D:
-9
答案:
C
38.以下函数调用语句中实参的个数是()。
func((e1,e2),(e3,e4,e5));
A:
2
B:
3
C:
5
D:
语法错误
答案:
A
39.下列四个选项中,均是C语言关键字的选项是()。
A:
autoenuminclude
B:
switchtypedefcontinue
C:
signedunionscanf
D:
ifstructtype
答案:
B
40.下列数组说明中,正确的是()。
A:
staticcharstr[]="China";
B:
staticcharstr[];str="China";
C:
staticcharstr1[5],str2[]={"China"};str1=str2;
D:
staticcharstr1[],str2[];str2={"China"};strcpy(str1,str2);
答案:
A
41.C语言中,要求运算数必须是整型的运算符是()。
A:
^
B:
%
C:
!
D:
>
答案:
B
42.以下不能正确定义二维数组的选项是()。
A:
inta[2][2]={{1},{2}};
B:
inta[][2]={1,2,3,4};
C:
inta[2][2]={{1},2,3};
D:
inta[2][]={{1,2},{3,4}};
答案:
D
43.设intx=1,y=1;表达式(!
x||y--)的值是()。
A:
0
B:
1
C:
2
D:
-1
答案:
B
44.下列选项中正确的语句组是()。
A:
chars[8];s={"Beijing"};
B:
char*s;s={"Beijing"};
C:
chars[8];s="Beijing";
D:
char*s;s="Beijing";
答案:
D
45.若有inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5
的语句为()。
A:
printf("%d",*(a+5));
B:
printf("%d",p[5]);
C:
printf("%d",*(p+5));
D:
printf("%d",*p[5]);
答案:
D
46.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的
数据类型为()。
A:
int
B:
float
C:
double
D:
不确定
答案:
C
47.以下叙述正确的是()。
A:
在C程序中,main函数必须位于程序的最前面
B:
C程序的每行中只能写一条语句
C:
C语言本身没有输入输出语句
D:
在对一个C程序进行编译的过程中,可发现注释中的拼写错误
答案:
C
48.inta=1,b=2,c=3;
if(a>b)a=b;
if(a>c)a=c;
则a的值为()。
A:
1
B:
2
C:
3
D:
不一定
答案:
A
49.C语言中,定义结构体的保留字是()。
A:
union
B:
struct
C:
enum
D:
typedef
答案:
B
50.逻辑运算符两侧运算对象的数据类型()。
A:
只能是0或1
B:
只能是0或非0正数
C:
只能是整型或字符型数据
D:
可以是任何类型的数据
答案:
D
51.以下叙述中正确的是()。
A:
C语言的源程序不必通过编译就可以直接运行
B:
C语言中的每条可执行语句最终都将被转换成二进制的机器指令
C:
C源程序经编译形成的二进制代码可以直接运行
D:
C语言中的函数不可以单独进行编译
52.下列程序的输出结果是()。
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{
case1:
switch(y)
{
case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
A:
a=1,b=0
B:
a=2,b=1
C:
a=1,b=1
D:
a=2,b=2
答案:
B
53.若二维数组a有m列,则在a[i][j]前的元素个数为()。
A:
j*m+i
B:
i*m+j
C:
i*m+j-1
D:
i*m+j+1
答案:
B
54.用下列语句定义a,b,c,然后执行b=a、c='b'+b,则b,c的值是()。
longa=0xffffff;
intb;charc;
A:
0ffffff和0x61
B:
-1和98
C:
-1和97
D:
指向同一地址
答案:
C
55.在调用函数时,如果实参是简单变量,它与对应形参之间的数据
传递方式是()。
A:
地址传递
B:
单向值传递
C:
由实参传给形参,再由形参传回实参
D:
传递方式由用户指定
答案:
B
56.以下数值中,不正确的八进制数或十六进制数是()。
A:
0x16
B:
16
C:
-16
D:
0xaaaa
答案:
C
57.以下运算符中,优先级最高的运算符是()。
A:
*=
B:
>=
C:
(类型)
D:
+
答案:
C
58.以下选项中,与k=n++完全等价的表达式是()。
A:
k=n,n=n+1
B:
n=n+1,k=n
C:
k=++n
D:
k+=n+1
答案:
A
59.结构体类型的定义允许嵌套是指()。
A:
成员是已经或正在定义的结构体型
B:
成员可以重名
C:
结构体型可以派生
D:
定义多个结构体型
答案:
A
60.用户定义的函数不可以调用的函数是()。
A:
非整型返回值的
B:
本文件外的
C:
main函数
D:
本函数下面定义的
答案:
C
二.多选题(本大题共20小题,每小题2分,共40分)
1.以下对C语言中的函数描述不正确的有()。
A:
可以嵌套定义,不可以嵌套调用
B:
不可以嵌套定义,可以嵌套调用
C:
可以嵌套定义,也可以嵌套调用
D:
嵌套定义和嵌套调用都不允许
答案:
ACD
2.以下叙述正确的是()。
A:
预处理命令行都必须以"#"开始
B:
在程序中凡是以"#"开始的语句行都是预处理命令行
C:
C程序在执行过程中对预处理命令行进行处理
D:
#defineABCD是正确的宏定义
答案:
ABD
3.以下描述错误的是()。
A:
continue语句的作用是重新开始一次循环体的执行
B:
只能在循环体内和switch语句体内使用break语句
C:
在循环体内使用break语句和continue语句的作用相同
D:
从多重循环嵌套中退出是,只能使用goto语句
答案:
CD
4.有定义语句:
intx,y;若要通过scanf("%d,%d",&x,&y);
语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,
正确的有()。
A:
1112<回车>
B:
11,<空格>12<回车>
C:
11,12<回车>
D:
11,<回车>12<回车>
答案:
BCD
5.以下合法的十六进制数是()。
A:
oxff
B:
0Xabc
C:
0x01
D:
0X9X
答案:
BC
6.以下描述正确的是()。
A:
调用函数时,实参可以是表达式
B:
调用函数时,实参与形参可以共用内存单元
C:
调用函数时,将为形参分配内存单元
D:
调用函数时,实参与形参的类型必须一致
答案:
ACD
7.以下选项中合法的表达式是()。
A:
0<=x<100
B:
i=j==0
C:
(char)(65+3)
D:
x+1=x+1
答案:
ABC
8.设有以下定义
inta=0;
doubleb=1.25;
charc='A';
#defined2
则下面语句中正确的是()。
A:
a++;
B:
b++;
C:
c++;
D:
d++;
答案:
ABC
9.以下对二维数组a进行正确初始话的是()。
A:
staticcharword[]='Turbo\0';
B:
staticcharword[]={'T','u','r','b','o','\0'};
C:
staticcharword[]={"Turbo\0"};
D:
staticcharword[]="Turbo\0";
答案:
BCD
10.符合C语言语法的实型常量是()。
A:
1.2E0.5
B:
3.14.159E
C:
.5E-3
D:
E15
答案:
ABD
11.若a,b,c,d都是int型变量且初值为0,以下选项中正确的赋值语句是()。
A:
a=b=c=d=100;
B:
d++;
C:
c+b;
D:
d=(c=22)-(b++);
答案:
ABD
12.以下关于数组描述错误的是()。
A:
数组的大小是固定的,但可以有不同的类型的数组元素
B:
数组的大小是可变的,但所有数组元素的类型必须相同
C:
数组的大小是固定的,所有数组元素的类型必须相同
D:
数组的大小是可变的,可以有不同的类型的数组元素
答案:
ABD
13.以下正确的if语句形式是()。
A:
if(x>y&&x!
=y);
B:
if(x==y)x+=y;
C:
if(x!
=y)scanf("%d",&x)elsescanf("%d",&y);
D:
if(x答案:
ABD
14.以下叙述中正确的是()。
A:
一个C源程序可由一个或多个函数组成
B:
一个C源程序必须包含一个main()函数
C:
C源程序的基本组成单位是函数
D:
在C源程序中,注释说明只能位于一条语句的最后
答案:
ABC
15.以下合法的十六进制数是()。
A:
oxff
B:
0Xabc
C:
0x01
D:
0X9X
答案:
BC
16.以下选项中,合法的字符常量是()。
A:
'\t'
B:
'\17'
C:
"n"
D:
'\xaa'
答案:
ABD
17.以下用户标识符,其中合法的是()。
A:
return
B:
f2_G3
C:
A3-3
D:
abc
答案:
BD
18.以下可以定义为用户标识符的有()。
A:
scanf
B:
short
C:
_3com_
D:
int
答案:
AC
19.以下选项中合法的表达式是()。
A:
0<=x<100
B:
i=j==0
C:
(char)(65+3)
D:
x+1=x+1
答案:
ABC
20.以下不符合C语言语法的实型常量是()。
A:
1.2E0.5
B:
3.14.159E
C:
.5E-3
D:
E15
答案:
ABD
21.4个选项中,可以看作是一条语句的有()。
A:
{;}
B:
a=0,b=0,c=0;
C:
if(a>0);
D:
if(b==0)m=1;n=2;
答案:
ABC
22.以下选项中,合法的字符常量是()。
A:
'\t'
B:
'\17'
C:
"n"
D:
'\xaa'
答案:
ABD
23.以下描述正确的是()。
A:
使用while和do-while循环时,循环变量初始话的操作应在循环体语句之前完成
B:
while循环是先判断表达式,后执行循环语句
C:
do-while和for循环均是先执行循环语句,后判断表达式
D:
for,while和do-while循环中的循环体均可以由空语句构成
答案:
ABD
24.以下关于数组描述错误的是()。
A:
数组的大小是固定的,但可以有不同的类型的数组元素
B:
数组的大小是可变的,但所有数组元素的类型必须相同
C:
数组的大小是固定的,所有数组元素的类型必须相同
D:
数组的大小是可变的,可以有不同的类型的数组元素
答案:
ABD
25.以下选项中不是C语言合法整数的是()。
A:
10110
B:
0386
C:
0Xffa
D:
x2a2
答案:
BD
26.若以下选项中的变量已正确定义,则不正确的赋值语句是()。
A:
x1=26.8%3
B:
x=3*x+x
C:
x3=0x12
D:
x4=1+2=3;
答案:
AD
27.下列对逻辑运算符两侧的运算对象的数据类型描述不正确的是()。
A:
只能是0或1
B:
只能是0或非0正数
C:
可以是整型或字符型数据
D:
可以是任何类型的数据
答案:
ABD
28.下列选项中是C语言合法标志符的有()。
A:
good_morning
B:
main
C:
stdio.h
D:
8abc
答案:
AB
29.以下对switch语句和break语句中描述错误的有()。
A:
在switch语句中必须使用break语句
B:
break语句只能用于switch语句
C:
在switch语句中,可以根据需要使用或不使用break语句
D:
break语句是switch语句的一部分
答案:
ABD
30.以下叙述中正确的是()。
A:
一个C源程序可由一个或多个函数组成
B:
一个C源程序必须包含一个main()函数
C:
C源程序的基本组成单位是函数
D:
在C源程序中,注释说明只能位于一条语句的最后
答案:
ABC
31.下对C语言中的函数描述不正确的有()。
A:
可以嵌套定义,不可以嵌套调用
B:
不可以嵌套定义,可以嵌套调用
C:
可以嵌套定义,也可以嵌套调用
D:
嵌套定义和嵌套调用都不允许
答案:
ACD
32.设有以下定义
inta=0;
doubleb=1.25;
charc='A';
#defined2
则下面语句中正确的是()。
A:
a++;
B:
b++;
C: