重庆大学C语言程序设计复习题及参考答案.doc_第1页
重庆大学C语言程序设计复习题及参考答案.doc_第2页
重庆大学C语言程序设计复习题及参考答案.doc_第3页
重庆大学C语言程序设计复习题及参考答案.doc_第4页
重庆大学C语言程序设计复习题及参考答案.doc_第5页
已阅读5页,还剩73页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C 语言程序设计参考资料一、单项选择题(本大题共 90 分,共 90 小题,每小题 1 分)1. C 语言中定义枚举类型使用的关键字是(A)。A. enumB. structC. unionD. typedef 示2. C 程序中,如果要从读出一个图形文件的数据进行处理,最好使用标准函数(D)。A. fgetcB. fgetsC. fscanfD. fread3. 下面关于宏的叙述中,错误的是(D)。A. 宏的作用域从其定义处开始B. 宏名只要满足标识符规则即可 C. 宏可以用#undef 预处理撤销 D. 宏名的首字符必须要大写4. 下面关于单链表的描述中,不正确的是(D)。A. 单链表可以

2、动态增长B. 单链表中插入数据时,不需要移动插入点之后的结点C. 单链表中删除数据时,不需要移动删除结点之后的结点D. 单链表和数组一样,必须事先确定结点的个数5. 下面关于 malloc 标准库函数的描述中,错误的是(B)。A. 通过 malloc 函数可以在程序运行过程中分配存储B. malloc 函数是返回整型指针值的函数C. malloc 函数是返回空类型指针的函数D. malloc 函数的参数是分配空间的字节数6. 关于指向函数的指针变量,下面说法正确的是(D)。A. 指向函数指针变量的类型是整型,那么它也可以指向整型变量B. 指向函数指针变量的值是所指向函数所占用的存储单元地址C.

3、 指向函数的指针变量只能指向一个特定的函数D. 指向函数的指针变量可以指向某一类特征相同的函数7. 设有 C 语句:double x,*p1=&x,*p2=&p1;,那么与变量 x 等价的是(C)。A. p2B. *p2C. *p2D. &p28. C 语言中,表达式 y*=(a+b)等价于(C )。A. y=y*a+bB. y=y+a*bC. y=y*(a+b)D. y=y*b+a9. 下面关于结构体指针变量的描述中,正确的是(A)。A. 定义一个结构体类型指针变量,可以用于存放同类型结构体变量在内存中的 起始地址B. 定义一个结构体类型指针变量,可以存放同一程序中任意结构体类型变量地 址C

4、. 在函数的形式参数表中,不能有结构体类型指针变量作为形式参数D. 表示结构体变量的地址时,不需要使用取地址运算符,而是用结构体变量名 直接表示10. 对于下面 C 语句序列,错误的叙述是(D)。char a100,*s1=a; char *s2;A. 可以使用 gets 函数为 a 输入数据B. 可以使用 gets 函数为 s1 输入数据C. 不能使用 gets 函数为 s2 输入数据D. 可以使用 scanf 函数为 s1 和 s2 输入数据11. 在下面的叙述中不正确的是(C)。A. a&=b 等价于 a=a&bB. a|=b 等价于 a=a|bC. a!=b 等价于 a=a!bD. a

5、=b 等价于 a=ab12. C 语言中,定义一个指向文件的指针的正确语句形式是(B)。A. void *sp;B. FILE *sp;C. FILE &sp;D. void &sp;13. C 语句:typedef int (*FP)(int a,int b);的意思是(D)。A. 定义一个整型指针变量 FPB. 声明一个返回整型指针的 FP 函数原型C. 定义一个指向函数的指针变量 FP D. 构造一个指向函数的指针类型 FP14. 计算机处理高级语言书写的程序时,通常使用( A)。A. 解释或编译两种方式B. 直接运行方式C. 分步运行方式D. 解释和编译两种方式15. 下面程序执行后的

6、输出结果是(D)。#include int main()int a=30,b=60; a=12345; b=54321; a=12345; b=54321;printf(a=%d,b=%dn,a,b); return 0;A. a=30,b=30 B. a=60,b=60 C. a=60,b=30 D. a=30,b=6016. 下面所列变量类别中,能够作为返回指针值函数返回对象的是( B )。A. 寄存器变量B. 全局变量C. 局部变量D. 函数形式参数17. 下面关于联合体变量空间的描述中,正确的是( D )。A. 联合体变量的所有成员分量都具有自己的空间B. 联合体变量的空间需求是所有成

