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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

[计算机类试卷]国家二级(C语言)机试历年真题试卷汇编3及答案与解析.doc

1、国家二级( C语言)机试历年真题试卷汇编 3及答案与解析 一、选择题 1 若要定义一个具有 5个元素的整型数组,以下错误的定义语句是 ( )。【 10年 9月】 ( A) int a5=0; ( B) int b=0, 0, 0, 0, 0); ( C) int c2+3; ( D) int i=5, di; 2 以下关于 retum语句的叙述中正确的是 ( )。【 10年 3月】 ( A)一个自定义函数中必须有一条 return语句 ( B)一个自定义函数中可以根据不同情况设置多条 return语句 ( C)定义成 void类型的函数中可以有带返回值的 retum语句 ( D)没有 retu

2、rn语句的自定义函数在执行结束时不能返回到调用处 3 以下叙述正确的是 ( )。【 10年 3月】 ( A) C语言程序是由过程和函数组成的 ( B) C语言函数可以嵌套调用,例如 fun(fun(x) ( C) C语言函数不可以单独编译 ( D) C语言中除了 main函数,其他函数不可作为单独文件形式存在 4 有以下程序: #include stdio h #include string h structA int a; char b10; double c; ); void f(structA t); main() structA a=1001, “ZhangDa“, 1098 0);

3、f(a); printf(“ d, s, 6 1f n“, a a, a b, a c); void flstructA t) t a=1002; strcpy(t b, “ChangRong“); t c=1202 0; ) 程序运行后的输出结果是 ( )。【 10年 3月】 ( A) 1001, zhangDa, 1098 0 ( B) 1002, ChangRong, 1202 0 ( C) 1001, ChangRong, 1098 0 ( D) 1002, zhangDa, 1202 0 5 下列选项中,能正确定义数组的语句是 ( )。【 10年 3月】 ( A) int num0

4、2008; ( B) int num; ( C) int N=2008; int numN; ( D) int N2008 int numN; 6 有以下程序: #include stdio h main() int a5=1, 2, 3, 4, 5), b5=0, 2, 1, 3, 0, i, s=0; for(i=0; i 5; i+)s=s+abi; printf(“ d n“, s); 程序运行后的输出结果是 ( )。【 10年 3月】 ( A) 6 ( B) 10 ( C) 11 ( D) 15 7 下列语句组中,正确的是 ( )。【 10年 3月】 ( A) char*s; s=“

5、Olympic“; ( B) char s7; s=“Olympic“; ( C) char*s; s=“Olympic“); ( D) char s7; s=“Olympic“; 8 设有定义 double a10, *s=a;,以下能够代表数组元素 a3的是 ( )。【 10年 3月】 ( A) (*s)3 ( B) *(s+3) ( C) *s3 ( D) *s+3 9 有以下程序: #include stdio h void fun(int p) int d=2: p=d+; printf(“ d“, p); void main() int a=1; fun(a); printf(“

6、d n“, a); 程序运行后的输出结果是 ( )。【 09年 9月】 ( A) 32 ( B) 12 ( C) 21 ( D) 22 10 有以下程序: #include stdio h int f(int n); void main() int a=3, s; s=f(a); s=s+f(a); printf(“ d n“, s); int f(int n) static int a=1; n+=a+; return n: 程序运行后的输出结果是 ( )。【 09年 9月】 ( A) 7 ( B) 8 ( C) 9 ( D) 10 11 有以下程序: #include stdio h #i

