[计算机类试卷]国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷3及答案与解析.doc
《[计算机类试卷]国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷3及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷3及答案与解析.doc(27页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言机试(结构体、共用体、位运算及文件操作)模拟试卷 3及答案与解析 一、选择题 1 以下关于 typedef的叙述错误的是 ( A) typedef只是将已存在的类型用一个新的名字来代表 ( B)用 typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名 ( C)用 typedef可以增加新类型 ( D)用 typedef为类型说明一个新名,通常可以增加程序的可读性 2 以下叙述中错误的是 ( A)可以用 typedef将已存在的类型用一个新的名字来代表 ( B)可以通过 typedef增加新的类型 ( C)用 typedef定义新的类型名后,原有类型名仍有效 (
2、 D)用 typedef可以为各种类型起别名,但不能为变量起别名 3 若有定义 typedefchar T10; T*a;上述定义中 a的类型与下面选项中完全相同的是 ( A) char(*a)10; ( B) char*a; ( C) char a10; ( D) char*a10; 4 以下叙述中正确的是 ( A)使用 typedef说明新类型名时,其格式是: typedef新类型名原类型名; ( B)使用 typedef说 明新类型名时,后面不能加分号 ( C)在程序中,允许用 typedef来说明一种新的类型名 ( D)在使用 typedef改变原类型的名称后,只能使用新的类型名 5
3、下面结构体的定义语句中,错误的是 ( A) struct ord int x; int y; int z; ; struct ord a; ( B) struct ord int x; int y; int z; struct ord a; ( C) struct ord int x; int y; int z; a; ( D) struct int x; int y; int z; a; 6 有以下程序 struct Sint a, b; )data2=10, 100, 20, 200; main() struct S p=data1; printf(“ d n“, +(p a); ) 程序
4、运行后的输出结果是 ( A) 11 ( B) 20 ( C) 21 ( D) 10 7 有以下程序 struct Sint n; int a20; ); voidf(structS *p) int ij, t; for(i=0; i p- n-1; i+) for(j=i+l; j p- n; j+) if(p- aip- aj)t=p- ai; p- ai=p- aj; p- aj-t; main() int i; struct S s=10, 2, 3, 1, 6, 8, 7, 5, 4, 10, 9; f(&s); for(i=0; i s n; i+)printf(“ d, “, s
5、ai); ( A) 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ( B) 2, 3, 1, 6, 8, 7, 5, 4, 10, 9, ( C) 10, 9, 8, 7, 6, 1, 2,3, -4, 5, ( D) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 8 程序中已构成如下图所示的不带头结点的单向链表结构,指针变量 s、 p、 q均已正确定义,并用于指向链表结点,指针变量 s总是作为头指针指向链表的第一个结点。 若有以下程序段: q=s; s=s- next; p=s; while(p- next)p=p- next; p- next=q; q-ne
6、xt=NULL; 该程序段实现的 功能是 ( A)尾结点成为首结点 ( B)首结点成为尾结点 ( C)删除首结点 ( D)删除尾结点 9 若有以下语句 typedef struct Sint g; char h; )T;以下叙述中正确的是 ( A)可用 S定义结构体变量 ( B) S是 struct类型的变量 ( C) T是 struct S类型的变量 ( D)可用 T定义结构体变量 10 设有以下语句 typedefstruct TTchar c; int a4; CIN;则下面叙述中正确的是 ( A) TT是 struct类型的变量 ( B)可以 用 TT定义结构体变量 ( C) CIN是
7、 struct TT类型的变量 ( D)可以用 CIN定义结构体变量 11 有以下程序段 struct stint x; int*y; )*pt; int a=1, 2), b=3, 4); struct st c2=10, a, 20, b); pt=c; 以下选项中表达式的值为 11的是 ( A) pt- x ( B) *pt- y ( C) +pt- x ( D) (pt+)- x 12 有下列程序: #include #include typedef structchar name9; char sex; float score2; STU; STU f(STU a) STU b=“Z
8、hao“, m, 85 0, 90 0; int i; strcpy(a name, b name); a sex=b sex; for(i=0; i 2; i+)a scorei=b scorei; return a; main() STU c=“tQian“, f, 95 0, 92 0), d; d=f(c); printf(“ s, c, 2 0f, 2 0f n“, d neme, d sex,d score0, d score1); 程序的运行结果是 ( A) Qian, m, 85, 90 ( B) Zhao, f, 95, 92 ( C) Zhao, m, 85, 90 ( D
9、) Qian, f, 95, 92 13 有以下程序 #include #include structA int a; char b10; double c; ; void f(structA t); main() structA a=1001, “ZhangDa“, 1098 0); f(a); printf(“ d, s, 6 1f n“,a a, a b, a c); void f(structA t) t a=1002; strcpy(t b, “ChangRong“); t c=1202 0; ) 程序运行后的输出结果是 ( A) 1002, ChangRong, 1202 0 (
10、B) 1001, ChangRong, 1098 0 ( C) 1001, ZhangDa, 1098 0 ( D) 1002, ZhangDa, 1202 0 14 有以下程序 #include struct tt int x; struct tt*y; )*p; struct tt a4=20, a+1, 15, a+2, 30, a+3, 17, a; main() int i; p=a; for(i=1; i =2; i+)printf(“ d, “, p- x); p=p- y; ) 程序的运行结果是 ( A) 20, 15, ( B) 30, 17 ( C) 15, 30, ( D
11、) 20, 30, 15 设有定义: structchar mark12; int numl; double num2; )t1, t2;若变量均已正确赋初值,则以下语句中错误的是 ( A) t2 num1=t1 num1: ( B) t2 mark=t1 mark; ( C) t1=t2; ( D) t2 num2=t1 num2; 16 若有以下程序 struct stuchar*name, gender; int score; ; main() struct stu a=NULL, m, 290, b; a name=(char*)malloc(10); strcpy(a name, “
12、Zhao“); b=a b gender=f; b score=350; strcpy(b name, “Qian“); printf(“ s, c, d, “, a name, a gender, a score); printf(“ s, c, d n“, b name, b gender, b score); 则程序的输出结果是 ( A) Zhao, m, 290, Qian, f, 350 ( B) Qian, f, 350, Qian, f, 350 ( C) Zhao, m, 290, Zhao, f, 350 ( D) Qian, m, 290, Qian, f, 350 17
13、若有以下程序 typedef struct stuchar name10, gender; int score; STU; void f(STU a, STU b) b=a: printff(“ s, c, d, “, b name, b gender, b score); main() STU a=“Zhao“, m, 290, b=“Qian“, f, 350; f(a, b); printf(“ s, c, d n“, b name, b gender, b score); 则程序的输出结果是 ( A) Zhao, m, 290, Zhao, m, 290 ( B) Zhao, m, 2
14、90, Qian, f, 350 ( C) Qian, f, i350, Qian, f, 350 ( D) Zhao, m, 290, Zhao, f, 350 18 为了建立如图所示的存储结构 (即每个结点含两个域, data是数据域, next是指向结点的 指针域 ),则在 _处应填入的选项是 Struct linkchar data;_node; ( A) struct link*next; ( B) link next; ( C) link*next; ( D) struct link next; 19 以下叙述中正确的是 ( A)结构体类型中的成分只能是 C语言中预先定义的基本数据
15、类型 ( B)在定义结构体类型时,编译程序就为它分配了内存空间 ( C)结构体类型中各个成分的类型必须是一致的 ( D)一个结构体类型可以由多个称为成员 (或域 )的成分组成 20 以下叙述中正确的是 ( A)函数的返回值不能是结构体类型 ( B)函数的返回值不能是结构体指针类型 ( C)在调用函数 时,可以将结构体变量作为实参传给函数 ( D)结构体数组不能作为参数传给函数 21 设有如下的说明和定义 structint a; char*s; x, *p=&x; x a=4;x s=“hello“;则以下叙述中正确的是 ( A)语句 +p- a;的效果是使 p增 1 ( B) (p+)- a
16、与 p+- a都是合语法的表达式,但二者不等价 ( C)语句 *p- s+;等价于 (*p)- s+; ( D)语句 +p- a;的效果是使成员 a增 1 22 若已建立以下链表结构,指针 p、 s分别指向如图所示结点则不 能将 s所指节点插入到链表末尾的语句组是 ( A) s- next= 0; p=p- next; p- next=s; ( B) p=p- next; s- next=p- next=s; ( C) p=p- next; s- next=p- next; P- next=s; ( D) p=(*p) next; (*S) next=(*p) next; (*p) next=
17、s; 23 以下叙述中错误的是 ( A)函数的返回值类型不能是结构体类型,只能是简单类型 ( B)只要类型相同,结构体变量之间可以整体赋值 ( C)可以 通过指针变量来访问结构体变量的任何成员 ( D)函数可以返回指向结构体变量的指针 24 有以下程序 main() unsigned char a=2, b=4, c=5, d; d=a b; d&=c; printf(“ d n“, d); 程序运行后的输出结果是 ( A) 3 ( B) 5 ( C) 4 ( D) 6 25 若有以下程序段 int r=8; printf(“ d n“, r 1); 输出结果是 ( A) 8 ( B) 4 (
18、 C) 16 ( D) 2 26 有以下程序 #include stdio h main() int a=2, b; b=a 2; printf(“ d n“, b); ( A) 4 ( B) 6 ( C) 8 ( D) 2 27 有以下程序 #include main() int a=5, b=1, t; t=(a 2)b; printf(“ d n“, t); ( A) 11 ( B) 6 ( C) 21 ( D) 1 28 若有以下程序 main() int c: c=105: printf(“ d n“, c); 则程序的输出结果是 ( A) 1 5 ( B) 10000 ( C) 5
19、 ( D) 105 29 有以下程序 main() int i=0: 1=1: prinff(“ d n“, i); 程序运行后的输出结果是 ( A) 0 ( B) 1 ( C) 8 ( D) -1 30 下面关于位运算符的叙述,正确的是 ( A) #表示 “按位异或 ”的运算 ( B) 表示 “按位或 ”的运算 ( C) 表示 “按位异或 ”的运算 ( D) &表示 “按位与 ”的运算 31 下列关于 C语言文件的叙述中正确的是 ( A)文件由结构序列组成,可以构成二进制文件或文本文件 ( B)文件由一系列数据依次排列组成,只能构成二进制文件 ( C)文件由数据序列组成,可以构成二进制文件或
20、文本文件 ( D)文件由字符序列组成,其类型只能是文本文件 32 设文件指针 fp已定义,执行语句 fp=fopen(“file“, “w“);后,以下针对文本文件 file操作叙 述的选项中正确的是 ( A)写操作结束后可以从头开始读 ( B)可以在原有内容后追加写 ( C)可以随意读和写 ( D)只能写不能读 33 有以下程序 #inclllde main() FILE*fp; int i, a6=1, 2, 3, 4, 5, 6; fp=fopen(“d2 dat“, “w+“); for(i=0; i 6; i+)fprintf(fp, “ d n“, ai); rewind(fp);
21、 for(i=0; i 6; i+)fscanf(fp, “ d“, &a5-i); fclose(fp); for(i=0; i 6; i+)printf(“ d“, ai); ( A) 1, 2, 3, 4, 5, 6 ( B) 6, 5, 4, 3, 2, 1, ( C) 4, 5, 6, 1, 2, 3, ( D) 1, 2, 3, 3, 2, 1, 5 7文件的操作函数 34 有下列程序: #include main() FILE*fp; int a10=1, 2, 3, i, n; fp=fopen(“d1 dat“, “w“); for(i=0; i 3; i+)fprintf(
22、fp, “ d“, ai); fprintf(fp, “ n“); fclose(fp); fp=open(“d1 dat“, “r“); fscanf(fp, “ d“, &n); fclose(fp); printf(“ d n“, n); 程 序的运行结果是 ( A) 12300 ( B) 123 ( C) 1 ( D) 321 35 有以下程序 #include main() FILE *pf; char *s1=“China“, *s2=“Beijing“; pf=fopen(“abc dat“, “wb+“); fwrite(s2, 7, 1, pf); rewind(pf); *
23、文件位置指针回到文件开头 * fwrite(s1, 5, 1, pf); fclose(pf); 以上程序执行后 abe dat文件的内容是 ( A) Chinang ( B) China ( C) ChinaBeijing ( D) BeijingChina 36 有下列程序: #include main() FILE*fp; int a10=1, 2, 3, 0, 0), i; fp=fopen(“d2 dat“, “wb“); fwtite(a, sizeof(int), 5, fp); fwrite(a, sizeof(int), 5, fp); fclose(fp); fp=fope
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 结构 共用 运算 文件 操作 模拟 答案 解析 DOC
