ImageVerifierCode 换一换
格式:DOC , 页数:23 ,大小:60KB ,
资源ID:498789      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-498789.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文([计算机类试卷]国家二级C语言机试(结构体、共用体与文件)模拟试卷2及答案与解析.doc)为本站会员(王申宇)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

[计算机类试卷]国家二级C语言机试(结构体、共用体与文件)模拟试卷2及答案与解析.doc

1、国家二级 C语言机试(结构体、共用体与文件)模拟试卷 2及答案与解析 一、选择题 1 有以下程序 #include main() char a=4; printf(“%dn“, a=a #include struct A int a; char b10; double c; ; void f(struct A t); main() struct A a=1001,“ZhangDa“,1098.0; f(a); printf(“%d,%s,%6.1fn“, a.a,a.b,a.c); void f(struct A t) t.a=1002; strcpy(t.b,“ChangRong“); t.

2、c=1202.0; 程序运行后的输出结果是( )。 ( A) 1001,ZhangDa,1098.0 ( B) 1002,ChangRong,1202.0 ( C) 1001,ChangRong,1098.0 ( D) 1002,ZhangDa,1202.0 5 有以下程序 #include main() int a=5,b=1,t; t=(ayear=1980; ( D) *pw.year=1980; 8 以下叙述中错误的是( )。 ( A)可以通过 typedef增加新的类型 ( B)可以用 typedef将已存在的类型用一个新的名字来代表 ( C)用 typedef定义新的类型名后,原有

3、类型名仍有效 ( D)用 typedef可以为各种类型起别名,但不能为变量起别名 9 有以下程序 #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; ix ); p=p-y; 程序的运行结果是( )。 ( A) 20,15, ( B) 30,17 ( C) 15,30, ( D) 20,30, 10 有以下程序 #include main() struct STU char name9; char sex; double s

4、core2; ; struct STU a=“Zhao“, m, 85.0, 90.0, b=“Qian“, f, 95.0, 92.0; b=a; printf(“%s,%c,%2.0f,%2.0fn“, b.name, b.sex, b.score0, b.score1); 程序的运行结果是( )。 ( A) Zhao,m,85,90 ( B) Qian,m,85,90 ( C) Zhao,f,95,92 ( D) Qian,f,95,92 11 有以下程序 #include main() FILE *f; f=fopen(“filea.txt“,“w“); fprintf(f,“abc“

5、); fclose(f); 若文本文件 filea.txt中原有内容为: hello,则运行以上程序后,文件 filea.txt中的内容为( )。 ( A) abc ( B) abclo ( C) helloabc ( D) abchello 12 设有定义: struct char mark12; int num1; double num2; t1,t2; 若变量均已正确赋初值,则以下语句中错误的是( )。 ( A) t2.mark=t1.mark; ( B) t2.num1=t1.num1; ( C) t1=t2; ( D) t2.num2=t1.num2; 13 有以下程序 #inclu

6、de #include struct A int a; char b10; double c; void f(struct A t); main() struct A a=1001,“ZhangDa“,1098.0; f(a); printf(“%d,%s,%6.1fn“, a.a,a.b,a.c); void f(struct A t) t.a=1002; strcpy(t.b,“ChangRong“); t.c=1202.0; 程序运行后的输出结果是( )。 ( A) 1001,ZhangDa,1098.0 ( B) 1002,ChangRong,1202.0 ( C) 1001,Chan

7、gRong,1098.0 ( D) 1002,ZhangDa,1202.0 14 有以下程序 #include #include typedef struct char name9; char sex; float score2; STU; STU f(STU a) STU b=“Zhao“, m, 85.0, 90.0; int i; strcpy(a.name, b.name); a.sex = b.sex; for (i=0; i main() FILE *fp;char str10; fp=fopen(“myfile.dat“,“w“); fputs(“abc“,fp); fclose

8、(fp); fp=fopen(“myfile.dat“,“a+“); fprintf(fp,“%d“,28); rewind(fp); fscanf(fp,“%s“,str); puts(str); fclose(fp); 程序运行后的输出结果是( )。 ( A) abc28 ( B) 28c ( C) abc ( D)因类型不一致而出错 17 若有以下程序 #include #include #include struct stu char *name, gender; int score; ; main() struct stu a=NULL, m, 290, b; a.name=(cha