7、员空间要求之和C. 虽然联合体变量所有成员不会同时出现,但仍然可以对它们进行初始化 D. 联合体变量中,空间要求最大的成员分量决定了联合体变量的空间需求 18. 下面所列定义联合体类型变量的方法中,错误的是( D )。A. 先定义类型,然后定义该类型的变量 B. 在定义联合体类型同时定义若干变量 C. 只定义若干个某种形式的联合体变量D. 先定义联合体变量,然后根据变量定义类型19. 下面选项中,正确的用户标识符是( D )。A. 2LINB. floatC. doubleD. al_time20. 下面关于结构体数据类型的描述中,不正确的是( D )。A. 在某个 C 程序中定义的结构体类型

8、只能在该程序中使用B. 在一个 C 程序中可以定义若干个结构体类型C. 在程序代码中,不是直接使用结构体类型,而是使用结构体变量D. 虽然可以定义多个结构体类型,但不能嵌套定义结构体类型21. 下面关于某结构体类型一级指针变量和数组关系的描述中,正确的是( A)。A. 指针变量不仅能够指向数组元素,也能够指向数组B. 指针变量仅能够指向数组元素,但不能指向数组C. 指针变量不能指向数组元素,但可以指向数组D. 指针变量既不能指向数组元素,也不能指向数组22. 设有 C 语句序列:int arr5,*p1; p1=&arr3;,那么能够输入数组 3 号 元素值的是(C)。A. scanf(%d,

9、p13);B. scanf(%d,arr3);C. scanf(%d,p1);D. scanf(%d,p1+3); 23.在 C 程序中,十进制整数 100 的十六进制书写形式是(D)。A. 100B. 0100IBM7090C. 0x100D. 0x6424. 下面关于条件编译预处理#ifdef 系列命令的叙述中,正确的是(C)。A. 使用#ifdef 系列预处理命令,可以在程序执行时对流程进行控制B. 在使用#ifndef 系列预处理命令时,#ifdef 必须和#endif 配合使用C. 使用#ifdef 系列预处理命令,可以在编译时对处理代码进行选择D. #ifdef 和#ifndef

10、预处理命令的功能完全相同25. 下面关于带参数宏的叙述中,错误的是(D)。A. 宏也有默认的作用域:从其定义处开始到所在源文件结束为止B. 带参数宏中的参数不需要指定数据类型C. 为避免歧义,替换用字符串中的形参最好用括号括起来D. 宏调用与函数调用都有调用时系统开销26. 下面关于文件包含预处理的叙述中,错误的是(D)。A. 文件包含预处理语句不一定要书写在程序代码的最前面B.文件包含预处理语句中,使用尖括号还是双引号括住文件名都可以C. 使用文件包含预处理,既可以包含系统的文件,也可以包含用户的文件D. 文件包含预处理语句一定要书写在程序代码的最前面27. 设有 C 语句序列:int ar

11、r5,*p1; p1=arr;,那么能够输入数组 3 号元素 值的是(A)。A. scanf(%d,p1+3);B. scanf(%d,arr3); C. scanf(%d,p1*3); D. scanf(%d,&p13);28. 设有 C 语句序列:int arr55,*p1; p1=&arr33;,那么能够输入数组 3 行 3 列元素值的是(C)。A. scanf(%d,p13);B. scanf(%d,arr3);C. scanf(%d,p1); D. scanf(%d,p1+3);29. 下面关于二维动态数组特点的描述中,错误的是(B)。A. 释放动态二维数组时,应该先释放每行的空间,

12、然后再释放指针数组B. 释放动态二维数组时,可以按照任意的顺序释放动态分配的所有空间C. 动态创建的二维数组不能进行初始化操作D. 动态二维数组的每一行不一定是连在一起的30. 下面程序执行后的输出结果是(D)。#include enum TEST A,B,C,D,Ei;void main()int a5=10,20,30,40,50; i=A;while(i=E)printf(%4d,ai);i=(enum TEST)(int)i+1);printf(n);A.1020B.102030C.10203040D.102030405031. 设由文件指针变量 fp 关联的数据文件中,数据按照 94

