武汉地大 计算机高级语言C作业答案.docx
《武汉地大 计算机高级语言C作业答案.docx》由会员分享,可在线阅读,更多相关《武汉地大 计算机高级语言C作业答案.docx(24页珍藏版)》请在冰豆网上搜索。
武汉地大计算机高级语言C作业答案
计算机高级语言C作业答案
总分:
100分考试时间:
分钟
单选题
说明:
1.软件与程序的区别是_____。
(4分)
(A)程序价格便宜、软件价格昂贵
(B)程序是用户自己编写的,而软件是由厂家提供的
(C)程序是用高级语言编写的,而软件是由机器语言编写的
(D)软件是程序以及开发、使用和维护所需要的所有文档的总称,而程序只是软件的一部分
参考答案:
D
2.C语言规定,必须用_____作为主函数名。
(4分)
(A):
Function
(B):
include
(C):
main
(D):
stdio
参考答案:
C
3.在C语言中,下列类型属于构造类型的是_____。
(4分)
(A)整型
(B)字符型
(C)实型
(D)数组类型
参考答案:
D
4.在C语言中,下列类型属于构造类型的是_____。
(4分)
(A)整型
(B)字符型
(C)实型
(D)数组类型
参考答案:
D
5.在C语言中,下列类型属于构造类型的是_____。
(4分)
(A)整型
(B)字符型
(C)实型
(D)数组类型
参考答案:
D
6.在C语言中,下列类型属于基本类型的是_____。
(4分)
(A)整型、实型、字符型
(B)空类型、枚举型
(C)结构体类型、实型
(D)数组类型、实型
参考答案:
A
7.下列类型属于基本类型的是_____。
(4分)
(A)结构体类型和整型
(B)结构体类型、数组、指针、空类型
(C)实型
(D)空类型和枚举类型
参考答案:
C
8.在一个C程序中_____。
(4分)
(A)用户标识符中可以出现下划线和中划线(减号)
(B)用户标识符中不可以出现中划线,但可以出现下划线
(C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头
(D)用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头
参考答案:
B
9.以下选项中不合法的标识符是_____。
(4分)
(A):
print
(B):
FOR
(C):
&a
(D):
_00
参考答案:
C
10.以下选项中不属于C语言类型的是_____。
(4分)
(A):
signedshortint
(B):
unsignedlongint
(C):
unsignedint
(D):
longshort
参考答案:
D
11.C语言中的基本数据类型包括_____。
(4分)
(A)整型、实型、逻辑型
(B)整型、实型、字符型
(C)整型、逻辑型、字符型
(D)整型、实型、逻辑型、字符型
参考答案:
B
12.以下选项中正确的定义语句是_____(4分)
(A):
doublea;b;
(B):
doublea=b=7;
(C):
doublea=7,b=7;
(D):
double,a,b;
参考答案:
C
13.下列常数中,合法的C语言常量是_____。
(4分)
(A)’\n’
(B)e-310
(C)’DEF’
(D)’1234’
参考答案:
A
14.下列符号中,可以作为变量名的是_____。
(4分)
(A)+c
(B)*X
(C)_DAY
(D)nextday
参考答案:
C
15.已知intj,i=1;执行语句j=-i++;后,j的值是_____。
(4分)
(A)1
(B)2
(C)-1
(D)-2
参考答案:
C
16.字符串"\\\22a,0\n"的长度_____。
(4分)
(A)8
(B)7
(C)6
(D)5
参考答案:
C
17.已知:
chara='\70';则变量a中_____。
(4分)
(A)包含1个字符
(B)包含2个字符
(C)包含3个字符
(D)说明非法
参考答案:
A
18.不能进行++和--运算的数据类型是_____。
(4分)
(A):
指针
(B):
double
(C):
int
(D):
long
参考答案:
B
19.已知:
floatx=1,y;则:
y=++x*++x的结果为_____。
(4分)
(A)y=9
(B)y=6
(C)y=1
(D)表达式是错误的
参考答案:
D
20.以下_____是错误的转义字符。
(4分)
(A)'\\'
(B)'\''
(C)'\81'
(D)'\0'
参考答案:
C
21.下列可以正确表示字符型常数的是_____。
(4分)
(A)"a"
(B)'\t'
(C)"\n"
(D)297
参考答案:
B
22.a、b是整型变量,执行语句scanf("a=%d,b=%d",&a,&b);使a和b的值分别为1和2,正确的输入是_____。
(4分)
(A)12
(B)1,2
(C)a=1;b=2;
(D)a=1b=2
参考答案:
C
23.下面程序的输出结果是_____。
mian()
{
intx=2,y=0,z;
x*=3+2;printf(“%d”,x);
x*=y=z=4;printf(“%d”,x);
}(4分)
(A)840
(B)1040
(C)10,4
(D)8,4
参考答案:
B
24.运行以下程序后,输出_____。
main()
{
intk=-3;
if(k<=0)printf("****\n")elseprintf("&&&&\n");
}(4分)
(A)****
(B)&&&&
(C)####&&&&
(D)有语法错误不能通过编译
参考答案:
D
25.已知在ASCII集中,字母A的序号为65,下面程序的输出结果为_____。
main()
{
charc1=’B’,c2=’Y’;
printf(“%d,%d\n”,++c1,--c2);
}(4分)
(A)输出格式不合法,输出错误信息
(B)67,88
(C)66,89
(D)C,X
参考答案:
B
总分:
100分考试时间:
分钟
单选题
说明:
1.以下说法中正确的是_____。
(4分)
(A)C语言程序总是从第一个定义的函数开始执行。
(B)在C语言程序中,要调用的函数必须在main函数中定义。
(C)C语言程序总是从main函数开始执行。
(D)C语言程序中的main函数必须放在程序的开始部分。
参考答案:
C
2.下列各叙述中,正确的叙述项是_____。
(4分)
(A)定义函数时,必须要有形参。
(B)函数中可以没有return语句,也可以有多条return语句。
(C)函数f可以用f(f(x))形式调用,这种调用形式是递归调用。
(D)函数必须有返回值。
参考答案:
B
3.下列各叙述中,不正确的叙述项是_____。
(4分)
(A):
函数调用时,形参只有在被调用时才被创建(分配存储单元)。
(B):
函数调用时,实参可以是常量、变量或表达式。
(C):
定义局部变量时,省略对变量的存储类别定义,则变量是自动型变量。
(D):
语句return(a,b);则函数可以返回两个值。
参考答案:
D
4.如果在函数的复合语句中定义一个变量,有关该变量作用域正确的是_____。
(4分)
(A)只在该复合语句中有效
(B)在该函数中有效
(C)在本程序中有效
(D)为非法变量
参考答案:
A
5.C语言规定,简单变量作实参,它与对应形参之间的数据传递方式是:
_____。
(4分)
(A)地址传递;
(B)单向值传递;
(C)双向值传递;
(D)由用户指定传递方式
参考答案:
B
6.以下关于C语言程序中函数的说法正确的是:
_____。
(4分)
(A):
函数的定义可以嵌套,但函数的调用不可以嵌套
(B):
函数的定义不可以嵌套,但函数的调用可以嵌套
(C):
函数的定义和调用均不可以嵌套
(D):
函数的定义和点用都可以嵌套
参考答案:
B
7.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是_____。
(4分)
(A)float型
(B)int型
(C)long型
(D)double型
参考答案:
B
8.若用数组名作为函数调用的实参,传递给形参的是_____。
(4分)
(A)数组的首地址
(B)数组第一个元素的值
(C)数组中全部元素的值
(D)数组元素的个数
参考答案:
A
9.以下不正确的说法为_____。
(4分)
(A)在不同函数中可以使用相同名字的变量
(B)形式参数是局部变量
(C)在函数内定义的变量只在本函数范围内有效
(D)在函数内的复合语句中定义的变量在本函数范围内有效
参考答案:
D
10.若有定义:
intx,*pb;,则以下正确的赋值表达式是_____。
(4分)
(A):
pb=&x
(B):
pb=x
(C):
*pb=&x
(D):
*pb=*x
参考答案:
A
11.下列语句定义p为指向float型变量d的指针,其中正确的是_____。
(4分)
(A):
floatd,*p=d;
(B):
float*p=&d,d;
(C):
floatd,*p=&d;
(D):
floatd,p=d;
参考答案:
C
12.变量的指针,其含义是指该变量的_____。
(4分)
(A)值
(B)地址
(C)名
(D)一个标志
参考答案:
B
13.设有说明int(﹡ptr)[M];其中ptr是_____。
(4分)
(A)M个指向整型变量的指针
(B)指向M个整型变量的函数指针
(C)一个指向具有M个整型元素的一维数组的指针
(D)具有M个指针元素的一维指针数组,每个元素都只能指向整型量
参考答案:
C
14.已有定义intk=2,*ptr1,*ptr2;且ptr1和ptr2均已指向同一个变量k,下面不正确执行的赋值语句是:
_____。
(4分)
(A):
k=*ptr1+*ptr2;
(B):
ptr2=k;
(C):
ptr1=ptr2;
(D):
k=*ptr1*(*ptr2);
参考答案:
B
15.调用strlen("abcd\0ef\0g")的返回值为_____。
(4分)
(A)4
(B)5
(C)8
(D)9
参考答案:
A
16.在C语言中,引用数组元素时,其数组下标的数据类型允许是_____。
(4分)
(A)整型常量
(B)整型表达式
(C)整型常量或整型表达式
(D)任何类型的表达式
参考答案:
C
17.已知inta[10];则对a数组元素的正确引用是_____。
(4分)
(A):
a[10]
(B):
a[3.5]
(C):
a(5)
(D):
a[10-10]
参考答案:
D
18.已知inta[3][4];则对数组元素引用正确的是_____。
(4分)
(A):
a[2][4]
(B):
a[1.3]
(C):
a[1+1][0]
(D):
a
(2)
(1)
参考答案:
C
19.下列程序段的运行结果为_____。
chars[]="ab\0cd";printf("%s",s);(4分)
(A):
ab0
(B):
ab
(C):
abcd
(D):
abcd
参考答案:
B
20.有如下函数调用语句
func(rec1,rec2+rec3,(rec4,rec5);
该函数调用语句中,含有的实参个数是_
(1)_。
(4分)
(A)3
(B)4
(C)5
(D)有语法错
参考答案:
A
21.以下错误的描述是_____。
函数调用可以(4分)
(A)出现在执行语句中
(B)出现在一个表达式中
(C)做为一个函数的实参
(D)做为一个函数的形参
参考答案:
D
22.以下正确的说法是_____。
如果在一个函数中的复合语句中定义了一个变量,则该变量(4分)
(A)只在该复合语句中有效
(B)在该函数中有效
(C)在本程序范围内有效
(D)为非法变量
参考答案:
A
23.对下面函数f,选出f(f(3))的值是_____。
intf(intx)
{
staticintk=0;
x+=k--;
returnx;
}(4分)
(A)5
(B)3
(C)2
(D)4
参考答案:
C
24.若有以下定义,则对a数组元素的正确引用是_____。
inta[5],﹡p=a;(4分)
(A)﹡&a[5]
(B)a+2
(C)﹡(p+5)
(D)﹡(a+2)
参考答案:
D
25.若有以下定义,则﹡(p+5)表示_____。
inta[6],﹡p=a;(4分)
(A):
元素a[5]的地址
(B):
元素a[5]的值
(C):
元素a[6]的地址
(D):
元素a[6]的值
参考答案:
B
总分:
100分考试时间:
分钟
单选题
说明:
1.对于基类型相同的两个指针变量之间,不能进行的运算是_____。
(4分)
(A):
<
(B):
=
(C):
+
(D):
–
参考答案:
C
2.设intx;,则经过_____后,语句*px=0;可将x值置为0。
(4分)
(A):
int*px;
(B):
int*px=&x;
(C):
float*px;
(D):
float*px=&x;
参考答案:
B
3.若已定义:
inta[9],*p=a;并在以后的语句中未改变p的值,则不能表示a[1]地址的表达式是_____。
(4分)
(A):
p+1
(B):
a+1
(C):
a++
(D):
++p
参考答案:
C
4.已建立一单向链表,指针变量p1指向链表中某一结点,p2指向下一结点,将p2所指结点从链表中删除并释放的语句为_____。
(4分)
(A):
p1=p2;free(p2);
(B):
p1->next=p2->next;free(p2);
(C):
*p1.next=*p2.next;free(p2);
(D):
p1=p2->next;free(p2);
参考答案:
B
5.已建立一单向链表,指针变量p1指向链表中某一结点,p2指向下一结点;指针变量p指向新申请结点,将p所指结点插入到链表中p1与p2之间的语句为_____。
(4分)
(A):
p->next=p2;p1->next=p;
(B):
p1=p;p=p2;
(C):
p=p2;p1->next=p;
(D):
p1=p;p->next=p2;
参考答案:
A
6.fread(buf,64,2,fp)的功能是_____。
(4分)
(A):
从fp文件流中读出整数64,并存放在buf中;
(B):
从fp文件流中读出整数64和2,并存放在buf中;
(C):
从fp文件流中读出64个字节的字符,并存放在buf中;
(D):
从fp文件流中读出2个64个字节的字符,并存放在buf中;
参考答案:
D
7.系统的标准输出文件stdout是指_____。
(4分)
(A):
键盘
(B):
显示器
(C):
软盘
(D):
硬盘
参考答案:
B
8.若执行fopen函数时发生错误,则函数的返回值是_____。
(4分)
(A)地址值
(B)0
(C)1
(D)EOF
参考答案:
B
9.为了显示一个文本文件的内容,在打开文件时,文件的打开方式应当为_____。
(4分)
(A)"r+"
(B)"w+"
(C)"wb+"
(D)"ab+"
参考答案:
A
10.若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应该是_____。
(4分)
(A)"ab+"
(B)"wb+"
(C)"rb+"
(D)"ab"
参考答案:
B
11.在C语言中,从计算机内存中将数据写入文件中,称为_____。
(4分)
(A)输入
(B)输出
(C)修改
(D)删除
参考答案:
B
12.以下定义语句中,错误的是_____。
(4分)
(A):
inta[]={1,2};
(B):
char*a[3];
(C):
chars[10]="test";
(D):
intn=5,a[n];
参考答案:
D
13.执行以下程序段后y的值为_____。
staticinta[]={1,3,5,7,9};
inty,x,*ptr;
y=1;
ptr=&a[1];
for(x=0;x<3;x++)
y*=*(ptr+x);(4分)
(A):
105
(B):
15
(C):
945
(D):
无确定值
参考答案:
A
14.执行以下程序段后,m的值为_____。
staticinta[2][3]={1,2,3,4,5,6};
intm,*ptr;
ptr=&a[0][0];
m=(*ptr)*(*(ptr+2))*(*(ptr+4));(4分)
(A):
15
(B):
48
(C):
24
(D):
无定值
参考答案:
A
15.以下程序的功能是_____。
main()
{
FILE*fp;
charstr[]=“HELLO”;
fp=fopen(“PRN”,“w”);
fpus(str,fp);
fclose(fp);
}(4分)
(A):
在屏幕上显示“HELLO”
(B):
把“HELLO”存入PRN文件中
(C):
在打印机上打印出“HELLO”
(D):
以上都不对
参考答案:
C
16.若fp是指向某文件的指针,且已读到此文件末尾,则库函数
feof(fp)的返回值是_
(1)_。
(4分)
(A):
EOF
(B):
0
(C):
非零值
(D):
NULL
参考答案:
C
17.若fp为文件指针,且文件已正确打开,i为long型变量,以下程序段的输出结果是_____。
fseek(fp,0,SEEK_END);
i=ftell(fp);
printf("i=%ld\n",i);(4分)
(A):
–1
(B):
fp所指文件的长度,以字节为单位
(C):
0
(D):
2
参考答案:
B
18.以下对C语言中联合类型数据的叙述正确的是_____。
(4分)
(A):
可以对联合变量名直接赋值
(B):
使用联合变量的目的是为了节省内存
(C):
对一个联合变量,可以同时引用联合中的不同成员
(D):
联合类型定义中不能出现结构类型的成员
参考答案:
B
19.若有以下说明和语句:
structworker
{intno;char﹡name;}work,﹡p=&work;
则以下引用方式不正确的是_
(1)_。
(4分)
(A):
work.no
(B):
(﹡p).no
(C):
p->no
(D):
work->no
参考答案:
D
20.有如下定义:
structdate{intyear,month,day;};
structworklist{
charname[20];
charsex;
structdatebirthday;
}person;
对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是_
(1)_。
(4分)
(A):
year=1958
(B):
birthday.year=1958
(C):
person.birthday.year=1958
(D):
person.year=1958
参考答案:
C
21.有以下定义浯句:
structnode{intn;structnode*next;}x,y,*p=&x,*q=&y;
则能将y结点链接到x结点之前的语句为________。
(4分)
(A)x.next=p;
(B)x.next=q;
(C)y.next=p;
(D)y.next=q;
参考答案:
C
22.有以下的结构体变量定义语句:
structstudent{intnum;charname[9];}stu;
则下列叙述中错误的是________。
(4分)
(A):
结构体名为student
(B):
结构体类型名为stu
(C):
num是结构体成员名
(D):
struct是C的关键字
参考答案:
B
23.以下程序的输出结果是________。
#include
voidmain()
{
structcmplx{intx;inty;}cnum[2]={1,3,2,7};
printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);
}(4分)
(A)0
(B)1
(C)3
(D)6
参考答案:
D
24.以下程序的输出结果为________。
#include
voidmain()
{
structnode{intn;structnode*next;}a[4];
inti;
for(i=0;i<3;i++)
{(a+i)->n=i+1;(a+i)->next=a+i+1;}
(a+i)->next=a;
printf("%d,%d\n",(a[1].next)->n,a[3].next->n);
}(4分)
(A)1,2
(B)2,1
(C)1,3
(D)3,1
参考答案:
D
25.若要利用下面的程序片段使指针变量p指向一个存储整型变量的存储单元,则应向空格处填入以下哪一选项________。
(4分)
(A):
int
(B):
int*
(C):
(*int)
(D):
(int*)
参考答案:
D
总分:
100分考试时间:
分钟
单选题
说明:
1.下列各语句序列中,能够将变量u、s中最大值赋值到变量t中的是_____。
(5分)
(A):
if(u>s)t=u;t=s;
(B):
t=s;if(u>s)t=u;
(C):
if(u>s)t=s;elset=u;
(D):
t=u;if(u>s)t=s;
参考答案:
B
2.C语言中调用printf进行输出时需要注意,在格式控制串中,格式说明与输出项的个数必须相同。
如果格式说明的个数小于输出项的个数,多余的输出项将_____;如果格式说明的个数多于输出项的个数,则对于多余的格式将输出不定值(或0)。
(5分)
(A)不予输出
(B)输出空格
(C)照样输出
(D)输出不定值或0
参考答案:
A
3.