7、nclude string h void main() char a10=“abcd“: printf(“ d, d n“, strlen(a), sizeof(a); 程序运行后的输出结果是 ( )。【 09年 9月】 ( A) 7, 4 ( B) 4, 10 ( C) 8, 8 ( D) 10, 10 12 有以下程序: #inelude stdio h main() char*a=“abcd“, “ef“, “gh“, “ijk“; int i; for(i=0; i 4; i+)printf(“ c“, *ai); 程序运行后的输出结果是 ( )。【 09年 3月】 ( A) aegi

8、 ( B) dfhk ( C) abed ( D) abcdefghijk 13 以下选项中正确的语句组是 ( )。【 09年 3月】 ( A) char s; s=“BOOK!“; ( B) char *s; s=“BOOK!“; ( C) char s10; s=“BOOK!“; ( D) char*s; s=“BOOK!“; 14 有以下程序: #include stdio h int f(int x, int y) return(y-x)*x); main() int a=3, b=4, c=5, d; d=f(f(a, b), f(a, c); printf(“ d n“, d);

9、程序运行后的输出结果是 ( )。【 09年 3月】 ( A) 10 ( B) 9 ( C) 8 ( D) 7 15 有以下程序: #include stdio h int fun(int x, int y) if(x=y)return(x); else retum(x+y) 2); main() int a=4, b=5, c=6; pfintf(“ d n“, fun(2*a, fun(b, c); 程序运行后的输出结果是 ( )。【 09年 3月】 ( A) 3 ( B) 6 ( C) 8 ( D) 12 16 以下叙述中错误的是 ( )。【 08年 9月】 ( A)用户定义的函数中可以没

10、有 return语句 ( B)用户定义的函数中可以有多个 return语句,以便可以调用一次返回多个函数值 ( C)用户定义的函数中若没有 return语句,则应当定义函数为 void类型 ( D)函数的 return语句中可以没有表达式 17 下面的函数调用语句中 func函数的实参个数是 ( )。 func(f2(v1, v2), (v3, v4, v5), (v6, max(v7, v8);【 08年 9月】 ( A) 3 ( B) 4 ( C) 5 ( D) 8 18 下列选项中,能够满足 “若字符串 s1等于字符串 s2,则执行 ST”要求的是 ( )。【 10年 9月】 ( A)

11、if(strcmp(s2, s1)=0)ST; ( B) if(s1=s2)ST; ( C) if(strcpy(s1, s2)=1)ST; ( D) if(s1-s2=0)ST; 19 以下不能将 s所指字符串正确复制到 t所指存储空间的是 ( )。【 10年 9月】 ( A) while(*t=*s)t+; s+; ) ( B) for(i=0; ti=si; i+); ( C) do*t+=*s+; while(*s); ( D) for(i=0, j=0; ti+=s=i+; ); 20 有以下程序 (strcat函数用以连接两个字符串 ): #inelude stdio h #inc

12、lude string h main() char a20=“ABCD OEFG 0“, b=“IJK“; strcat(a, b); printf(“ s n“, a); 程序运行后的输出结果是 ( )。【 10年 9月】 ( A) ABCDE OFG 0IJK ( B) ABCDIJK ( C) IJK ( D) EFGIJK 21 有以下程序,程序中库函数 islower(ch)用以判断 ch中的字母是否为小写字母。 #include stdio h #include ctype h void fun(char*p) int i=0; while(pi) if(pi=&islower(p

13、i-1)pi-1=pi-1-a+A; i+; main() char s1100=“ab cd EFG!“; fun(s1); printf(“ s n“, s1); 程序运行后的输出结果是 ( )。【 10年 9月】 ( A) ab cd EFG! ( B) Ab Cd EFg! ( C) aB cD EFG! ( D) ab cd EFg!, 22 有以下程序: #include stdio h void fun(int x) if(x 2 1)fun(x 2); printf(“ d“, x); main() fun(7); printf(“ n“); 程序运行后的输出结果是 ( )。【

14、 10年 9月】 ( A) 1 3 7 ( B) 7 3 1 ( C) 7 3 ( D) 3 7 23 有以下程序: #include stdio h int fun() static int x=1; x+=1; return x; main() int i, s=1; for(i=1; i =5; i+)s+=fun(); printf(“ d n“, s); 程序运行后的输出结果是 ( )。【 10年 9月】 ( A) 11 ( B) 21 ( C) 6 ( D) 120 24 有以下程序: #include stdio h #inelude stdlib h main() int*a,

15、 *b, *c; a=b=c=(int*)malloc(sizeof(int); *a=1; *b=2, *c=3; a=b: printf(“ d, d, d n“, *a, *b, *c); 程序运行后的输出结果是 ( )。【 10年 9月】 ( A) 3, 3, 3 ( B) 2,2, 3 ( C) 1, 2, 3 ( D) 1, 1, 3 25 有以下程序: #include stdio h #define SUB(a)(a)-(a) main() int a=2, b=3, C=5, d; d=SUB(a+b)*c; printf(“ d n“, d); 程序运行后的输出结果是 (

16、)。【 10年 3月】 ( A) 0 ( B) -12 ( C) -20 ( D) 10 26 有以下程序: #include stdio h void fun(char*c, int d) *c=*c+1; d=d+1; printf(“ c, c, “, *c, d); main() charb=a, a=A; fun(&b, a); printf(“ c, c n“, b, a); 程 序运行后的输出结果是 ( )。【 10年 3月】 ( A) b, B, b, A ( B) b, B, B, A ( C) a, B, B, a ( D) a, B, a, B 27 有以下程序: #in

17、elude stdio h void main() int m=1, n=2, *p=&m, *q=&n, *r; r=p; p=q; q=r; pfintf(“ d, d, d, d n“, m, n, *p, *q); 程序运行后的输出结果是 ( )。【 09年 9月】 ( A) 1, 2, 1, 2 ( B) 1, 2,2, 1 ( C) 2, 1, 2, 1 ( D) 2, 1, 1, 2 28 下列函数的功能是 ( )。【 09年 9月】 fun(char*a,char*b) while(*b=*a)!= 0)a+; b+; ) ( A)将 a所指字符串赋给 b所指空间 ( B)使指