13、 行 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. 下面程序执行时输入的数据是:1 2 3 4 5,那么输出的结果是(D)。#include void main()int a5,i,*p=a,*p1=&p; for(i=0;i5;i+) sca

14、nf(%d,*p1+i);for(i=4;i;i-)printf(%2d,*(a+i); printf(n);A.1234 5B.1234C.5432 1D.543233. 对于下面的文件内容和程序,正确的结论是(B)。/以下是文件 mydoc.txt 的内容int s; s=100;/以下是 C 程序内容#include void main()#include mydoc.txt printf(s=%dn,s);A.程序有错,文件包含语句写在主函数体内B. 程序没有错误,输出是:s=100C. 程序没有语法错误,但没有输出数据D. 程序有错,两个文件包含预处理语句使用了不同的括号括住文件名3

15、4. 对于下面的 C 代码段,结论是(D)。char s100= abcdefg; s= 1234567A. 没有错误,字符串 s 的内容为 1234567 B. 没有错误,字符串内容为 abcdefgC. 没有错误,字符串内容为 abcdefg1234567D. 有语法错误,字符串内容为 abcdefg35. 在 C 程序中,可以定义全局变量位置是(A)。A. 所有函数的外面B. 主函数内部C. 主函数形式参数表中D. 前两个函数之间36. 定义一个联合体(共用体)类型变量时,系统分配给该变量的存储空间是(B)。A. 联合体变量中第一个成员所需要的存储空间B. 联合体变量中占用最大存储空间成

16、员所需要的存储空间C. 联合体变量中最后一个成员所需要的存储空间D. 联合体变量中所有成员需要存储空间的总和37. 设有如下所示 C 语句,若要使 p 指向结构体变量中的成员 n,正确的赋值 语句是(C)。struct T int n; double x;d,*pA. p=&d.nB. *p=d.nC. p=(struct T *)&d.nD. p=(struct T *)d.n38. 下面程序的功能是(C)。#include #include #include void main() char s20; int i;srand(unsigned)time(NULL);for(i=0;i19;

17、i+) si=a+rand()%26;si=0;puts(s);A. 产生长度为 20 的字符串并输出 B. 产生长度为 18 的字符串并输出 C.产生长度为 19 的字符串并输出D. 产生全部由字符a构成字符串并输出39. 下面程序执行后的输出结果是(C)。#include #include void ptr1(); void ptr2(); void main()printf(000); ptr1();ptr2(); printf(n);void ptr1()printf(111); ptr2();void ptr2()printf(222);A. 000222111222B. 11122

18、2000222C. 000111222222D. 22222200011140. 数学公式 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 #include typedef char FN50; void main()FN fn1=d:abc,fn2

19、=mydata.txt,fn; strcpy(fn,fn1);strcat(fn,fn2); puts(fn);A. d:abcB. mydata.txtC. d:abcmydata.txtD. d:abcmydata.txt42. 下面程序段运行后,变量 a、b、c 的值依次是(D)。int a,b,c; a=1,c=(a+,b=2,b/2,a+10); A. 1,1,11B. 1,2,12C. 2,2,11D. 2,2,1243. 设有定义:double (*f)(int a,float b,double c);,那么能够被指针变 量 f 指向函数的原型是(D)。A. double fun

20、1(int a,int b,int c);B. double fun2(float a,int b,double c);C. int fun3(int a,float b,double c);D. double fun4(int ,float,double);44. 设有 C 语句序列:int a5,b10; int p2=a,b;,那么不能够表示 b数组 3 号元素值的是(D)。A. b3 B. *(b+3)C. p13D. p03 45.设有 C 语句序列:float x; double y;,如果将变量 y 的值赋值给变量 x,(D)。A. 当 y 值本身的精度没有超过 float 能够

21、表达的精度时,赋值结果会损失精度B. 无论变量 y 的值如何,变量 x 都可以正确地接受赋值C. 无论变量 y 的值如何,变量 x 都不能正确地接受赋值D. 当 y 值本身的精度已经超过了 float 能够表达的精度时,赋值结果会损失精度46. 下面程序段运行后,变量 a、f 的值依次是(C)。int a=13;double f=12.545; a=a%(int)f;A. 0,12.545000B. 13 12.545000C. 1,12.545000D. 1,1247. 下面程序执行后的输出结果是(D)。#include struct Tint a; int b;void swap(stru

