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

上传人:hopesteam270 文档编号:502827 上传时间:2018-11-29 格式:DOC 页数:31 大小:108KB
下载 相关 举报
[计算机类试卷]国家二级(C语言)机试历年真题试卷汇编3及答案与解析.doc_第1页
第1页 / 共31页
[计算机类试卷]国家二级(C语言)机试历年真题试卷汇编3及答案与解析.doc_第2页
第2页 / 共31页
[计算机类试卷]国家二级(C语言)机试历年真题试卷汇编3及答案与解析.doc_第3页
第3页 / 共31页
[计算机类试卷]国家二级(C语言)机试历年真题试卷汇编3及答案与解析.doc_第4页
第4页 / 共31页
[计算机类试卷]国家二级(C语言)机试历年真题试卷汇编3及答案与解析.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

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