18、针 b指向 a所指字符串 ( C)将 a所指字符串和 b所指字符串进行比较 ( D)检查 a和 b所指字符串中是否有 0 29 设有定义: char*c;,以下选项中能够使字符型指针 c正确指向一 个字符串的是 ( )。【 09年 9月】 ( A) char str=“string“; c=str; ( B) scanf(“ s“, c); ( C) c=getchar(); ( D) *c=*string“; 30 有以下程序: #include stdio h main() int s, t, A=10; double B=6; s=sizeof(A); t=sizeof(B); prin

19、tf(“ d, d n“, s, t); 在 VC6平台上编译运行,程序运行后的输出结果是 ( )。【 10年 9月】 ( A) 2, 4 ( B) 4, 4 ( C) 4, 8 ( D) 10, 6 31 若有以下语句: typedef struct S int g; char h; T; 以下叙述中正确的是 ( )。【 10年 9月】 ( A)可用 S定义结构体变量 ( B)可用 T定义结构体变量 ( C) S是 struct类型的变量 ( D) T是 struct S类型的变量 32 有以下程序: #include stdio h main() short c=124; c=c_; pr

20、inff(“ d n“, c); 若要使程序的运行结果为 248,应在下划线处填入的是 ( )。【 10年 9月】 ( A) 2 ( B) 248 ( C) &0248 ( D) 1 33 有以下定义和语句: struct workers int num; char name20; char c; struct int day; int month; int year; ) s; ; struct workers W, *pw; pw=&w; 能给 w中 year成员赋 1980的语句是 ( )。【 10年 3月】 ( A) *pw year=1980; ( B) w year=1980; (

21、 C) pw- year=1980; ( D) w s year=1980; 34 设有定义: Struct complex int real, unrea1; data1=1, 8), data2; 则以下赋值语句中错误 的是 ( )。【 10年 3月】 ( A) data2=datal; ( B) data2=(2, 6); ( C) data2 real=datal real; ( D) data2 real=datal unreal; 35 有以下程序: #include stdio h main() FILE*fp; char str10; fp=fopen(“myfile dat“

22、, “w“); fputs(“abc“,fp); fclose(fp); fp=fopen(“myfile dat“, “a+“); fprintf(fp, “ d“, 28); rewind(fp); fscanf(fp, “ s“, str); puts(str); fclose(fp); 程序运行后的输出结果是 ( )。【 10年 3月】 ( A) abe ( B) 28e ( C) abe28 ( D)因类型不一致而出错 36 下面结构体的定义语句中,错误的是 ( )。【 09年 9月】 ( A) struct ordint x; int y; int z; ); struct ord

23、 a; ( B) struct ordint x; int y; int z; )struct ord a; ( C) struct ordint x; int y; int z; )a; ( D) structint x; int y; int z; )a; 37 有以下程序: #include stdio h #include string h structA int a; char b10; double c; ); structA f(structA t); main() structAa=1001, “ZhangDa“, 1098 0); a=f(a); printf(“ d, s,