22、ct T a,struct T *b); void main()struct T x=10,20,y=30,40;swap(x,&y); printf(%d,%d,%d,%dn,x.a,x.b,y.a,y.b);void swap(struct T a,struct T *b)struct T t; t=a;a=*b;*b=t;A. 20,10,40,30B. 30,40,10,20C. 40,30,20,10D. 10,20,30,4048. 下面对牛顿迭代法的描述中,错误的是(B)。A. 牛顿迭代法是常见的求高阶方程根的方法之一 B. 使用牛顿迭代法,不需要任何高等数学的知识 C. 使用牛

23、顿迭代法时,需要指定一个粗略解D. 使用牛顿迭代法,需要了解导函数知识49. 设有 C 语句序列:int a35,(*p)5; p=a;, 那么不能够表示 a 数组 3行 3 列元素值的是(D)。A. a33B. *(*(p+3)+3)C. *(p3+3) D. *(*p+3+3)50. 下面关于单链表的描述中,错误的是(D)。A. 单链表的插入操作中,需要建立一个新数据结点B. 单链表的访问方式是顺序访问方式,即要从第一个结点开始依次访问其他结 点C. 建立单链表时,有正向生成构造和反向生成构造两种方法D. 单链表删除操作中,仅需要将被删结点从链表上取下来既可51.下面关于程序的说法中,正确

24、的是(C)。A. C 语言的源程序描述了功能的实现方法,计算机可以直接运行B. 目标文件已经是二进制代码,计算机可以辨识并直接运行C. 执行文件是二进制代码,计算机可以辨识并直接运行D. 源程序文件中即使有语法错误,也可以编译生成目标文件52. 下面程序执行后的输出结果是(D)。#include int main()int a=0x3030,b=0x6060;int mask1=0x00ff,mask2=0xff00; a&=mask1;b|=mask2; printf(a=0X%x,b=0X%xn,a,b); return 0;A.a=0Xff30,b=0Xff60B. a=0X30,b=0

25、X60 C. a=0Xff30,b=0X60 D. a=0X30,b=0Xff6053. 在 32 位开发环境下,下面程序段运行后,变量 a、b、c 的值依次是(C)。int a,b,c; a=sizeof(A); b=sizeof(int); c=sizeof(a,b+12.3); A. 1,8,8B. 1,4,4C. 1,4,8D. 1,8,454. 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. 函数

26、 void free(void * memblock)函数的功能是(B)。A. 在主存储器中的动态存储区分配由 memblock 所指向的存储块B. 释放由指针变量 memblock 指明首地址的由 malloc 类库函数分配的存储块C. 在硬盘存储区分配由 memblock 所指向的存储块D. 没有任何功能56. 下面程序执行的结果是(A )。#include#define AA 10#define BB 20#define CC(x,y) x*x+y*y void main() double s; s=CC(AA+BB,AA-BB);printf(s=%.0lfn,s);A. s=20B.

27、 s=20.0 C. s=1000 D. s=1000.057. 下面程序执行后输出的结果是( D)。#include void main()int a5=1,2,3,4,5,*p=a,i;for(i=0;i5;i+) printf(%2d,*(p+i);for(i=4;i;i-)printf(%2d,*(a+i); printf(n);A.123451234B.123451234 5C.123455432 1D.12345543258. 一个 C 程序的执行是从(A)。A. 本程序的 main 函数开始,在 main 函数结束B. 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C

28、. 本程序的 main 函数开始,到本程序文件的最后一个函数结束D. 本程序文件的第一个函数开始,到本程序 main 函数结束59. 下面程序执行后输出的结果是(D)。#include void main()int a33=1,2,3,4,9;int i,j,*p=&a12;*p+=a00*a20;for(i=0;i3;i+) for(j=0;j3;j+) printf(%3d,aij);printf(n);A. 12003 13900B. 1002300 139C. 1002 133900D. 10023 1390060. 下面程序执行后的输出结果是(D)。#include struct T

