[计算机类试卷]国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷5及答案与解析.doc
《[计算机类试卷]国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷5及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷5及答案与解析.doc(27页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言机试(结构体、共用体、位运算及文件操作)模拟试卷 5及答案与解析 一、选择题 1 以下关于 typedef的叙述错误的是 ( A) typedef只是将已存在的类型用一个新的名字来代表 ( B)用 typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名 ( C)用 typedef可以增加新类型 ( D)用 typedef为类型说明一个新名,通常可以增加程序的可读性 2 以下叙述中错误的是 ( A)可以用 typedef将已存在的类型用一个新的名字来代表 ( B)可以通过 typedef增加新的类型 ( C)用 typedef定义新的类型名后,原有类型名仍有效 (
2、 D)用 typedef可以为各种类型起别名,但不能为变量起别名 3 若有定义 typedefcharT10; Tca;上述定义中 a的类型与下面选项中完全相同的是 ( A) char(*a)10; ( B) char*a; ( C) chara10; ( D) char*a10; 4 以下叙述中正确的是 ( A)使用 typedef说明新类型名时,其格式是: typedef新类型名原类型名; ( B)使用 typedef说明新 类型名时,后面不能加分号 ( C)在程序中,允许用 typedef来说明一种新的类型名 ( D)在使用 typedef改变原类型的名称后,只能使用新的类型名 5 有以
3、下程序 #include stdio h typedefstructintb, p; )A; voidf(Ac)/*注意: C是结构变量名 */ intj; c b+=l; c p+=2; main( ) i; Aa=l, 2; f(a); printf(” d, dn”, a b, a p); ) 程序运行后的输出结果是 ( A) 274 ( B) 1, 2 ( C) 1, 4 ( D) 2,3 6 设有定义: structcomplexintreal, unreal; datal=1, 8, data2; 则以下赋值语句中错误的是 ( A) data2=(2, 6); ( B) data2
4、=datal; ( C) data2 real=data1 real; ( D) data2 real=daM unreal; 7 有以下程序 #include stdio h #include string h typedefstructcharname9; charsex; intscore2; STU; STUfSTUa) STUb=Zhao, m, 85, 90; inti; strcpy(a name, b name); a sex=b sex; for(i=0; i 2; i+)a scorei-b scorei; returna: main( ) STUc=Qian,f, 95,
5、 92, d; d=f(c); printf” s, c, d, d, ”, d name, d sex, d。 score0, d score1); printf(” s, c, d, d, ”, c name, C sex, C score0, C score1); ( A) Zhao, m, 85, 90, Zhao, m, 85, 90 ( B) Qian, f,95, 92, Qian, f,95, 92 ( C) Zhao, m, 85, 90, Qian, f,95, 92 ( D) Qian, f,95, 92, Zhao, m, 85, 90 8 有以下结构体说明、变量定义和
6、赋值语句 structSTDcharname10; intage;charsex; s5, *ps; ps= s0;则以下 scanf函数调用语句有错误的是 ( A) scanf dt, s0 age); ( B) scanf c, (ps- sex); ( C) scanff s, s0 name); ( D) scanff dtt, ps- age); 9 有以下程序 #include stdio h #include string h StructA inta; charb10; doublec; ); structAf(structAt); main( ) structAa=1001,
7、ZhangDa,1098 0); a=f(a); printf( d, s, 6 1fn, a a, a b, a c); structAfStructAt) t a=1002; strcpy(t b, ”ChangRong”); t C 1202 0; returnt; 程序运行后的输出结果是 ( A) 1002, ZhangDa, 1202 0 ( B) 1002, ChangRong, 1202 0 ( C) 1001, ChangRong, 1098 0 ( D) 1001, ZhangDa, 1098 0 10 有以下程序 #includestructordintx, y; )dt2
8、=1,2, 3, 4);main( )structord*p=dt; printf” d, ”, +(p- x); printf(” dn”, +(p- y); )程序运行后的输出结果是 ( A) 4, 1 ( B) 2, 3 ( C) 3, 4 ( D) 1, 2 11 有下列程序: structSintn; inta20; ); voidflint*a, intn) inti; for(i=0; i n-1; i+)ai+: i; ) main( ) inti; structSs=10, 2, 3, 1, 6, 8, 7, 5, 4, 10, 9); f(s a, s n); for(i=
9、0; i s n; i+)printf(” d, ”, s ai); ) 程序运行后的输出结果是 ( A) 3,4, 2, 7, 9, 8, 6, 5, 11, 10, ( B) 2, 3, 1, 6, 8, 7, 5, 4, 10, 9, ( C) 2, 4, 3, 9, 12, 12, 11, 11, 18, 9, ( D) 1, 2, 3, 6, 8, 7, 5, 4, 10, 9 12 假定已 建立以下链表结构,且指针 p和 q已指向如图所示的节点:则以下选项中可将 q所指节点从链表中删除并释放该节点的语句组是 ( A) p=q- next; free(q); ( B) p=: q;
10、free(q); ( C) (*p) next=(*q) next; free(p); ( D) p- next q next; free(q); 13 有以下定义和语句: structworkers intnum; charname20; charc; struct intday; intmonth; intyear; s; ); structworkersw, *pw; pw= w; 能给 W中 year成员赋 1980的语句是 ( A) w year=1980; ( B) pw- year=1980; ( C) w S year=1980; ( D) *pw year=1980; 14
11、有以下程序 #include stdio h #includestring h typedefstructcharname9; charsex; floatscore2; STU; voidf(STUa) STUb=”Zhao,m, 85 0, 90 0); inti; strcpy(a name, b name); a sex=b sex; for(i=0; i 2; i+)a scorei=b scorei; 程序的运行结果是 ( A) Qian, m, 85, 90 ( B) Zhao, m, 85, 90 ( C) Zhao, f,95, 92 ( D) Qian, f,95, 92
12、15 有以下程序 structA inta; charb10; doublec; ; voidf(structAt); main( ) structAa。 1001,ZhangDa”, 1098 0); ffa); printf(” d, s, 6 1fn”, a a, a b, a c); voidf(structAt) t a=1002; strcpy(t b, ”ChangRong”); t c=1202 0; 程序运行后的输出结果是 ( A) 1002, ChangRong, 1202 0 ( B) 1001, ZhangDa, 1098 0 ( C) 1001, ChangRong,
13、 1098 0 ( D) 1002, ZhangDa, 1202 0 16 若有以 下程序 typedefstructstuchar*name, gender; intscore; STU; voidf(char*p)p=(char*)malloc(10); strcpy(p, “Qian”); ) main( ) STUa=fNULL, m, 290, b; a name=(char*)malloc(10); strcpy(a name, Zhao); b=a f(b name); b gender f: b score=350; printf( s, c, d, , a name, a g
14、ender,a score); printf( s, c, dha, b name, b gender,b score); 则程序的输出结果是 ( A) Zhao, m, 290, Qian, f,350 ( B) Qian, f,350, Qian, f,350 ( C) Qian, m, 290, Qian, f,350 ( D) Zhao, m, 290, Zhao, f,350 17 若有以下程序 typedefstructstucharname10, gender; intscore; )STU; voidf(char*P)strcpy(P, Qian); main( ) STUa=
15、Zhao, m, 290, b; b=a; f(b name); b gender=f; b score 350; printf( s, c, d, , a name, a gender,a score); printf( s, c, dn, b name, b gender, b score); 则程序的输出结果是 ( A) Zhao, m, 290, Zhao, m, 290 ( B) Qian, f,350, Qian, f350 ( C) Zhao, m, 290, Qian, f,350 ( D) Zhao, m, 290, Zhao, C350 18 若有以下程序段 structs
16、tintn; structst*next; ); structsta3=5, a1, 7, a2, 9, 0, *p; p= a0; 则以下选项中值为 6的表达式是 ( A) +(p- n) ( B) (*p) n ( C) p- n+ ( D) p- n 19 以下叙述中正确的是 ( A)结构体类型中的各个成分均不能是数组或指针 ( B)结构体类型的变量,不能在声明结构体类型组成时一起定义 ( C)使用 typedef定义新类型名后,新类型名与原类型名实际上是等价的 ( D)元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义 20 以下叙述中正确的是 ( A)结构体变量的地址不
17、能作为实参传给函数 ( B)结构体数组名不能作为实参传给函数 ( C)即使是同类型的结构体变量,也不能进行整体赋值 ( D)结构体中可以含有指向本结构体的指针成员 21 有以下程序 structSinta; intb; ; main( ) structSa, *p= a; a a=99; printf(” dn”, ); 程序要求输出结构体中成员 a的数据,以下不能填入 横线处的内容是 ( A) a a ( B) *p a ( C) p- a ( D) (*p) a 22 有以下程序 #include stdio h structSTUcharname9; charsex; intscore2
18、; ; voidf(structSTUa) structSTUb=zhao,m, 85, 90); a1 b; main( ) structSTUc2=tQian,f, 95, 92), Sun”, m, 98, 99; f(c); printf( s, c, d, d, , c0 name, c01 sex, c0 score0,c0 score1); printf( s, c, d, dn, , c1 name, c1 sex, c1 score0,c1 score1); 程序运行后输出结果是 ( A) Qian, f,95, 92, Sun, m, 98, 99 ( B) Zhao, m
19、, 85, 90, Sun, m, 98, 99 ( C) Qian, f,95, 92, Zhao, m, 85, 90 ( D) Zhao, m, 85, 90, Qian, f,95, 92 23 有以下程序 main( ) unsignedchara=2, b=4, c=5, d; d=aJb; d =c; printff dn, d); ) 程序运行后的输出结果是 ( A) 3 ( B) 5 ( C) 4 ( D) 6 24 有以下程序 main( ) inta=l, b=2, c=3, x; x=(ab) c; printf( dn, x); ) 程序的运行结果是 ( A) 1 (
20、 B) 2 ( C) 3 ( D) 0 25 有以下程序 #include stdio h main( ) chara=4; printf( dha, a=a 1); ) ( A) 8 ( B) 16 ( C) 40 ( D) 4 26 若变量已正确定义,则以下语句的输出结果是 s=32; s=32; printf( d, s); ( A) -1 ( B) 1 ( C) 32 ( D) 0 27 若有 以下程序 main( ) intc; C=1315; pfintf( dn, c); 则程序的输出结果是 ( A) 15 ( B) 18 ( C) 13 ( D) 5 28 有以下程序 main
21、( ) inti=l; i=ii; printf( dn, 1); 程序运行后的输出结果是 ( A) -1 ( B) 0 ( C) 1 ( D) 7 29 下列关于 C语言文件的叙述中正确的是 ( A)文件由结构序列组成,可以构成二进制文件或文本文件 ( B)文件由一系列数据依次排列组成, 只能构成二进制文件 ( C)文件由数据序列组成,可以构成二进制文件或文本文件 ( D)文件由字符序列组成,其类型只能是文本文件 30 有以下程序 #include stdio h main( ) FILE*f; f=fopen(”filea txt,w); fprintf(f,”abc”); fclose(
22、f); 若文本文件 filea txt中原有内容为: hello,则运行以上程序后,文件 filea txt中的内容为 ( A) abc1o ( B) abc ( C) helloabc ( D) abchello 31 有下列程序: #include stdio h main( ) FILE*fp; inta10=1,2, 3), i, n; fp=fopen(”d1 dat”, ”w”); for(i=0; i 3; i+)fprintf(fp, d”, ai); fprintf(fp,n); fclose(fp); fp=open(d1 dat, r); fscanf(fp, d, n)
23、; fclose(fp); printf( dn, n); 程序的运行结果是 ( A) 12300 ( B) 123 ( C) 1 ( D) 321 32 有以下程序 #include stdio h main( ) FILE*pf; char*sl=”China,*s2=Beijing: pf=fopen(abc dat, wb+); fwrite(s2, 7, l, pf); rewind(pf); /*文件位置指针回到文件开头 */ fwrite(sl, 5, 1, pf); fclose(pf); 以上程序执行后 abc dat文件的内容是 ( A) Chinang ( B) Chin
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 结构 共用 运算 文件 操作 模拟 答案 解析 DOC