9、r *)malloc(10); strcpy(a.name, “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,%dn“, b.name, b.gender, b.score ); 则程序的输出结果是( )。 ( A) Qian,m,290,Qian,f,350 ( B) Zhao,m,290,Qian,f,350 ( C) Qian,f,350,Qian,f,350 ( D)

10、Zhao,m,290,Zhao,f,350 18 若有以下程序 #include #include #include typedef struct stu char *name, gender; int score; STU; void f(char *p) p=(char *)malloc(10); strcpy(p, “Qian“); main() STU a=NULL, m, 290, b; a.name=(char *)malloc(10); strcpy( a.name, “Zhao“ ); b = a; f(b.name); b.gender = f; b.score = 350;

11、 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,f,350 ( B) Zhao,m,290,Qian,f,350 ( C) Qian,f,350,Qian,f,350 ( D) Qian,m,290,Qian,f,350 19 若有定义 typedef int* T; T a10; 则 a的定义与下面哪个语句等价( )。 ( A) int *a10; ( B) int (*a)1

12、0; ( C) int *a; ( D) int a10; 20 若有以下程序 #include main() int c; c= 105; printf(“%dn“, c); 则程序的输出结果是( )。 ( A) 15 ( B) 10000 ( C) 5 ( D) 105 21 若有以下程序 #include main() FILE *fp; int i, a6=1,2,3,4,5,6,k; fp = fopen(“data.dat“, “w+“); for (i=0; i typedef struct stu char name10, gender; int score; STU; voi

13、d f(STU a, STU b) b = a; printf( “%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,%dn“, b.name, b.gender, b.score); 则程序的输出结果是( )。 ( A) Zhao,m,290,Qian,f,350 ( B) Zhao,m,290,Zhao,m,290 ( C) Qian,f,350,Qian,f,350 ( D) Zhao,m,290,Zhao,f,350

14、23 若有以下程序 #include #include typedef struct stu char name10, gender; int score; STU; void f( char *p ) strcpy( p, “Qian“ ); main() STU a=“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); 则程序的

15、输出结果是( )。 ( A) Zhao,m,290,Qian,f,350 ( B) Zhao,m,290,Zhao,m,290 ( C) Qian,f,350,Qian,f,350 ( D) Zhao,m,290,Zhao,f,350 24 若有定义 typedef char T10; T *a; 上述定义中 a的类型与下面选项中完全相同的是( )。 ( A) char *a10; ( B) char (*a)10; ( C) char *a; ( D) char a10; 25 若有以下程序 #include main() int c; c = 13|5; printf(“%dn“, c);

16、 则程序的输出结果是( )。 ( A) 13 ( B) 15 ( C) 18 ( D) 5 26 若有以下程序 #include main() FILE *fp; int i, a6=1,2,3,4,5,6, k; fp = fopen(“data.dat“, “w+b“); for (i=0; i #include void fun(int *p1,int *p2,int *s ) s=( int * )malloc( sizeof(int) ); *s = *p1 + *(p2+); main() int a2=1,2 , b2=10,20, *s=a; fun( a,b,s ); pri

17、ntf(“%dn“, *s ); 程序运行后的输出结果是( )。 ( A) 1 ( B) 10 ( C) 11 ( D) 2 29 以下程序依次把从终端输入的字符存放到 f文件中,用 #作为结束输入的标志 , 则在横线处应填入的选项是 #include main() FILE *fp; char ch; fp=fopen( “fname“, “w“ ); while( ( ch=getchar() !=# ) fputc( _ ); fclose(fp); ( )。 ( A) ch, fp ( B) fp, ch ( C) ch ( D) ch, “fname“ 30 有以下程序 #inclu

18、de main() int i=0; i = i; printf(“%dn“,i); 程序运行后的输出结果是( )。 ( A) -1 ( B) 0 ( C) 1 ( D) 8 国家二级 C语言机试(结构体、共用体与文件)模拟试卷 2答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 左移运算符 “s.year,所以答案选 A。 【知识模块 】 结构体、共用体与文件 8 【正确答案】 A 【试题解析】 typedef为类型定义符,使用的一般形式为 “typedef 原类型名 新类型名 ;“,它用于给已知类型取别名,作用仅仅是用 “新类型名 “代替 “原类型名 “,并没有产生新的数据类型,