29、int a;int b;void swap(struct T *v);void main()struct T x2=10,20,30,40;swap(x);printf(%d,%d,%d,%dn,x0.a,x0.b,x1.a,x1.b);void swap(struct T *v)struct T t; t=*v;*v=*(v+1);*(v+1)=t;A. 10,20,30,40B. 20,10,40,30C. 40,30,20,10D. 30,40,10,2061. C 语言中,要表达整型变量 x 能够被 3 整除时条件成立语义,应该使用( B )。A. x%3B. !(x%3) C. x%

30、3=1 D. x%3=262. 下面程序段执行后,变量 s 和 i 的值分别是( B )。int i,s; i=1,s=0;while( s+=i+,i=10);A. 55 和 10B. 55 和 11C. 45 和 10D. 55 和 1163. C 语言中,表达式 18/4*sqrt(4.0)/8 的数据类型是(C)。A. intB. floatC. double D. 不确定的64. 函数调用语句:fseek(fp,-20L,2);的含义是(C)。A. 将文件位置指针移到距离文件头 20 个字节处B. 将文件位置指针从当前位置向后移动 20 个字节C. 将文件位置指针从文件末尾处后退 2

31、0 个字节D. 将文件位置指针移到离当前位置 20 个字节处65. 设 C 程序中有对全局变量 x 和 y 的定义如下所示,那么关于全局变量 x 和y 的作用域讨论中,正确的是(D)。double x;static double y;A. x 和 y 的作用域都不能扩充B. x 和 y 的作用域都可以扩充到同一程序的其他源文件中去C. x 和 y 的作用域都只能在它们所在源文件中扩充D. x 和 y 的作用域都可以在本源文件中扩充,且 x 的作用域还可以扩充到其他 源文件66. 下面程序执行后的输出结果是(C)。#include #include void main()char s100=ab

32、cdefg,s2100=ABCD; strcat(s+3,s2+2);puts(s+1);A. bcCDB. bcABCDC. bcdefgCDD. abcdefgCD67. 下面关于变量的可见性和存在性描述正确的是(A)。 A. 一个变量是可见的,那么它一定是存在的。B. 一个变量是存在的,那么它一定是可见的。C. 主函数中定义的变量比子函数中定义的变量作用域大。D. 函数内定义的静态变量比函数内定义的动态变量作用域大。68. 下面程序执行后的输出是(D )。 #include #include #define M1Hello #define M2 ,world! #define Msg1

33、0 #define Msg2 0 void main() char s100=HHHH; #ifdef Msg1 strcat(s,M2); #elif Msg2 strcpy(s,M1); #else strcpy(s,strcat(strcpy(s,M1),M2); #endif puts(s); A. HHHHB. Hello,world!C. HHHHHelloD. HHHH,world!69. 下面程序段执行后,变量 x 和 y 的值依次是(D)。int x=1234,y=0; do y=x%10;x/=10;while(x); A. 0 和 4B. 4 和 0C. 1 和 0D.

