重庆大学C语言程序设计复习题及参考答案文档格式.docx
- 文档编号:20834682
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:61
- 大小:42.72KB
重庆大学C语言程序设计复习题及参考答案文档格式.docx
《重庆大学C语言程序设计复习题及参考答案文档格式.docx》由会员分享,可在线阅读,更多相关《重庆大学C语言程序设计复习题及参考答案文档格式.docx(61页珍藏版)》请在冰豆网上搜索。
9.下面关于结构体指针变量的描述中,正确的是(A)。
A.定义一个结构体类型指针变量,可以用于存放同类型结构体变量在内存中的起始地址
B.定义一个结构体类型指针变量,可以存放同一程序中任意结构体类型变量地址
C.在函数的形式参数表中,不能有结构体类型指针变量作为形式参数
D.表示结构体变量的地址时,不需要使用取地址运算符,而是用结构体变量名直接表示
10.对于下面C语句序列,错误的叙述是(D)。
chara[100],*s1=a;
char*s2;
A.可以使用gets函数为a输入数据
B.可以使用gets函数为s1输入数据
C.不能使用gets函数为s2输入数据
D.可以使用scanf函数为s1和s2输入数据
11.在下面的叙述中不正确的是(C)。
A.a&
=b等价于a=a&
b
B.a|=b等价于a=a|b
C.a!
=b等价于a=a!
D.a^=b等价于a=a^b
12.C语言中,定义一个指向文件的指针的正确语句形式是(B)。
A.void*sp;
B.FILE*sp;
C.FILE&
sp;
D.void&
13.C语句:
typedefint(*FP)(inta,intb);
的意思是(D)。
A.定义一个整型指针变量FP
B.声明一个返回整型指针的FP函数原型
C.定义一个指向函数的指针变量FPD.构造一个指向函数的指针类型FP
14.计算机处理高级语言书写的程序时,通常使用(A)。
A.解释或编译两种方式
B.直接运行方式
C.分步运行方式
D.解释和编译两种方式
15.下面程序执行后的输出结果是(D)。
#include<
stdio.h>
intmain()
{
inta=30,b=60;
a^=12345;
b^=54321;
printf("
a=%d,b=%d\n"
a,b);
return0;
}
A.a=30,b=30B.a=60,b=60C.a=60,b=30D.a=30,b=60
16.下面所列变量类别中,能够作为返回指针值函数返回对象的是(B)。
A.寄存器变量
B.全局变量
C.局部变量
D.函数形式参数
17.下面关于联合体变量空间的描述中,正确的是(D)。
A.联合体变量的所有成员分量都具有自己的空间
B.联合体变量的空间需求是所有成员空间要求之和
C.虽然联合体变量所有成员不会同时出现,但仍然可以对它们进行初始化D.联合体变量中,空间要求最大的成员分量决定了联合体变量的空间需求18.下面所列定义联合体类型变量的方法中,错误的是(D)。
A.先定义类型,然后定义该类型的变量B.在定义联合体类型同时定义若干变量C.只定义若干个某种形式的联合体变量
D.先定义联合体变量,然后根据变量定义类型
19.下面选项中,正确的用户标识符是(D)。
A.2LIN
B.float
C.double
D.al_time
20.下面关于结构体数据类型的描述中,不正确的是(D)。
A.在某个C程序中定义的结构体类型只能在该程序中使用
B.在一个C程序中可以定义若干个结构体类型
C.在程序代码中,不是直接使用结构体类型,而是使用结构体变量
D.虽然可以定义多个结构体类型,但不能嵌套定义结构体类型
21.下面关于某结构体类型一级指针变量和数组关系的描述中,正确的是
(A)。
A.指针变量不仅能够指向数组元素,也能够指向数组
B.指针变量仅能够指向数组元素,但不能指向数组
C.指针变量不能指向数组元素,但可以指向数组
D.指针变量既不能指向数组元素,也不能指向数组
22.设有C语句序列:
intarr[5],*p1;
p1=&
arr[3];
,那么能够输入数组3号元素值的是(C)。
A.scanf("
%d"
p1[3]);
B.scanf("
arr[3]);
C.scanf("
p1);
D.scanf("
p1+3);
23.
在C程序中,十进制整数100的十六进制书写形式是(D)。
A.100
B.0100IBM7090
C.0x100
D.0x64
24.下面关于条件编译预处理#ifdef系列命令的叙述中,正确的是(C)。
A.使用#ifdef系列预处理命令,可以在程序执行时对流程进行控制
B.在使用#ifndef系列预处理命令时,#ifdef必须和#endif配合使用
C.使用#ifdef系列预处理命令,可以在编译时对处理代码进行选择
D.#ifdef和#ifndef预处理命令的功能完全相同
25.下面关于带参数宏的叙述中,错误的是(D)。
A.宏也有默认的作用域:
从其定义处开始到所在源文件结束为止
B.带参数宏中的参数不需要指定数据类型
C.为避免歧义,替换用字符串中的形参最好用括号括起来
D.宏调用与函数调用都有调用时系统开销
26.下面关于文件包含预处理的叙述中,错误的是(D)。
A.文件包含预处理语句不一定要书写在程序代码的最前面
B.文件包含预处理语句中,使用尖括号还是双引号括住文件名都可以
C.使用文件包含预处理,既可以包含系统的文件,也可以包含用户的文件
D.文件包含预处理语句一定要书写在程序代码的最前面
27.设有C语句序列:
p1=arr;
,那么能够输入数组3号元素值的是(A)。
B.scanf("
C.scanf("
p1*3);
D.scanf("
&
p1[3]);
28.设有C语句序列:
intarr[5][5],*p1;
arr[3][3];
,那么能够输入数
组3行3列元素值的是(C)。
29.下面关于二维动态数组特点的描述中,错误的是(B)。
A.释放动态二维数组时,应该先释放每行的空间,然后再释放指针数组
B.释放动态二维数组时,可以按照任意的顺序释放动态分配的所有空间
C.动态创建的二维数组不能进行初始化操作
D.动态二维数组的每一行不一定是连在一起的
30.下面程序执行后的输出结果是(D)。
enumTEST{A,B,C,D,E}i;
voidmain()
inta[5]={10,20,30,40,50};
i=A;
while(i<
=E)
%4d"
a[i]);
i=(enumTEST)((int)i+1);
\n"
);
A.
10
20
B.
30
C.
40
D.
50
31.设由文件指针变量fp关联的数据文件中,数据按照94行94列的方式排
列,每个数据长度为32个字节。
应用中要求读取文件中第16行第1列的数据,那么在读数据之前应该进行的操作是(A)。
A.fseek(fp,94*15*32,SEEK_SET);
B.fseek(fp,94*15*32,SEEK_END);
C.fseek(fp,94*15*32,SEEK_CUR);
D.fseek(fp,-94*15*32,SEEK_SET);
32.下面程序执行时输入的数据是:
12345,那么输出的结果是(D)。
#include<
voidmain()
inta[5],i,*p=a,**p1=&
p;
for(i=0;
i<
5;
i++)scanf("
*p1+i);
for(i=4;
i;
i--)
%2d"
*(a+i));
printf("
1
2
3
45
4
5
21
33.对于下面的文件内容和程序,正确的结论是(B)。
//以下是文件mydoc.txt的内容
ints;
s=100;
//以下是C程序内容
#include"
mydoc.txt"
s=%d\n"
s);
A.程序有错,文件包含语句写在主函数体内
B.程序没有错误,输出是:
s=100
C.程序没有语法错误,但没有输出数据
D.程序有错,两个文件包含预处理语句使用了不同的括号括住文件名
34.对于下面的C代码段,结论是(D)。
chars[100]="
abcdefg"
;
s="
1234567"
A.没有错误,字符串s的内容为1234567B.没有错误,字符串内容为abcdefg
C.没有错误,字符串内容为abcdefg1234567
D.有语法错误,字符串内容为abcdefg
35.在C程序中,可以定义全局变量位置是(A)。
A.所有函数的外面
B.主函数内部
C.主函数形式参数表中
D.前两个函数之间
36.定义一个联合体(共用体)类型变量时,系统分配给该变量的存储空间是
(B)。
A.联合体变量中第一个成员所需要的存储空间
B.联合体变量中占用最大存储空间成员所需要的存储空间
C.联合体变量中最后一个成员所需要的存储空间
D.联合体变量中所有成员需要存储空间的总和
37.设有如下所示C语句,若要使p指向结构体变量中的成员n,正确的赋值语句是(C)。
structT
{intn;
doublex;
}d,*p
A.p=&
d.n
B.*p=d.n
C.p=(structT*)&
D.p=(structT*)d.n
38.下面程序的功能是(C)。
stdlib.h>
time.h>
{chars[20];
inti;
srand((unsigned)time(NULL));
for(i=0;
19;
i++)s[i]='
a'
+rand()%26;
s[i]='
\0'
puts(s);
A.产生长度为20的字符串并输出B.产生长度为18的字符串并输出C.产生长度为19的字符串并输出
D.产生全部由字符'
构成字符串并输出
39.下面程序执行后的输出结果是(C)。
math.h>
voidptr1();
voidptr2();
000"
ptr1();
ptr2();
voidptr1()
111"
ptr2();
voidptr2()
222"
A.000222111222
B.111222000222
C.000111222222
D.222222000111
40.数学公式x1/2+x4+lg(x)+ex的正确C表达式书写形式是(D)。
A.x*(1/2)+pow(x,4)+lg10(x)+exp(x)
B.sqrt(x)+pow(4,x)+lg10(x)+exp(x)
C.sqrt(x)+pow(x,4)+lg(x)+pow(x)
D.sqrt(x)+pow(x,4)+lg10(x)+exp(x)
41.下面程序执行后的输出结果是(D)。
string.h>
typedefcharFN[50];
FNfn1="
d:
\\abc"
fn2="
\\mydata.txt"
fn;
strcpy(fn,fn1);
strcat(fn,fn2);
puts(fn);
A.d:
\\abc
B.\\mydata.txt
C.d:
\\abc\\mydata.txt
D.d:
\abc\mydata.txt
42.下面程序段运行后,变量a、b、c的值依次是(D)。
inta,b,c;
a=1,c=(a++,b=2,b/2,a+10);
A.1,1,11
B.1,2,12
C.2,2,11
D.2,2,12
43.设有定义:
double(*f)(inta,floatb,doublec);
,那么能够被指针变量f指向函数的原型是(D)。
A.doublefun1(inta,intb,intc);
B.doublefun2(floata,intb,doublec);
C.intfun3(inta,floatb,doublec);
D.doublefun4(int,float,double);
44.设有C语句序列:
inta[5],b[10];
intp[2]={a,b};
,那么不能够表示b
数组3号元素值的是(D)。
A.b[3]B.*(b+3)
C.p[1][3]
D.p[0][3]45.
设有C语句序列:
floatx;
doubley;
,如果将变量y的值赋值给变量x,
(D)。
A.当y值本身的精度没有超过float能够表达的精度时,赋值结果会损失精度
B.无论变量y的值如何,变量x都可以正确地接受赋值
C.无论变量y的值如何,变量x都不能正确地接受赋值
D.当y值本身的精度已经超过了float能够表达的精度时,赋值结果会损失精度
46.下面程序段运行后,变量a、f的值依次是(C)。
inta=13;
doublef=12.545;
a=a%(int)f;
A.0,12.545000
B.1312.545000
C.1,12.545000
D.1,12
47.下面程序执行后的输出结果是(D)。
structT
inta;
intb;
};
voidswap(structTa,structT*b);
structTx={10,20},y={30,40};
swap(x,&
y);
%d,%d,%d,%d\n"
x.a,x.b,y.a,y.b);
voidswap(structTa,structT*b)
structTt;
t=a;
a=*b;
*b=t;
A.20,10,40,30
B.30,40,10,20
C.40,30,20,10
D.10,20,30,40
48.下面对牛顿迭代法的描述中,错误的是(B)。
A.牛顿迭代法是常见的求高阶方程根的方法之一B.使用牛顿迭代法,不需要任何高等数学的知识C.使用牛顿迭代法时,需要指定一个粗略解
D.使用牛顿迭代法,需要了解导函数知识
49.设有C语句序列:
inta[3][5],(*p)[5];
p=a;
那么不能够表示a数组3
行3列元素值的是(D)。
A.a[3][3]
B.*(*(p+3)+3)
C.*(p[3]+3)D.*(*p+3+3)
50.下面关于单链表的描述中,错误的是(D)。
A.单链表的插入操作中,需要建立一个新数据结点
B.单链表的访问方式是顺序访问方式,即要从第一个结点开始依次访问其他结点
C.建立单链表时,有正向生成构造和反向生成构造两种方法
D.单链表删除操作中,仅需要将被删结点从链表上取下来既可
51.下面关于程序的说法中,正确的是(C)。
A.C语言的源程序描述了功能的实现方法,计算机可以直接运行
B.目标文件已经是二进制代码,计算机可以辨识并直接运行
C.执行文件是二进制代码,计算机可以辨识并直接运行
D.源程序文件中即使有语法错误,也可以编译生成目标文件
52.下面程序执行后的输出结果是(D)。
inta=0x3030,b=0x6060;
intmask1=0x00ff,mask2=0xff00;
a&
=mask1;
b|=mask2;
a=0X%x,b=0X%x\n"
A.a=0Xff30,b=0Xff60
B.a=0X30,b=0X60C.a=0Xff30,b=0X60D.a=0X30,b=0Xff60
53.在32位开发环境下,下面程序段运行后,变量a、b、c的值依次是
a=sizeof('
A'
b=sizeof(int);
c=sizeof(a,b+12.3);
A.1,8,8
B.1,4,4
C.1,4,8
D.1,8,4
54.C语言中,与关系表达a+b*c>
=x*y+z运算次序和结果都相同的是
(C)。
A.(a+b)*c>
=x*(y+z)B.a+(b*c)>
=x*(y+z)C.(a+b*c)>
=(x*y+z)D.a*(b+c)>
=x*(y+z)
55.函数voidfree(void*memblock)函数的功能是(B)。
A.在主存储器中的动态存储区分配由memblock所指向的存储块
B.释放由指针变量memblock指明首地址的由malloc类库函数分配的存储块
C.在硬盘存储区分配由memblock所指向的存储块
D.没有任何功能
56.下面程序执行的结果是(A)。
stido.h>
#defineAA10
#defineBB20
#defineCC(x,y)x*x+y*yvoidmain()
{doubles;
s=CC(AA+BB,AA-BB);
s=%.0lf\n"
A.s=20
B.s=20.0C.s=1000D.s=1000.0
57.下面程序执行后输出的结果是(D)。
inta[5]={1,2,3,4,5},*p=a,i;
i++)printf("
*(p+i));
58.一个C程序的执行是从(A)。
A.本程序的main函数开始,在main函数结束
B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C.本程序的main函数开始,到本程序文件的最后一个函数结束
D.本程序文件的第一个函数开始,到本程序main函数结束
59.下面程序执行后输出的结果是(D)。
inta[3][3]={{1},{2,3,4},{9}};
inti,j,*p=&
a[1][2];
*p+=a[0][0]*a[2][0];
3;
i++)for(j=0;
j<
j++)printf("
%3d"
a[i][j]);
A.120031390
B.100230013
9
C.100213390
D.100231390
60.下面程序执行后的输出结果是(D
)。
intb;
voidswap(structT*v);
structTx[2]={10,20,30,40};
swap(x);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 重庆大学 语言程序设计 复习题 参考答案