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

上传人:b****5 文档编号:7709216 上传时间: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

重庆大学C语言程序设计复习题及参考答案

C语言程序设计参考资料

一、单项选择题(本大题共90分,共90小题,每小题1分)

1.C语言中定义枚举类型使用的关键字是(A)。

A.enum

B.struct

C.union

D.typedef示

2.C程序中,如果要从读出一个图形文件的数据进行处理,最好使用标准函数

(D)。

A.fgetc

B.fgets

C.fscanf

D.fread

3.下面关于宏的叙述中,错误的是(D)。

A.宏的作用域从其定义处开始

B.宏名只要满足标识符规则即可C.宏可以用#undef预处理撤销D.宏名的首字符必须要大写

4.下面关于单链表的描述中,不正确的是(D)。

A.单链表可以动态增长

B.单链表中插入数据时,不需要移动插入点之后的结点

C.单链表中删除数据时,不需要移动删除结点之后的结点

D.单链表和数组一样,必须事先确定结点的个数

5.下面关于malloc标准库函数的描述中,错误的是(B)。

A.通过malloc函数可以在程序运行过程中分配存储

B.malloc函数是返回整型指针值的函数

C.malloc函数是返回空类型指针的函数

D.malloc函数的参数是分配空间的字节数

6.关于指向函数的指针变量,下面说法正确的是(D)。

A.指向函数指针变量的类型是整型,那么它也可以指向整型变量

B.指向函数指针变量的值是所指向函数所占用的存储单元地址

C.指向函数的指针变量只能指向一个特定的函数

D.指向函数的指针变量可以指向某一类特征相同的函数

7.设有C语句:

doublex,*p1=&x,**p2=&p1;,那么与变量x等价的是

(C)。

A.p2

B.*p2

C.**p2

D.&p2

8.C语言中,表达式y*=(a+b)等价于(C)。

A.y=y*a+b

B.y=y+a*b

C.y=y*(a+b)

D.y=y*b+a

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!

b

D.a^=b等价于a=a^b

12.C语言中,定义一个指向文件的指针的正确语句形式是(B)。

A.void*sp;

B.FILE*sp;

C.FILE&sp;

D.void&sp;

13.C语句:

typedefint(*FP)(inta,intb);的意思是(D)。

A.定义一个整型指针变量FP

B.声明一个返回整型指针的FP函数原型

C.定义一个指向函数的指针变量FPD.构造一个指向函数的指针类型FP

14.计算机处理高级语言书写的程序时,通常使用(A)。

A.解释或编译两种方式

B.直接运行方式

C.分步运行方式

D.解释和编译两种方式

15.下面程序执行后的输出结果是(D)。

#includeintmain()