34、0 和 170. 下面代码段执行后的输出结果是(D)。int a9=10,20,30,40,50,60,70,80,90;int i; for(i=0;i2 的十进制值是(D)。A. 2B. 6C. 4D. 375. 下面程序段中,for 循环控制表达的含义是(D)。int x,a,b; scanf(%d,%d,&a,&b); for(x=a;x=b;x+)/数据处理部分A. 取出a,b区间的第一个数进行处理B. 取出a,b区间最后一个数进行处理C. 取出a,b区间第一个和最后一个数进行处理D. 依次取出a,b区间的所有数据进行处理76. 下面程序段执行后,循环体执行的次数和变量 x 值分别是

35、(D)。int x=10,c=0; for(;x-;) x-; c+;A. 4 和-4B. 5 和 0C. 4 和 0 D. 5,-177. 下面程序执行后的输入是(B)。#include #include #define M1 Hello#define M2 ,world!#define Msg1 0#define Msg2 0 void main()char s100=HHHH;#if Msg1 strcat(s,M2);#elif Msg2 strcpy(s,M1);#elsestrcpy(s,strcat(strcpy(s,M1),M2);#endif puts(s);A. HHHHB

36、. Hello,world!C. HHHHHelloD. HHHH,world!78. 表示关系 x0 或 x100 时,正确的 C 语言表达式是( B )。A. (x=100) B. (x=100) C. (0=x) & (x=100) D. (x=x)79. 下面程序没有语法错误,但存在一个潜在的问题,该问题是( D )。#include void main()char s13100=abc,123,ABC,*s2;gets(s11); gets(s2); puts(s11); puts(s2);A. 二维字符数组表示字符串B. 输入字符串时使用标准函数 gets C. 输出字符串时使用标

37、准函数 puts D. 指针变量 s2 没有确定的指向80. 使用割线法求高阶方程解,需要知道( C )。A. 方程根所在区间的下限和直线方程的构造方法B. 方程根所在区间的上限和直线方程的构造方法C. 方程根所在区间的上、下限和直线方程的构造方法 D. 方程根所在区间的上、下限和切线方程的构造方法 81. 下面程序的运行结果是( C )。#include #include void main()char a100=AB,b100=LMNP;int i=0; strcat(a,b);while(ai+)bi=ai; puts(b);A. LBB. ABC. LBLMNPD. ABLMNP82.

38、 设有如下所示 C 语句序列,则下面的表达式中值为 6 的是(D)。struct T int n;struct T *p;a3=5, &a1,7,&a2,9,NULL,*p=a;A. p+-nB. p-n+ C. (*p).n+D. +p-n83. 下面程序的功能是(C)。#include #include #include void main() int x,sum=0; int i;srand(unsigned)time(NULL);for(i=0;i=1;n-) if(n%3=0&n%5=0)break;A. 找出1,1000中能够被 3 整除的最大数B. 找出1,1000中能够被 5

39、整除的最大数C. 找出1,1000中能够被 3 和 5 同时整除的最大数D. 找出1,1000中能够被 3 和 5 同时整除的最小数86. 对于下面代码段的执行结果,叙述正确的是(D)。int a=5,b=10; int *x,*y,*t; x=&a,y=&b; t=x,x=y,y=t;A. a=5,b=10,x 指向 a,y 指向 b B. a=10,b=5,x 指向 b,y 指向 a C. a=10,b=5,x 指向 a,y 指向 b D. a=5,b=10,x 指向 b,y 指向 a87. 下面程序的运行结果是(C)。#include #define N 3int fun(int v,i

40、nt n,int *v1); void main() int aNN=1,2,3,4,5,6,7,8,9;int n1,n2; n1=fun(*a,N,&n2);printf(n1=%d,n2=%dn,n1,n2);int fun(int v,int n,int *v1) int i,j,nv; nv=*v1=0; for(i=0;in;i+) for(j=0;jn;j+) if(i=j) nv+=vi*n+j; if(i+j=n-1)*v1+=vi*n+j;return nv;A. n1=14,n2=16B. n1=16,n2=14 C. n1=15,n2=15 D. n1=14,n2=14

41、88. 下面程序的功能是(C)。#include #include int fun(char s); void main() char s1100;printf(?s1: ); gets(s1); printf(%dn,fun(s1);int fun(char s) int i; for(i=0;si;i+);return i;A. 将字符串 s1 拷贝给 s B. 将字符串 s 拷贝给 s1C. 统计字符串 s1 中有效字符个数D. 将字符串 s1 连接到 s 末尾89. 设主函数中有如下所示的变量定义和函数声明,那么正确的函数调用是(B)。 int a,b; char c1,c2; dou

42、ble m,n;double mul(double x,double y);A. func(m,n/10)B. mul(m,n)C. mul(a/b,n)D. mul(c1/c2,a/b)90. C 语言中,要表达字符变量 ch 不是数字字符的条件,应该使用(A)。 A. ch 9B. ch 9C. ch!= 0|ch!= 9D. ch!= 0&ch!= 9二、判断题(本大题共 50 分,共 50 小题,每小题 1 分)1. C 函数既可以嵌套定义,也可以嵌套调用.2. 两个函数仅仅是书写形式不同,实现的功能完全相同.3. 在 C 的标准库函数设计时,仅仅考虑了实现函数功能的高效性。4. 设有