19、答案选 A。 【知识模块】 结构体、共用体与文件 9 【正确答案】 A 【试题解析】 语句 “p=a;“将指针 p指向了结构体数组 a的首地址,此时 p-x与a0.x等价,值为 20,执行语句 “p=p-y;“则将指针 p指向了 a+1,即数组 a第二个元素的 地址,此时 p-x与 a1.x等价,值为 15,所以答案选 A。 【知识模块】 结构体、共用体与文件 10 【正确答案】 A 【试题解析】 同类型的结构体之间可以直接赋值,所以语句 “b=a;“的作用是把结构体 a中的数据赋值给结构体 b,所以答案选 A。 【知识模块】 结构体、共用体与文件 11 【正确答案】 A 【试题解析】 该程序

20、段的作用是将字符串 “abc“写入到文件 filea.txt中,由于打开文件时以只写方式打开,打开已经存在的文件会先把文件长度清 0后再写入数据,所以运行结束 后,文件 filea.txt中的数据为 “abc“,答案选 A)。 【知识模块】 结构体、共用体与文件 12 【正确答案】 A 【试题解析】 同类型的结构体之间可以直接赋值,数组却不可以,答案选 A。 【知识模块】 结构体、共用体与文件 13 【正确答案】 A 【试题解析】 函数 f()传递的参数为结构体变量,也是一种值传参,形参的变化不能影响到实参,所以调用函数 f(a)对 a中的数据没有影响。所以输出结果为选项A)。 【知识模块】

21、结构体、共用体与文件 14 【正确答案】 A 【试题解析】 结构体是用户自己定义的一种数据类型,使用方法和 C语言中的基本数据类型一致。函数 f()中将结构体 b中成员的数据分别赋值给 a,所以函数的返回值为 a即 “Zhao“,?m?,85,90。 【知识模块】 结构体、共用体与文件 15 【正确答案】 A 【试题解析】 任何一个数值跟自身的异或运算结果均为 0,答案选 A。 【知识模块】 结构体、共用体与文件 16 【正确答案】 A 【试题解析】 该程序段的逻辑是:先以只写方式 “w“打开文件 myfile.dat,写入字符 串 “abc“,后以附加方式打开 “a+“可读写的文件,往文件末

22、尾追加字符串“28“,之后将文件指针 fp指向文件首,读取所有写入的字符,所以答案选 A。 【知识模块】 结构体、共用体与文件 17 【正确答案】 A 【试题解析】 语句 “a.name=(char *)malloc(10); strcpy(a.name, “Zhao“);“将字符串 “Zhao“赋值给了 a中的字符指针 a.name,之后把结构体 a中的数据赋值给 b,然后改变 b的 gender、 score这两个成员的值,而 b.name和 a.name指向同一块内存地址,所以当执行语句 “strcpy(b.name, “Qian“);“时, b.name和 a.name的值均为 “Qi

23、an“,所以最终结构体变量 a的数据为 “Qian“,?m?,290, b中的数据为“Qian“,?f?,350。 【知识模块】 结构体、共用体与文件 18 【正确答案】 A 【试题解析】 语句 “b=a;“把结构体 a中的数据赋值给 b,由于结构体的 name成员为一指针变量,所以 b.name和 a.name指向同一块内存地址,调用函数f(b.name)后,形参指针指向 的变化不能改变实参指针指向的变化,所以 b.name和a.name的仍然相同,值均为 “Zhao“,所以最终结构体变量 a的数据为“Zhao“,?m?,290, b中的数据为 “Zhao“, ?f?,350。 【知识模块】

24、 结构体、共用体与文件 19 【正确答案】 A 【试题解析】 typedef为类型定义符,使用的一般形式为 “typedef 原类型名 新类型名 ;“,作用仅仅是用 “新类型名 “代替 “原类型名 “,所以 T与 int*等价,语句 “T a10;“与 “int* a10;“等价,答案选 A。 【知识模块】 结构体、共用体与文件 20 【正确答案】 A 【试题解析】 异或运算符的运算规则是参与运算的两个数相对应的二进制位相异或运算,当两个对应的二进制位相异时,结果为 1。 10的二进制数为 1010, 5的二进制数为 0101, 10100101=1111,对应十进制数值为 15,答案选 A。