{

inta=30,b=60;a^=12345;b^=54321;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("%d",arr[3]);

C.scanf("%d",p1);

D.scanf("%d",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语句序列:

intarr[5],*p1;p1=arr;,那么能够输入数组3号元素值的是(A)。

A.scanf("%d",p1+3);

B.scanf("%d",arr[3]);C.scanf("%d",p1*3);D.scanf("%d",&p1[3]);

28.设有C语句序列:

intarr[5][5],*p1;p1=&arr[3][3];,那么能够输入数

组3行3列元素值的是(C)。

A.scanf("%d",p1[3]);

B.scanf("%d",arr[3]);

C.scanf("%d",p1);D.scanf("%d",p1+3);

29.下面关于二维动态数组特点的描述中,错误的是(B)。

A.释放动态二维数组时,应该先释放每行的空间,然后再释放指针数组

B.释放动态二维数组时,可以按照任意的顺序释放动态分配的所有空间

C.动态创建的二维数组不能进行初始化操作

D.动态二维数组的每一行不一定是连在一起的

30.下面程序执行后的输出结果是(D)。

#include

enumTEST{A,B,C,D,E}i;

voidmain()

{

inta[5]={10,20,30,40,50};i=A;

while(i<=E)

{

printf("%4d",a[i]);

i=(enumTEST)((int)i+1);

}

printf("\n");

}

A.

10

20

B.

10

20

30

C.

10

20

30

40

D.

10

20

30

40

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

#includevoidmain()

{

inta[5],i,*p=a,**p1=&p;for(i=0;i<5;i++)scanf("%d",*p1+i);

for(i=4;i;i--)

printf("%2d",*(a+i));printf("\n");

}

A.

1

2

3

45

B.

1

2

3

4

C.

5

4

3

21

D.

5

4

3

2

33.对于下面的文件内容和程序,正确的结论是(B)。

//以下是文件mydoc.txt的内容

ints;s=100;

//以下是C程序内容

#includevoidmain()

{

#include"mydoc.txt"printf("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.n

D.p=(structT*)d.n

38.下面程序的功能是(C)。

#include

#include

#includevoidmain()

{chars[20];inti;

srand((unsigned)time(NULL));

for(i=0;i<19;i++)s[i]='a'+rand()%26;

s[i]='\0';

puts(s);

}

A.产生长度为20的字符串并输出B.产生长度为18的字符串并输出C.产生长度为19的字符串并输出

D.产生全部由字符'a'构成字符串并输出

39.下面程序执行后的输出结果是(C)。

#include

#includevoidptr1();voidptr2();voidmain()

{

printf("000");ptr1();

ptr2();printf("\n");

}

voidptr1()

{

printf("111");ptr2();

}

voidptr2()

{

printf("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)。

#include

#includetypedefcharFN[50];voidmain()

{

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

#includestructT

{

inta;intb;

};

voidswap(structTa,structT*b);voidmain()

{

structTx={10,20},y={30,40};

swap(x,&y);printf("%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)。

#includeintmain()

{

inta=0x3030,b=0x6060;

intmask1=0x00ff,mask2=0xff00;a&=mask1;

b|=mask2;printf("a=0X%x,b=0X%x\n",a,b);return0;

}

A.a=0Xff30,b=0Xff60

B.a=0X30,b=0X60C.a=0Xff30,b=0X60D.a=0X30,b=0Xff60

53.在32位开发环境下,下面程序段运行后,变量a、b、c的值依次是

(C)。

inta,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)。

#include

#defineAA10

#defineBB20

#defineCC(x,y)x*x+y*yvoidmain()

{doubles;s=CC(AA+BB,AA-BB);

printf("s=%.0lf\n",s);

}

A.s=20

B.s=20.0C.s=1000D.s=1000.0

57.下面程序执行后输出的结果是(D)。

#includevoidmain()

{

inta[5]={1,2,3,4,5},*p=a,i;

for(i=0;i<5;i++)printf("%2d",*(p+i));

for(i=4;i;i--)

printf("%2d",*(a+i));printf("\n");

}

 

A.

1

2

3

4

5

1

2

3

4

B.

1

2

3

4

5

1

2

3

45

C.

1

2

3

4

5

5

4

3

21

D.

1

2

3

4

5

5

4

3

2

58.一个C程序的执行是从(A)。

A.本程序的main函数开始,在main函数结束

B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C.本程序的main函数开始,到本程序文件的最后一个函数结束

D.本程序文件的第一个函数开始,到本程序main函数结束

59.下面程序执行后输出的结果是(D)。

#includevoidmain()

{

inta[3][3]={{1},{2,3,4},{9}};

inti,j,*p=&a[1][2];

*p+=a[0][0]*a[2][0];

for(i=0;i<3;i++)for(j=0;j<3;j++)printf("%3d",a[i][j]);

printf("\n");

}

A.120031390

0

B.100230013

9

C.100213390

0

D.100231390

0

60.下面程序执行后的输出结果是(D

)。

#include

structT

{

inta;

intb;

};

voidswap(structT*v);

voidmain()

{

structTx[2]={10,20,30,40};

swap(x);

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

当前位置:首页 > 高等教育 > 管理学

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

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