24、 6 1 f n“, a a, a b, a c); structAf(structA t) t a=1002; strcpy(t b, “ChangRong“); t c=1202 0; return t; 程序运行后的输出结果是 ( )。【 09年 9月】 ( A) 1001, ZhangDa, 1098 0 ( B) 1002, ZhangDa, 1202 0 ( C) 1001, ChangRong, 1098 0 ( D) 1002, ChangRong, 1202 0 38 若有以下程序段: int r=8; printf(“ d n“, r 1); 输出结果是 ( )。【 09年

25、 9月】 ( A) 16 ( B) 8 ( C) 4 ( D) 2 39 下列关于 C语言文件的叙述中正确的是 ( )。【 09年 9月】 ( A)文件由一 系列数据依次排列组成,只能构成二进制文件 ( B)文件由结构序列组成,可以构成二进制文件或文本文件 ( C)文件由数据序列组成,可以构成二进制文件或文本文件 ( D)文件由字符序列组成,其类型只能是文本文件 40 有以下程序: #inelude stdio h main() int a=5, b=1, t; t=(a 2) b; printf(“ d n“, t); 程序运行后的输出结果是 ( )。【 09年 3月】 ( A) 21 (

26、B) 11 ( C) 6 ( D) 1 41 有以下程序: #inchde stdio h main() FILE*f; f=fopen(“filea txt“, “w“); fprintf(f, “abc“); fclose(f); 若文本文件 filea txt中原有内容为 hello,则运行以上程序后,文件 filea txt中的内容为 ( )。【 09年 3月】 ( A) helloabc ( B) abclo ( C) abc ( D) abchello 42 有以下程序: #include stdio h struct ord int x, y; dt2=1, 2, 3, 4);

27、main() struct ord*p=dt; printf(“ d, “, +p- x); printf(“ d, “, +p- y); 程序的运行结果是 ( )。【 09年 3月】 ( A) 1, 2 ( B) 2, 3 ( C) 3, 4 ( D) 4, 1 43 有以下程序: #include stdio h struct st int x, y; )data2=1, 1 0, 2, 20); main() struct st *p=data; printf(“ d, “, p- y); printf(“ d n“, (+p)- x); 程序的运行结果是 ( )。【 08年 9月】 (

28、 A) 10, 1 ( B) 20, 1 ( C) 10, 2 ( D) 20, 2 44 有以下程序: #include stdioIh main() struct STU char name9; char sex; double score2; ; struct STU a=“Zhao“,m, 85 0, 90 0), b=“Qian“, f, 95 0, 92 0); b=a: printf(“ s, c, 2 0f, 2 0f n“, b name, b sex, b score0,b score1); 程序的运行结果是 ( )。【 08年 9月】 ( A) Qian, f, 95,

29、92 ( B) Qian, m, 85, 90 ( C) Zhao, f, 95, 92 ( D) Zhao, m, 85, 90 45 有以下程序: #include stdio h main() FILE *pf; char *s1=“China“, *s2=“Beijing“; pf=fopen(“abc dat“, “wb+“); fwrite(s2, 7, 1, pf); rewind(pf); *文件位置指针回到文件开头 * fwrite(s1, 5, 1, pf); fclose(pf); 以上程序执行后 abc dat文件的内容是 ( )。【 08年 9月】 ( A) Chin

30、a ( B) Chinang ( C) ChinaBeijing ( D) BeijingChina 国家二级( C语言)机试历年真题试卷汇编 3答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 定义数组时,元素个数不能为变量,但可以为常量或常量表达式,或在后面有初始化的情况下空缺。因此选项 D)错误,选项 A)、 B)、 C)正确。选项A)中没有被完全赋 值,其中没有赋值的几个默认为 0。 【知识模块】 函数与数组 2 【正确答案】 B 【试题解析】 return语句主要用于返回函数的值。在一个自定义函数中,可以根据不同的情况设置多条 return语句返回函数的值。 【知识模块】

