【计算机类职业资格】二级C语言-编译预处理和动态存储分配、结构体和共用体、文件(一)及答案解析.doc
《【计算机类职业资格】二级C语言-编译预处理和动态存储分配、结构体和共用体、文件(一)及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】二级C语言-编译预处理和动态存储分配、结构体和共用体、文件(一)及答案解析.doc(34页珍藏版)》请在麦多课文档分享上搜索。
1、二级 C 语言-编译预处理和动态存储分配、结构体和共用体、文件(一)及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:100.00)1.以下函数的功能是,通过键盘输入数据,为数组中的所有元素赋值。在下划线处应填入的是_。#define N 10void arrin(int xN) int i=0; while(iN)scanf(“% d“, _); A.x+i B.for(i=1; i=NUM; i+);printf(“% d/n“, i);for 循环执行的次数是_。 A.5 B.6 C.8 D.9(分数:2.50)A.B.C.D.4.以下程序的输出
2、结果为_。#include stdio.h#define SQR(x) x*xmain()int a, k=3;a=+SQR(k+1);printf(“% d/n“, a); A.6 B.10 C.8 D.9(分数:2.50)A.B.C.D.5.以下叙述中,正确的是_。 A.用#include 包含的头文件的后缀不可以是“.a” B.若一些源程序中包含某个头文件,当该头文件有错误时,只需对该头文件进行修改,包含此头文件的所有源程序不必重新进行编译 C.宏命令行可以看做是一行 C 语句 D.C 编译中的预处理是在编译之前进行的(分数:2.50)A.B.C.D.6.程序中头文件 typel.h 的
3、内容是:#define N 5#define M1 N * 3/ *程序如下: * /#include “stdio.h“#include “typel.h“#define M2 N * 2main() int i;i=M1+M2;printf(“% d/n“, i);程序编译后运行的输出结果是_。 A.10 B.20 C.25 D.30(分数:2.50)A.B.C.D.7.有以下程序:#include stdio.h#include stdlib.hint fun(int n) int * p;p=(int *)malloc(sizeof(int);*p=n;return * p;main(
4、) int a;a=fun(10);printf(“% d/n“, a+fun(a);程序的运行结果是_。 A.0 B.10 C.20 D.出错(分数:2.50)A.B.C.D.8.以下程序的输出结果是_。#include void fut(int * *s, int p23) * *s=p11; main() int a23=1,3,5,7,9,11, *p;p=(int *)malloc(sizeof(int);fut(printf(“% d/n“, *p);free (p); A.1 B.7 C.9 D.11(分数:2.50)A.B.C.D.9.对下面程序段,正确的判断是_。#defin
5、e A 3#define B(a) (A+1) *a)x=3 * (A+B(7); A.程序错误,不许嵌套宏定义 B.x=93 C.x=21 D.程序错误,宏定义不许有参数(分数:2.50)A.B.C.D.10.以下程序的输出结果为_。#include stdio.h#define F(y) 3.84+y#define PR(a) printf(“% d“, (int) (a)#define PRINT(a) PR(a); putchar(/n)main() int x=2;PRINT(F(3) *x); A.8 B.9 C.10 D.11(分数:2.50)A.B.C.D.11.以下说法中,正
6、确的是_。 A.#define 和 printf 都是 C 语句 B.#define 是 C 语句,而 printf 不是 C.printf 是 C 语句,但#define 不是 D.#define 和 printf 都不是 C 语句(分数:2.50)A.B.C.D.12.以下程序的输出结果是_。#define f(x) x*x#include stdio.hmain() int a=6, b=2, c;c=f(a)/f(b);printf(“% d/n“, c); A.9 B.6 C.36 D.18(分数:2.50)A.B.C.D.13.以下程序运行后,输出的结果是_。#define PT
7、5.5#define S(x) PT*x*x#include stdio.hmain() int a=1, b=2;printf(“% 4.1f/n“, S(a+b); A.49.5 B.9.5 C.22.0 D.45.0(分数:2.50)A.B.C.D.14.下列程序执行后的输出结果是_。#define MA(x) x* (x-1)#include stdio.hmain() int a=1, b=2; printf(“% d/n“, MA(1+a+b); A.6 B.8 C.10 D.12(分数:2.50)A.B.C.D.15.有以下程序:#define N 2#define M N +1
8、#define NUM 2 * M+1main() int i;for(i=1; i=NUM; i+) printf(“% d/n“, i);该程序中的 for 循环执行的次数是_。 A.5 B.6 C.7 D.8(分数:2.50)A.B.C.D.16.程序中头文件 typel.h 的内容是:#define N 5#define M1 N * 3程序如下:#include “typel.h“#define M2 N * 2main() int i;i=M1+M2; printf(“% d/n“, i);程序编译后运行的输出结果是_。 A.10 B.20 C.25 D.30(分数:2.50)A.
9、B.C.D.17.以下正确的描述为_。 A.每个 C 语言程序必须在开头使用预处理命令#include B.预处理命令必须位于 C 源程序的首部 C.在 C 语言中预处理命令都以“#”开头 D.C 语言的预处理命令只能实现宏定义和条件编译的功能(分数:2.50)A.B.C.D.18.从下列选项中选择不会引起二义性的宏定义是_。 A.#define POWER(x)x*x B.#define POWER(x)(x)*(x) C.#define POWER(x)(x*x) D.#define POWER(x)(x)*(x)(分数:2.50)A.B.C.D.19.设有以下宏定义:#define N
10、3#define Y(n) (N+1)*n)则执行语句“z=2 * (N+Y(5+1);“后, z 的值为_。 A.出错 B.42 C.48 D.54(分数:2.50)A.B.C.D.20.若有宏定义#define MOD(x, y) x%y,则执行以下语句后的输出为_。int z, a=15, b=100;z=MOD (b, a);printf(“% d/n“, z+); A.11 B.10 C.6 D.宏定义不合法(分数:2.50)A.B.C.D.21.以下程序的输出结果是_。#include stdio.hint a33=1,2,3,4,5,6,7,8,9, *p;f(int *s, i
11、nt p3) *s=p11; main() p=(int *)malloc(sizeof(int);f(p, a);printf(“% d/n“, *p);free(p); A.1 B.4 C.7 D.5(分数:2.50)A.B.C.D.22.以下程序的输出结果是_。#include stdio.htypedef union long x2;int y4;char z8; MYTYPE;MYTYPE them;main() printf(“% d/n“, sizeof(them); A.32 B.16 C.8 D.24(分数:2.50)A.B.C.D.23.以下程序的运行结果是_。#inclu
12、de “stdio.h“main() struct date int year, month, day; today;printf(“% d/n“, sizeof(struct date); A.6 B.8 C.10 D.12(分数:2.50)A.B.C.D.24.若有以下结构体定义:struct example int x;int y; v1;则_是正确的引用或定义。 A.example, x=10; B.example v2; v2.x=10; C.struct v2; v2.x=10; D.struct example v2=10;(分数:2.50)A.B.C.D.25.有以下程序:#i
13、nclude stdio.hmain() struct cmplxint x; int y; cnum2=1,3,2,7;printf(“% d/n“, cnum0.y/cnum0.x*cnum1.x);则正确的输出结果为_。 A.0 B.1 C.3 D.6(分数:2.50)A.B.C.D.26.设有以下定义:struct sk int a;float b; data;int *p;若要使 p 指向 data 中的 a 域,正确的赋值语句是_。 A.p= B.p=data.a; C.p= D.*p=data.a;(分数:2.50)A.B.C.D.27.以下程序的输出是_。#include st
14、dio.hmain() struct s1 int x; int y;struct s1 a=1,3;struct s1 *b=b-x=10;printf(“% d% d/n“, a.x, a.y); A.13 B.103 C.310 D.31(分数:2.50)A.B.C.D.28.以下程序的执行结果是_。#include stdio.hunion un int i;char c2;main() union un x;x.c0=10;x.c1=1;printf(“/n% d“, x.i); A.266 B.11 C.265 D.138(分数:2.50)A.B.C.D.29.以下程序的输出结果是
15、_。union myun structint x, y, z; u;int k;a;main() a.u.x=4; a.u.y=5; a.u.z=6;a.k=0;printf(“% d/n“, a.u.x); A.4 B.5 C.6 D.0(分数:2.50)A.B.C.D.30.已知字符 0 的 ASCII 代码值的十进制数是 48,有以下程序:#include stdio.hmain() union int i2;long k;char c4; r, *s=s-i0=0x39; s-i1=0x38;printf(“% x/n“, s-c0);其输出结果是_。 A.39 B.9 C.38 D.
16、8(分数:2.50)A.B.C.D.31.在 16 位的 PC 上使用 C 语言,若有以下定义:struct data int i;char ch;double f; b;则结构变量 b 占用内存的字节数是_。 A.1 B.2 C.8 D.11(分数:2.50)A.B.C.D.32.设有以下说明和定义语句,则下面表达式中值为 3 的是_。struct s int i;struct s *i2;static struct s a3=1, static struct s *ptr;ptr= A.ptr-i+ B.ptr+-I C.*ptr-i D.+ptr-i(分数:2.50)A.B.C.D.33
17、.有以下程序:main() union unsigned int n;unsigned char c; u1;u1.c=A;printf(“% c/n“, u1.n);执行后输出结果是_。 A.产生语法错误 B.随机值 C.A D.65(分数:2.50)A.B.C.D.34.设有以下说明语句:struct stu int a;float b; stutype;则下面的叙述,正确的是_。 A.struct 是结构体类型名 B.struct stu 是用户定义的结构体变量名 C.stutype 是用户定义的结构体变量名 D.a 和 b 都是结构体变量名(分数:2.50)A.B.C.D.35.以下程
18、序输出的结果是_。#include stdio.htypedef union long i;int k5;char c; DATE;struct date int cat;DATE cow;double dog; too;DATE max;main() printf(“% d/n“, sizeof(struct date)+sizeof(max); A.25 B.30 C.18 D.8(分数:2.50)A.B.C.D.36.以下对结构体变量 stu1 中成员 age 的非法引用是_。struct student int age;int num;stu1, *p;p= A.stu1.age B.
19、student.age C.p-age D.(*p).age(分数:2.50)A.B.C.D.37.下列程序中,结构体变量 a 所占内存字节数是_。union U char st4;int i;long l;struct A int c;union U u;a; A.4 B.5 C.6 D.8(分数:2.50)A.B.C.D.38.设有以下说明语句:struct ex int x; float y; char z; example;则下面的叙述中,不正确的是_。 A.struct 是结构体类型的关键字 B.example 是结构体类型名 C.x,y,z 都是结构体成员名 D.structex
20、是结构体类型名(分数:2.50)A.B.C.D.39.若有下面的说明和定义:struct test int m1; char m2; float m3;union uu char u15;int u22; ua; myaa;则 sizeof(struct test)的值是_。 A.12 B.16 C.14 D.9(分数:2.50)A.B.C.D.40.已知:union int i;char c;float a; test;则 sizeof(test)的值是_。 A.4 B.5 C.6 D.7(分数:2.50)A.B.C.D.二级 C 语言-编译预处理和动态存储分配、结构体和共用体、文件(一)答
21、案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:100.00)1.以下函数的功能是,通过键盘输入数据,为数组中的所有元素赋值。在下划线处应填入的是_。#define N 10void arrin(int xN) int i=0; while(iN)scanf(“% d“, _); A.x+i B.for(i=1; i=NUM; i+);printf(“% d/n“, i);for 循环执行的次数是_。 A.5 B.6 C.8 D.9(分数:2.50)A.B.C. D.解析:解析 程序中 for 循环的执行次数取决于 NUM 的值,因此正确地计算 NUM
22、的值是关键。在(M+1)*M/2 中替换 M。替换后为(N+1+1)*N+1/2;,然后替换 N 为(2+1+1)*2+1/2。这时可以根据其中的数字进行计算,得到 4*2+1/2,计算的最后结果是 8。 总结:切不可直接把值代入。例如,认为 M 的值是 3,于是认为 NUM 是(3+1)*3/2,而得出错误的结果 6。4.以下程序的输出结果为_。#include stdio.h#define SQR(x) x*xmain()int a, k=3;a=+SQR(k+1);printf(“% d/n“, a); A.6 B.10 C.8 D.9(分数:2.50)A.B.C.D. 解析:解析 此题
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 二级 语言 编译 预处理 动态 存储 分配 结构 共用 文件 答案 解析 DOC

链接地址:http://www.mydoc123.com/p-1325484.html