重庆大学C语言程序设计复习题及参考答案文档格式.docx

上传人:b****5 文档编号:20834682 上传时间:2023-01-25 格式:DOCX 页数:61 大小:42.72KB
下载 相关 举报
重庆大学C语言程序设计复习题及参考答案文档格式.docx_第1页
第1页 / 共61页
重庆大学C语言程序设计复习题及参考答案文档格式.docx_第2页
第2页 / 共61页
重庆大学C语言程序设计复习题及参考答案文档格式.docx_第3页
第3页 / 共61页
重庆大学C语言程序设计复习题及参考答案文档格式.docx_第4页
第4页 / 共61页
重庆大学C语言程序设计复习题及参考答案文档格式.docx_第5页
第5页 / 共61页
点击查看更多>>
下载资源
资源描述

重庆大学C语言程序设计复习题及参考答案文档格式.docx

《重庆大学C语言程序设计复习题及参考答案文档格式.docx》由会员分享,可在线阅读,更多相关《重庆大学C语言程序设计复习题及参考答案文档格式.docx(61页珍藏版)》请在冰豆网上搜索。

重庆大学C语言程序设计复习题及参考答案文档格式.docx

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);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1