31、函数与数组 3 【正确答案】 B 【试题解析】 在 C语言中,允许函数的嵌套调用,即递归调用。在 C语言中不存在过程的概念,所以选项 A)是错误的,在 c语言中函数允许单独编译,可以作为单独的文件形式存在,因而选项 C)和 D)是错误的。 【知识模块】 函数与 数组 4 【正确答案】 A 【试题解析】 本题主要考查的是函数调用时参数之间的传递问题。在 C语言中参数之间的传递是传值,也就是把实参的值复制一份传递给形参,而实参的值不发生变化。所以对于本题来说,在主函数中执行 f(a),把结构体变量 a的值复制一份传递给形参变量 t,而实参变量 a的值保持不变。 【知识模块】 函数与数组 5 【正确

32、答案】 D 【试题解析】 在定义一维数组时,数组的下标应该是一个确定的整数值。要注意的是在定义二维数组时,其第一维下标可以省略,但第二维下标不能省略。 【知识模块】 函数与数组 6 【正确答案】 C 【试题解析】 这道题目是计算一维数组 a中某些元素的和。这些元素的下标值是一维数组 b中元素值。 s=0+a0+a2+a1+a3+a0=0+1+3+2+4+1=11。 【知识模块】 函数与数组 7 【正确答案】 A 【试题解析】 s是一个字符指针变量,让它指向一个字符串常量。 【知识模块】 函数与数组 8 【正确答案】 B 【试题解析】 语句 *s=a,使用指针变量 s指向一维数组 a的首地址,所

33、以 *(s+3)表示的是引用数组 a3。 【知识模块】 函数与数组 9 【正确答案】 C 【试题解析】 在主函数中给整型变量 a赋初始值为 1,再调用 fun函数把其值赋给 fun函数形参 p,在 fun函数中,定义了整型变量 d,并把其值设为 2,执行表达式 p=d+后,变量 p的值就变为 2,所以在屏幕上输出 2,然后再执行主函数中的输出语句,输出变量 a的值 1。 【知识模块】 函数与数组 10 【正确答案】 C 【试题解析】 在主函数中第一次调用 f(a)时,得到变量 s的值等于 4,在第二次调用 f(a)时,在子 函数 f中由于变量 a是一个局部静态变量,所以这次其值等于2,因而在主

34、函数中第二次调用 f(a)后,其返回值等于 5,最后变量 s的值等于 9。 【知识模块】 函数与数组 11 【正确答案】 B 【试题解析】 这道题目主要考查了函数 strlen和 sizeof的区别,函数 strlen求出字符数组 a10中实际存储的字符个数,其值等于 4。而函数 sizeof求出为字符数组 a10分配的内存空间大小,其值等于 10。 【知识模块】 函数与数组 12 【正确答案】 A 【试题解析】 本题考查字符 串数组的调用。 a0、 a1、 a2、 a3分别是指向 4段字符串的首地址,并且输出格式是字符型,因此只将 4个字符串的首地址输出。 【知识模块】 函数与数组 13 【

35、正确答案】 D 【试题解析】 本题考查数组和字符串的赋值。选项 A)中数组 s没有明确其大小就赋值是错误的。选项 B)中不能有大括号,选项 C)中的写法应该为B00K!。 【知识模块】 函数与数组 14 【正确答案】 B 【试题解析】 本题考查函数的嵌套调用。首先计算 f(a,b)与 f(a, b)j(a, b)=(b-a)*a=3, f(a, c)=(c-a)*a=6,然后计算 f(3, 6)=(6-3)*3=9。 【知识模块】 函数与数组 15 【正确答案】 B 【试题解析】 fun(b, c)即 fun(5, 6), 5!=6,所以返回 (5+6) 2=5; fun(2*a, 5)即 f

36、un(8, 5), 8!=5,所以返回 (8+5) 2=6。 【知识模块】 函数与数组 16 【正确答案】 B 【试题解析】 函数值通过 return语句返回, return语句的形式为: return表达式或 return(表达式 );当程序执行到 return语句时,程序的流程就返回到调用该函数的地方,并带回函数值。在同一函数内,可以根据需要,在多处出现 return语句,在函数体的不同部位退出函数。无论函数体中有多少个 return语句,return语句只可能执行一次,返回一个函数值。 return语句中也可以不含有表达式,这时必须定义函数为 void类型,它的作用只是使流程返回到调用函