43、 C 语句:int a10,*p;,那么让指针变量 p 指向数组 5 号元素的表达 式是 p=a5。5. C 程序中,使用字符数组表示字符串数据时,可以修改该字符串数据中的内容。6. C 程序的函数中,可以使用结构体数组作为形式参数。7.在书写 C 语言表达式时,如参与乘法运算的两个数据对象都是变量,则可以省 略乘号不写。8. 在 C 表达式计算中,参与运算的两个数据对象不同数据类型时,只能由系统 按照默认的方式进行数据类型转换。9. C 程序中,文件数据处理完成后要及时地关闭相关文件。10. C 程序中,合理使用枚举类型不但可以限制数据的取值范围,而且还可以 在一定程度上描述出数据对应的物理

44、含义。11. 如果要定义一个指向 double 类型二维数组元素的指针变量,那么指针变量 的数据类型也应该是 double。12. 下面语句序列中存在着语法错误。int a=5,b=10; (a+b*15)+;13. C 程序中,为已经存在的数据类型名取别名时,可以使用关键字typedefing。14. C 程序中,编译预处理命令#ifdef 和#endif 必须配合使用。15. C 程序中,定义在主函数中的变量就是全局变量,其作用范围是整个 C 程 序。16. C 程序中,如果要使用一个动态的二维整型数组,该数组的名字应该用一 个整型的二级指针变量表示。17. C 程序中,定义一个联合体类型

45、,就是确定有哪些成员参与存储区域的共 享。18. C 语言中,使用函数来实现结构化程序设计中的模块概念。19. C 标准库中提供了一系列关于字符分类的标准函数,这些函数使用时需要 用文件包含预处理命令将 ctype.h 头文件包含的源程序中来。20. 结构体类型指针变量,能够存放同类型结构体变量在内存中的起始地址。21. C 程序中,文件指针和文件内部读写位置指针都用于表示被处理的文件。22. 设用变量 f 表示银行一年期存款利息,用变量 b 表示客户本金数,那么在 程序中可以用公式 b*(1+f)来计算每年的存款总金额。23. 数学学科中我们常常把方程也称为函数,所以 C 程序中的函数就是方

46、程。24. C 程序中,通过标准函数 rand()的使用就可以产生任意类型的随机数据。25. C 语言中,通过主函数带参来实现命令行参数功能。26. C 程序中,使用#ifdef、#else 和 C 控制语句 if、else 都可以形成双分支 的概念,所以它们在程序中的作用是相同的。27. C 语言中没有逻辑数据类型,关系运算的结果使用整数 0 和 1 来表示。28. 由于所有的数据在内存中都是用二进制存储的,所以在程序中所有类型的 数据都可以参加位运算。29. C 程序中初始化多维数组时,如果提供了数组的全部元素值,则可任意地 选择省略其中一维的长度指定。30. C 程序中,用在函数之间通过

47、结构体指针变量传递函数参数来替换直接传 递构体变量,更多的原因是为了提高程序执行效率。31.C 语言表达式运算中,同级运算总是从左到右进行。32. 无论函数的嵌套调用有多少层,任意两层函数调用的行为和单层函数调用 都是相同的。33. C 程序中初始化字符数组时,若在此后的程序代码中将字符数组作为字符 串整体考虑,那么初始化数据最后的0字符是必须的。34. C 语言中,结构体类型与数组不同之处在于:数组所有元素必须同类型, 而结构体类型的成员分量可以不同数据类型。35. C 程序中,使用#if、#else 和 C 控制语句 if、else 都可以形成双分支的概 念,所以它们在程序中的作用是相同的

48、。36. 设 C 程序中有定义:int a=0x3030,b;,则表达式 b=aaa;与 b=a;等价。37. 在 C 程序中,函数内部,复合语句内部,函数的参数表中定义的变量都是 局部变量,它们的作用范围都是整个函数内部。38. C 语言中,二维数组的起始地址有 4 种表示形式,它们都是二级地址形 式。39. 因为地址本质上是无符号整数,所以只需要定义整型的指针变量就可以指 向任意数据类型的变量。40. C 语言中,语句序列:int x; double y; int *p2=&x,&y;是正确的。 41. C 程序中定义指向函数指针变量时,不仅要正确命名指针变量,还需要参 照被指向函数的返回值类型和参数表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论