25、 【知识模块】 结构体、共用体与文件 21 【正确答案】 A 【试题解析】 句 “ fseek(fp, 0L, 0);“将文件指针 fp指向文件首,然后再往当前地址内写入数据,由于每次循环 都将文件指针置于文件首后再写,之前写入的数据会被新写入的数据覆盖,所以循环执行完毕之后,文件中最终写入的数据为 6,输出结果为选项 A)。 【知识模块】 结构体、共用体与文件 22 【正确答案】 A 【试题解析】 同类型的结构体之间可以直接赋值,所以函数 f()中把结构体变量 a中的数据整体赋值给了结构体变量 b,所以第一次输出结果为 Zhao,m,290,。函数f()传递的参数为结构体变量,也是一种值传参

26、,形参的变化不能影响到实参,所以主函数中调用函数 f(a,b)对 b中的数据没有影响,所以第二次的输出 结果为Qian,f,350,答案选 A。 【知识模块】 结构体、共用体与文件 23 【正确答案】 A 【试题解析】 同类型的结构体之间可以直接赋值,所以主函数中把结构体变量 a中的数据整体赋值给了结构体变量 b。函数 f()的作用是给 b.name赋值为 “Qian“(注意这里结构体的第一个称为为数组而不是指针,所以 a.name与 b.name指向不同的内存空间),所以输出结果为选项 A)。 【知识模块】 结构体、共用体与文件 24 【正确答案】 A 【试题解析】 typedef为类型定义

27、符 ,作用是用 “新类型名 “代替 “原类型名 “,即为现有类型定义容易记忆的类型名。 typedef能够隐藏复合类型,比如指针和数组,定义语句 “ typedef char T10; “表明类型 T就代表了具有 10个元素的字符数组,所以语句 “T *a;“则表示定义了具有 10个元素并且每个元素都为指针类型的数组 a,所以答案选 A。 【知识模块】 结构体、共用体与文件 25 【正确答案】 A 【试题解析】 按位或运算 “|“的运算规则是:只要对应的二进制位有一个为 1时,结果就为 1。 13的二进制数为 1101, 5的 二进制数为 0101,1101|0101=1101,对应十进制数为

28、 13,所以答案选 A。 【知识模块】 结构体、共用体与文件 26 【正确答案】 A 【试题解析】 语句 “ fseek(fp, 0L, 0);“将文件指针 fp指向文件首,然后再往当前地址内写入数据,由于每次循环都将文件指针置于文件首后再写,之前写入的数据会被新写入的数据覆盖,而写入顺序为按照数组逆序写入,所以循环执行完毕之后,文件中最终写入的数据为 1,输出结果为选项 A)。 【知识模块】 结构体、共用体与文件 27 【正确答 案】 A 【试题解析】 选项 B)定义成员变量 m的语句后少了一个分号,选项 C)定义完结构体也没有加上分号,选项 D)定义结构体变量时需要加上 struct,所以

29、答案选 A)。 【知识模块】 结构体、共用体与文件 28 【正确答案】 A 【试题解析】 函数 fun()的作用是将 s重新指向一个内存空间并重新赋值,但是函数传递过程中形参只是实参的一个副本,如果形参和实参为两个地址,则形参指针指向的变化不能影响到实参指针的指向,所以函数 fun()并不能改变 s的指向,所以输出结果为 1,答案选 A。 【 知识模块】 结构体、共用体与文件 29 【正确答案】 A 【试题解析】 fputc()函数的一般形式为 fputc(字符量 ,文件指针 );,所以填入的内容应该为 ch,fp,答案选 A。 【知识模块】 结构体、共用体与文件 30 【正确答案】 A 【试题解析】 计算机系统中,数值一律使用补码进行表示和存储,补码可以将符号位和数值位进行统一处理,正数的补码和原码相同,负数的补码是原码除符号位外的其他位取反再整体加 1所得。取反运算符 “的运算规则是对参与运算的数的各二进制位按位求反, 0的二进 制表示(篇幅有限,这里用八位表示)为00000000,取反后为 11111111,符号位为 1,所以 “11111111“是一个负数的补码,对应原码为 10000001,对应十进制数值为 -1,答案选 A。 【知识模块】 结构体、共用体与文件

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1