37、数,并没有确定的函数值。函数体内可以没有 return语句,这时也必须定义函数为 void类型,程序的流程就一直执行到函数末尾的 “”,然后返回调 用函数,也没有确定的函数值带回。 【知识模块】 函数与数组 17 【正确答案】 A 【试题解析】 由函数 func(f2(v1, v2), (v3, v4, v5), (v6, max(v7, v8);调用语句可知,函数 func的 3个实参分别 【知识模块】 函数与数组 18 【正确答案】 A 【试题解析】 在 C语言中要对两个字符串的大小进行比较,就需要调用字符串比较函数 strcmp,如果这个函数的返回值等于 0,说明两个字符串相等。 【知识

38、模块】 编译预处理和指针 19 【正确答 案】 C 【试题解析】 在选项 C)中,不能把 s所指字符串的结束标志符赋给字符串 t。 【知识模块】 编译预处理和指针 20 【正确答案】 B 【试题解析】 在字符串中字符 0表示字符串的结束标志,所以字符串 a和 b相连接的结果为 ABCDIJK。 【知识模块】 编译预处理和指针 21 【正确答案】 C 【试题解析】 函数 fun(char*p)的功能是如果 pi指向的字符为空字符并且其前一个字符是小写字母,则把小写字母变成大字母,所以在主函数中,执行 fun(s1)后,小写 字母 b、 d都改成大写字母。 【知识模块】 编译预处理和指针 22 【

39、正确答案】 D 【试题解析】 本题主要考查了函数劬 (int x)的递归调用,当 x除以 2的值大于 1时,就接着执行函数 fun(x 2),所以在主函数中,当执行 fun(7)时,函数 fun执行两次,第一次输出 3,第二次输出 7。 【知识模块】 编译预处理和指针 23 【正确答案】 B 【试题解析】 这道题主要考查了局部静态变量的应用。在函数 fun()中定义了局部静态变量整型 x,其初值等于 1,在主函数中循环执行 5次,第一 次变量 s的值等于 3,变量 x的值等于 2,第二次变量 s的值等于 6,变量 x的值等于 3,第三次变量 s的值等于 10,变量 x的值等于 4,第四次变量

40、s的值等于 15,变量 x 的值等于 5,第五次变量 s的值等于 21,变量 x的值等于 6。 【知识模块】 编译预处理和指针 24 【正确答案】 A 【试题解析】 语句 a-b=c=(int*)malloc(sizeof(int);的含义是申请了一个整型的存储空间,让指针 a、 b、 c分别指向它, *a=1; *b=2, *c=3;语句的含义为所申请的整型存储空间的内容, *c=3最后执行导致存储空间的内容为 3。 a=b的含义让指针 a也指向指针 b所指向的存储空间, a、 b、 c都指向整型的存储空间,里边的内容为 3。 【知识模块】 编译预处理和指针 25 【正确答案】 C 【试题解

41、析】 本题主要考查的是宏替换。在程序中执行 d=SUB(a+b)*c语句时,首先要进行宏替换,依据宏 SUB(a)的定义可知,上面这条语句替换为 d=(a+b)-(a+b)*c,因为乘法的优先级比减法的优先级高,所以先进行乘法运算,即 d=5-5*5=-20。 【知识模块】 编译预处理和指针 26 【正确答案】 A 【试题解析】 在这道题目中 fun函数的参数传递方式,形参 c是传地址,形参 d是传值。所以在主函数中,执行 fun时,把变量 b的地址传给了 c,把 a的值传递给了 d,经过运算,输出的值为 b, B。在主函数的输出语句中,输出变量 b的值为 b,变量 a的值为 A。 【知识模块

42、】 编译预处理和指针 27 【正确答案】 B 【试题解析】 在主函数定义了 3个整数指针变量 p、 q、 r,并且使 p指向 m, q指向 n,再执行 r=p; p=q; q=r;这三条语句,使 q指向 m, p指向 n,再输出变量 m, n, *p, *q时,它们的值分别为 1, 2, 2, 1。 【知识模块】 编译预处理和指针 28 【正确答案】 A 【试题解析】 while语句的条件是把字符 *a的值赋给字符 *b,然后再判断字符 *b的值是否等于字符串的结束字符 ( 0),当不等于结束字符 ( 0)时,把字符指针变量 a、 b分别加 1,指向它们的下一个字符,直到字符串 a结束。这样程

43、序执行的结果就是把字符串 a赋给了 b所指的存储空间。 【知识模块】 编译预处理和指针 29 【正确答案】 A 【试题解析】 在题目的题干中定义了字符指 针变量 c,在选项 A)中,首先定义字符数组 str,然后再把字符数组 str的首地址赋给字符指针变量 c。所以选项 A)是正确的。在选项 D)中,如果在定义字符指针 c时,同时给 c赋初值时,这样的表达式是正确的。而本题不是在定义指针 c时,同时给 c赋初值,所以选项 D)是错误的。 【知识模块】 编译预处理和指针 30 【正确答案】 C 【试题解析】 在 C语言的编译系统中,整型变量占用 4个字节的内存空间,而双精度型变量占用 8个字节的

44、内存空间。 【知识模块】 结构体、共用体、位运算及文件操作 31 【正 确答案】 B 【试题解析】 本题考查 typedef。 T是 struct s的新名称,因此可用 T定义结构体变量,但是 T并不是变量,只是 struct S的新名称。 【知识模块】 结构体、共用体、位运算及文件操作 32 【正确答案】 D 【试题解析】 函数的执行结果显示,所要填的语句使得 c的值翻倍,乘以 2即可达到这种效果,乘以 2也即左移 1位。 【知识模块】 结构体、共用体、位运算及文件操作 33 【正确答案】 D 【试题解析】 本题主要考查的是结构体变量的嵌套定义,也就是说一 个结构体变量也可以包含另一个结构体

45、。在本题中 works结构体中包含了结构体 s。所以对结构体变量 w中 year成员的引用是 w s year。 【知识模块】 结构体、共用体、位运算及文件操作 34 【正确答案】 B 【试题解析】 本题主要考查结构体变量的定义与初始化。题目中定义了 complex类型的结构体变量 data1和 data2,并对 data1进行了初始化。选项 A)、 C)、 D)都是正确的,可以用一个结构体变量对另一个结构体变量赋值,用一个结构体变量的成员对另一个结构体变量的成员赋值。 【知 识模块】 结构体、共用体、位运算及文件操作 35 【正确答案】 C 【试题解析】 在程序中首先把字符串 abc写入到文

46、件 myfile dat中,然后再把整数 28追加到字符串 abc的后面,最后把文件 myfile dat的内容读入到字符串str中,并把其内容输出。 【知识模块】 结构体、共用体、位运算及文件操作 36 【正确答案】 B 【试题解析】 在选项 B)中,由于在定义完结构体 ord后缺少分号 “; ”,所以这是一条不完整的语句,因而是错误的。 【知识模块】 结构体、共用体、位运算 及文件操作 37 【正确答案】 D 【试题解析】 在主函数中定义结构体 A的变量 a,并对其赋初值,再调用函数f(a),在函数 f(a)中对结构体变量 a的各个成员重新进行了赋值操作,并把其值返回在屏幕上输出。 【知识

47、模块】 结构体、共用体、位运算及文件操作 38 【正确答案】 C 【试题解析】 定义了整型变量 r,其值等于 8,在输出语句中,把变量 r的值向右移动一位,在 C语言中把变量向右移动一位,相当于其值除以 2,所以在题中把变量 r的值 8除 2,得到其值等于 4。 【知识模块】 结构体、共 用体、位运算及文件操作 39 【正确答案】 C 【试题解析】 在 C语言中,对输入、输出的数据都按 “数据流 ”的形式进行处理。数据可以按文本形式或二进制形式存放在介质上,因此文件可以按数据的存放形式分为文本文件和二进制文件。 【知识模块】 结构体、共用体、位运算及文件操作 40 【正确答案】 A 【试题解析】 本题考查位操作运算符。 “ ”是左移运算符,左移一位相当于乘2, 是按位或运算符。 5左移两位相当于乘 4,得到 20, 20的二进制数是00010100,和 00000001进行按位 或操作得到 00010101,即十进制的 21。 【知识模块】 结构体、共用体、位运算及文件操作 41 【正确答案】 C 【试题解析】 本题考查文件打开方式。 格式:文件指

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