【计算机类职业资格】二级C语言笔试93及答案解析.doc

上传人:proposalcash356 文档编号:1326414 上传时间:2019-10-17 格式:DOC 页数:22 大小:121KB
下载 相关 举报
【计算机类职业资格】二级C语言笔试93及答案解析.doc_第1页
第1页 / 共22页
【计算机类职业资格】二级C语言笔试93及答案解析.doc_第2页
第2页 / 共22页
【计算机类职业资格】二级C语言笔试93及答案解析.doc_第3页
第3页 / 共22页
【计算机类职业资格】二级C语言笔试93及答案解析.doc_第4页
第4页 / 共22页
【计算机类职业资格】二级C语言笔试93及答案解析.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、二级 C 语言笔试 93 及答案解析(总分:98.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:60.00)1.设有如下说明: typedef struct ST long a;int b;char c2; NEW; 则下面叙述中正确的是( )。(分数:2.00)A.以上的说明形式非法B.ST 是一个结构体类型C.NEW 是一个结构体类型D.NEW 是一个结构体变量2.有以下程序: main() int x=1,3,5,7,2,4,6,0,i,j,k; for(i=0;i3;i+) for(j=2;j=i;j-) if(xj+1xj) k=xj; xj=xj+1; xj+1

2、=k; for(i=0;i3;i+) for(j=4;j7-i;j+) if(xjxj+1) k=xj; xj=xj+1; xj+1=k; for(i=0;i8;i+) printf(“%d“,xi); printf(“/n“); 程序运行后的输出结果是( )。(分数:2.00)A.75310246B.01234567C.76310462D.135702463.在面向对象的程序设计中,下列叙述中错误的是( )。(分数:2.00)A.对象是面向对象软件的基本模块B.对象不是独立存在的实体,各个对象之间有关联,彼此依赖C.下一层次的对象可以继承上层次对象的某些属性D.同样的消息被不同对象接受时,可

3、导致完全不同的行动4.有以下程序: void change(int k)k0=k5; main() int x10=(1,2,3,4,5,6,7,8,9,10,n=0; while(n=4) change(n+; for(n=0;n5;n+) printf(“%d“,xn); printf(“/n“); 程序运行后输出的结果是( )。(分数:2.00)A.6 7 8 9 10B.1 3 5 7 9C.1 2 3 4 5D.6 2 3 4 55.有以下程序: #include stdio.h main() char c1,c2,c3,c4,c5,c6; scanf(%c%c%c%c, c5=ge

4、tchar(); c6=getchar(); putchar(c1); putchar(c2); printf(%c%c/n,c5,c6); 程序运行后,若从键盘输入(从第 1 列开始) 123回车 45678回车 则输出结果是( )。(分数:2.00)A.1267B.1256C.1278D.12456.设有以下定义: union data int d1; float d2; demo; 则下面叙述中错误的是( )。(分数:2.00)A.变量 demo 与成员 d2 所占的内存字节数相同B.变量 demo 中各成员的地址相同C.变量 demo 和各成员的地址相同D.若给 demd1 赋 99

5、后,demd2 中的值是 99.07.冒泡排序在最坏情况下的比较次数是( )。(分数:2.00)A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/28.以下选项中,值为 1 的表达式是( )。(分数:2.00)A.1-0B.1-/0C.1-0D./0-09.有以下程序: int a=4; int f(int n) int t=0; static int a=5; if(n%2) int a=6; t+=a+; else int a=7; t+=a+; return t+a+; main() int s=a,i=0; for(;i2; i+) s+=f(i); printf(“%d

6、/n“,s); 程序运行后的输出结果是( )。(分数:2.00)A.24B.28C.32D.3610.程序设计方法要求在程序设计过程中,( )。(分数:2.00)A.先编制出程序,经调试使程序运行结果正确后再画出程序的流程图B.先编制出程序,经调试使程序运行结果正确后再在程序中的适当位置处加注释C.先画出流程图,再根据流程图编制出程序,最后经调试使程序运行结果正确后再在程序中的适当位置处加注释D.以上 3 种说法都不对11.以下叙述中错误的是( )。(分数:1.00)A.C 语言中对二进制文件的访问速度比文本文件快B.C 语言中,随机文件以二进制代码形式存储数据C.语句 FILE fp;定义了

7、一个名为 fp 的文件指针D.C 语言中的文本文件以 ASCII 码形式存储数据12.若有如下程序段,其中 s、a、b、c 均已定义为整型变量,且 a、c 均已赋值(c 大于 0) s=a; for(b=1;b=c;b+)s=s+1; 则与上述程序段功能等价的赋值语句是( )。(分数:1.00)A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;13.以下程序中函数 sort 的功能是对 a 所指数组中的数据进行由大到小的排序; void sort(int a,int n) int i,j,t; for(i=0;in-1;i+) for(j=i+1,jn;j+) if(aiaj)

8、t=ai;ai=aj;aj=t; main() int aa10=1,2,3,4,5,6,7,8,9,10,i; sort( for(i=0;i10;i+)print(“%d,“,aai); printf(/n“); 程序运行后的输出结果是( )。(分数:1.00)A.1,2,3,4,5,6,7,8,9,10B.10,9,8,7,6,5,4,3,2,1,C.1,2,3,8,7,6,5,4,9,10D.1,2,10,9,8,7,6,5,4,3,14.C 语言源程序名的后缀是( )。(分数:1.00)AexeBcCobjDcp15.有以下程序: main() char p=a,b,c,q=“abc

9、“; printf(“%d %d/n“,sizeof(p),sizeof(q); 程序运行后的输出结果是( )。(分数:1.00)A.4 4B.3 3C.3 4D.4 316.有以下程序; void ss(char *s,char t) while(*s) if(*s=t) *s=t-a+A; s+; main() char str1100=“abcddfefdbd“,c=d; ss(str1,c);printf(“%s/n“,str1); 程序运行后的输出结果是( )。(分数:1.00)A.ABCDDEFEDBDB.abeDDfefDbDC.abcAAfefAbAD.Abcddfefdbd1

10、7.有以下程序,其中%u 表示按无符号整数输出: main() unsigned int x=0xFFFF; /*x 的初值为十六进制数*/ printf(“%u/n“,x); 程序运行后的输出结果是( )。(分数:1.00)A.-1B.65535C.32767D.0xFFFF18.有以下程序: #include string.h main() char p=a,b,c,q10=a,b,c; printf(“%d %d/n“,strlen(p),strlen(q); 以下叙述中正确的是( )。(分数:1.00)A.在给 p 和 q 数组置初值时,系统会自动添加字符串结束符,故输出的长度都为 3

11、B.由于 p 数组中没有字符串结束符,长度不能确定;但 q 数组中字符串长度为 3C.由于 q 数组中没有字符串结束符,长度不能确定;但 p 数组中字符串长度为 3D.由于 p 和 q 数组中都没有字符串结束符,故长度都不能确定19.有以下程序: main() char a,b,c,d; scanf(“%c,%c,%d,%d“, printf(“%c,%c,%c,%c/n“,a,b,c,d); 若运行时从键盘上输入:6,5,65,66回车。则输出结果是( )。(分数:1.00)A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,620.有以下程序: #include st

12、dio.h main() char c1=1,c2=2; c1=getchar(); c2=getchar(); putchar(c1); putchar(c2); 当运行时输入:a回车后,以下叙述正确的是( )。(分数:1.00)A.变量 c1 被赋予字符 a,c2 被赋予回车符B.程序将等待用户输入第 2 个字符C.变量 c1 被赋予字符 a,c2 中仍是原有字符 2D.变量 c1 被赋予字符 a,c2 中将无确定值21.有以下程序: main() char s=“/n123/“; printf(“%d,%d/n“,strlen(s),sizeof(s); 执行后输出结果是( )。(分数:

13、1.00)A.赋初值的字符串有错B.6,7C.5,6D.6,622.阅读以下函数: fun(char *s1,char *s2) int i=0; while(s1i=s2i return(s1i=/0 此函数的功能是( )。(分数:1.00)A.将 s2 所指字符串赋给 s1B.比较 s1 和 s2 所指字符串的大小,若 s1 比 s2 的大,函数值为 1,否则函数值为 0C.比较 s1 和 s2 所指字符串是否相等,若相等,函数值为 1,否则函数值为 0D.比较 s1 和 s2 所指字符串的长度,若 s1 比 s2 的长,函数值为 1,否则函数值为 023.有以下定义语句: double

14、a,b; int w; long c; 若各变量已正确赋值,则下列选项中正确的表达式是( )。(分数:1.00)A.a=a+b=b+B.w%(ina+C.(c+%(inaD.w=a=b24.以下选项中合法的实型常数是( )。(分数:1.00)A.5E2.0B.E-3C2E0D.1.3E26.若有定义语句:int a23,*p3;,则以下语句中正确的是( )。(分数:1.00)A.p=a;B.p0=a;C.p0=D.p1=27.若变量已正确定义,要求程序段完成求 5!的计算,不能完成此操作的程序段是( )。(分数:1.00)A.for(i=1,p=1;i=5;i+) p*=i;B.for(i=1

15、;i=5;i+) p=1; p*=i;C.i=1;p=1; while(i=5)p*=i; i+;D.i=1;p=1;dop*=i; i+; while(1=5)28.有以下程序: #include stdio.h stxuct 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; 程序的运行结果是( )。(分数:1.00)A.20,30,B.30,17C.15,30,D.20,15,29.有以

16、下程序: main() int a=1,b=2,m=0,n=0,k; k=(n=ba)|(m=ab); printf(“%d,%d/n“,k,m); 程序运行后的输出结果是( )。(分数:1.00)A.0,0B.0,1C.1,0D.1,130.有以下程序: #include string.h void f(char p10,int n)/* 字符串从小到大排序 */ char t10; int i,j; for(i=0;in-1;i+) for(j=i+1;jn;j+) if(strcmp(pi,pj)0) strcpy(t,pi); strcpy(pi,pj); strcpy(pj,t);

17、main() char p510=“abc“,“aabdog“,“abbd“,“dcdbe“,“cd“; f(p,5); printf(“%d/n“,strlen(p0); 程序运行后的输出结果是( )。(分数:1.00)A.2B.4C.6D.331.已有定义:char c;,程序前面已在命令行中包含 ctype.h 文件。不能用于判断 c 中的字符是否为大写字母的表达式是( )。(分数:1.00)A.isupper(B.A=c=ZC.A=c 程序运行后的输出结果是( )。(分数:1.00)A.0B.1C.-1D.NULL 没定义,出错36.对于长度为 n 的线性表,在最坏情况下,下列各排序法

18、所对应的比较次数中正确的是( )。(分数:1.00)A.冒泡排序为 n/2B.冒泡排序为 nC.快速排序为 nD.快速排序为 n(n-1)/237.在面向对象方法中,实现信息隐蔽是依靠( )。(分数:1.00)A.对象的继承B.对象的多态C.对象的封装D.对象的分类38.以下叙述中正确的是( )。(分数:1.00)A.全局变量的作用域一定比局部变量的作用域范围大B.静态(stati 类别变量的生存期贯穿于整个程序的运行期间C.函数的形参都属于全局变量D.未在定义语句中赋初值的 auto 变量和 static 变量的初值都是随机值39.若有说明语句:int a,b,c,*d=,则能正确从键盘读入

19、 3 个整数分别赋给变量 a、b、c 的语句是( )。(分数:1.00)A.scanf(“%d%d%d“,B.scanf(“%d%d%d“,C.scanf(“%d%d%d“,a,b,;D.scanf(“%d%d%d“,a,b,*;41.以下 4 个程序中,完全正确的是( )。(分数:1.00)A.#include stdih main(); /* programming */ printf(“programming!/n“);B.#include stdih main() /*/ programming /*/ printf(“programming!/n“);C.#include stdih

20、 main() /*/* programming */*/ printf(“programming!/n“);D.#include stdih main() /* programming */ printf(“programming!/n“);42.下列数据结构中,能用二分法进行查找的是( )。(分数:1.00)A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表43.以下程序输出的结果是( )。 #include stdio.h main() int i=010,j=10; printf(“%d,%d/n:,+i,j-); (分数:1.00)A.11,10B.9,10C.010,

21、9D.10,944.有以下程序: fun(int x,int y) static int m=0, i=2; i+=m+1; m=i+x+y; return m; main() int j=1,m=1,k; k=fun(j,m); printf(“%d,“k); k=fun(j,m); printf(“%d/n“,k); 执行后的输出结果是( )。(分数:1.00)A.5,5B.5,11C.11,11D.11,545.下列实体的联系中,属于多对多联系的是( )。(分数:1.00)A.学生与课程B.学校与校长C.住院的病人与病床D.职工与工资46.设有定义:int n1=0,n2,*p=,以下赋

22、值语句中与 n2=n1;语句等价的是( )。(分数:1.00)A.*p=*q;B.p=q;C.*p=D.p=*q;47.设有以下语句: typedef struct TT char c; int a4;CIN; 则下面叙述中正确的是( )。(分数:1.00)A.可以用 TT 定义结构体变量B.TT 是 struct 类型的变量C.可以用 CIN 定义结构体变量D.CIN 是 struct TT 类型的变量48.有以下程序: #include stdlib.h main() char *p,*q; p=(char*)malloc(sizeof(char)*20);q=p; scanf(“%s%s

23、“,p,q); printf(“%s%s/n“,p,q); 若从键盘输入:abc def回车,则输出结果是( )。(分数:1.00)A.def defB.abc defC.abe dD.d d49.有以下程序: main() int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf(“%d %d %3.1f %3.1f/n“,a,c,f,x); 程序运行后的输出结果是( )。(分数:1.00)A.1 65 1 6.5B.1 65 1.5 6.5C.1 65 1.0 6.5D.2 65 1.5 6.550.以下程序企图把

24、从终端输入的字符输出到名为 abc.txt 的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。 #include stdio.h main() FILE *four; char ch; fout=fopen(abc.txt,w); ch=fgetc(stdin); while(ch!=#) fputc(ch,fout); ch=fgetc(stdin); fclose(fout); 出错的原因是( )。(分数:1.00)A.函数 fopen 调用形式有误B.输入文件没有关闭C.函数 fgetc 调用形式有误D.文件指针 stdin 没有定义二、B填空题/B(总题数:19,分数:

25、38.00)51.数据管理技术发展过程经过人工管理、文件系统和数据库系统这 3 个阶段,其中数据独立性最高的阶段是U 【1】 /U。(分数:2.00)填空项 1:_52.在面向对象方法中,允许作用于某个对象上的操作称为U 【2】 /U。(分数:2.00)填空项 1:_53.软件生命周期包括 2 今阶段。为了使各时期的任务更明确,又可分为 3 个时期:软件定义期、软件开发期、软件维护期。编码和测试属于U 【3】 /U期。(分数:2.00)填空项 1:_54.在关系运算中,U 【4】 /U运算是对两个具有公共属性的关系所进行的运算。(分数:2.00)填空项 1:_55.实体之间的联系可以归结为一对

26、一的联系,一对多的联系与多对多的联系。如果一个学校有许多学生,而一个学生只归属于一个学校,则实体集学校与实体集学生之间的联系属于U 【5】 /U的联系。(分数:2.00)填空项 1:_56.若从键盘输入 58,则以下程序输出的结果是U 【6】 /U。 mam() int a; scanf(“%d“, if(a50) printf(“%d“,a); if(a40) printf(“%d“,a); if(a30) printf(“%d“,a); (分数:2.00)填空项 1:_57.以下程序用于判断 a、b、c 能否构成三角形,若能,输出 YES,否则输出 NO。当给 a、b、c 输入三角形三条边

27、长时,确定 a、b、c 能构成三角形的条件是需同时满足三个条件:a+bc,a+cb,b+ca。 请填空。 main() float a,b,c; scanf(“%f%f%f“, if(U 【7】 /U) printf(“YES/n“); /*a、b、c 能构成三角形*/ else printf(“NO/n“); /*a、b、c 不能构成三角形*/ (分数:2.00)填空项 1:_58.以下程序运行后的输出结果是U 【8】 /U。 main() int a=3,b=4,c=5,t=99; if(ba a=c;c=t; if(ac b=a;a=t; printf(“%d %d %d/n“,a,b,

28、c); (分数:2.00)填空项 1:_59.有以下程序: main() int n=0,m=1,x=2; if(!n) x-=1; if(m) x-=2; if(x) x-=3; printf(“%d/n“,x); 执行后输出的结果是U 【9】 /U。(分数:2.00)填空项 1:_60.以下程序的输出结果是U 【10】 /U。 #include string.h main() printf(“%d/n“,strlen(“IBM/n012/1/“);(分数:2.00)填空项 1:_61.有以下程序: void f(int y,int *x) y=y+*x; *x=*x+y; main() i

29、nt x=2,y=4; f(y, printf(“%d %d/n“,x,y); 执行后输出结果是上U 【11】 /U。(分数:2.00)填空项 1:_62.函数 fun 的功能是计算 xn。double fun(double x,int n) int i;double y=1;for(i=1;i=n;i+) y=y*x;return y;主函数中已正确定义 m、a、b 变量并赋值,并调用 fun 函数计算:m=a 4+b4-(a+b)3。实现这一计算的函数调用语句为U 【12】 /U。(分数:2.00)填空项 1:_63.以下函数 sstrcat()的功能是实现字符串的连接,即将 t 所指字符

30、串复制到 s 所指字符串的尾部。例如:s 所指字符串为 abed,t 所指字符串为 efgh,函数调用后 s 所指字符串为 abodefgh。请填空。 #include string.h void sstrcat(char *s,char *t) int n; n=strlen(s); while(*(s+n)=U 【13】 /U)s+;t+; (分数:2.00)填空项 1:_64.以下程序运行后的输出结果是U 【14】 /U。 #include string.h char *ss(char *s) char *p;t; p=s+1;t=*s; while(*p)*(p-1)=*p;p+; *

31、(p-1)=t; return s; main() char *p,str10=“abcdergh“; p=ss(str); printf(“%s/n“,p); (分数:2.00)填空项 1:_65.函数 sstrcmp()的功能是对两个字符串进行比较。当 s 所指字符串和 t 所指字符串相等时,返回值为0;当 s 所指字符串大于 t 所指字符串时,返回值大于 0;当 s 所指字符串小于 t 所指字符串时,返回值小于 0(功能等同于库函数 strcmp()。请填空。 #include stdio.h int sstrcmp(char *s,char *t) while(*s t+; rerur

32、n U【16】 /U; (分数:2.00)填空项 1:_66.以下程序的输出结果是U 【17】 /U。 int fun(int *x,int n) if(n=0) return x0; else return x0+fun(x+1,n-1); main() int a=1,2,3,4,5,6,7; printf(“%d/n“,fun(a,3);(分数:2.00)填空项 1:_67.下面程序的运行结果是U 【18】 /U。 void swap(int *a,int *b) int *tp; t=a;a=b;b=t; main() int x=3,y=5,*p= swap(p,q); printf

33、(“%d%d/n“,*p,*q); (分数:2.00)填空项 1:_68.下面程序的功能是建立一个有 3 个结点的单循环链表,然后求各个结点数值域 data 中数据的和,请填空。 (分数:2.00)填空项 1:_69.有以下程序,其功能是:以二进制“写”方式打开文件 d1.dat,写入 1100 这 100 个整数后关闭文件。再以二进制“读”方式打开文件 d1.dat,将这 100 个整数读入到另一个数组 b 中,并打印输出。请填空。 #include stdio.h main() FILE *fp; int i,a100,b100; fp=fopen(“d1.dat“,“wb“); for(

34、i=0;i100;i+) ai=i+1; fwrite(a,sizeof(int),100,fp); fclose(fp); fp=fopen(“d1.dat“, U【20】 /U); fread(b,sizeof(int ),100,fp); fclose(fp); for(i=0;i100;i+) printf(“%d/n“,bi); (分数:2.00)填空项 1:_二级 C 语言笔试 93 答案解析(总分:98.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:60.00)1.设有如下说明: typedef struct ST long a;int b;char c2;

35、NEW; 则下面叙述中正确的是( )。(分数:2.00)A.以上的说明形式非法B.ST 是一个结构体类型C.NEW 是一个结构体类型 D.NEW 是一个结构体变量解析:解析 将题目中的定义语句去掉前面的 typedef 和后面的 NEW(分号保留),就是一条完整的结构体定义语句,其中 struct 是说明符,ST 是结构体名,大括号里面的是结构体成员的定义。此时要声明该结构体变量时需要使用 struct 加结构体名一起来声明,struct ST 一起构成一个结构体类型,就好像字符类型 char。若只去掉前面的 typedef,就是一条结构体定义同时声明一个结构体变量 NEW 的语句,因为NEW

36、 的前面部分是 struct ST 的完整写法,可以看作是 struct ST。C 语言允许用 typedef 说明一种新类型名,其语法格式为: typedef 类型 名标识符; 以后就可以用该标识符来代替被说明的类型名了。因此,当前面存在 typedef 时,该语句就变成了给 struct ST 的完整写法定义一个新的名称 NEW。所以,此时的 NEW 是一个结构体类型,它相当于 struct ST,即可以和 char 一样单独用来声明该结构体变量,而ST 只是一个结构体名,不能单独用来声明变量。所以,4 个选项中 C 符合题意。2.有以下程序: main() int x=1,3,5,7,2

37、,4,6,0,i,j,k; for(i=0;i3;i+) for(j=2;j=i;j-) if(xj+1xj) k=xj; xj=xj+1; xj+1=k; for(i=0;i3;i+) for(j=4;j7-i;j+) if(xjxj+1) k=xj; xj=xj+1; xj+1=k; for(i=0;i8;i+) printf(“%d“,xi); printf(“/n“); 程序运行后的输出结果是( )。(分数:2.00)A.75310246 B.01234567C.76310462D.13570246解析:解析 主函数中定义了一个整型数组 x,并初始化。接着执行了一个二重 for 循环,

38、在该二重循环的作用是将数组的前 4 个元素按从大到小排序,接着用了一个二重循环(也是冒泡算法)将数组的后 4 个元素按从小到大的顺序排序,故最后依次输出数组的个元素的值为 75310246,所以,4 个选项中选项 A 符合题意。3.在面向对象的程序设计中,下列叙述中错误的是( )。(分数:2.00)A.对象是面向对象软件的基本模块B.对象不是独立存在的实体,各个对象之间有关联,彼此依赖 C.下一层次的对象可以继承上层次对象的某些属性D.同样的消息被不同对象接受时,可导致完全不同的行动解析:解析 在面向对象的程序设计中,一个对象是一个可以独立存在的实体。各个对象之间相对独立,相互依赖性小。所以,

39、选项 B 错误,应为本题的正确答案。4.有以下程序: void change(int k)k0=k5; main() int x10=(1,2,3,4,5,6,7,8,9,10,n=0; while(n=4) change(n+; for(n=0;n5;n+) printf(“%d“,xn); printf(“/n“); 程序运行后输出的结果是( )。(分数:2.00)A.6 7 8 9 10 B.1 3 5 7 9C.1 2 3 4 5D.6 2 3 4 5解析:解析 本题的 change()函数实现的是:将传入的地址值的高 5 个单位的地址中的内容复制到传入的地址当中,即等价于*k=*(k

40、+5)。在主函数中,首先通过 while 循环,循环 5 次调用 change()函数,依次将 x0x4的地址传入,所以 while 循环结束后,x0x4中的内容等于 x5x9中的内容。所以输出结果为 6 7 8 9 10,故应该选择 A。5.有以下程序: #include stdio.h main() char c1,c2,c3,c4,c5,c6; scanf(%c%c%c%c, c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf(%c%c/n,c5,c6); 程序运行后,若从键盘输入(从第 1 列开始) 123回车 45

41、678回车 则输出结果是( )。(分数:2.00)A.1267B.1256C.1278D.1245 解析:解析 在题目中,程序执行到 scanf()函数时,会暂停等待用户输入 4 个字符,按题意输入 123回车后,字符 13 被分别输入到 c1c3 中,而 c4 会得到一个换行符/n。然后执行第 1 个getchar()函数,由于前面的 scanf()函数读完了缓冲区中的所有字符,所以此时程序会又暂停等待用户输入,按题意输入 45678回车后,缓冲区第 1 个字符4被读入并赋给 c5,第 2 个 getchar()函数会读入缓冲区第 2 个字符5。所以最后依次输出 c1、c2、c5、c6 的值

42、后,屏幕上的结果是 1245。故应该选择 D。6.设有以下定义: union data int d1; float d2; demo; 则下面叙述中错误的是( )。(分数:2.00)A.变量 demo 与成员 d2 所占的内存字节数相同B.变量 demo 中各成员的地址相同C.变量 demo 和各成员的地址相同D.若给 demd1 赋 99 后,demd2 中的值是 99.0 解析:解析 本题中 float 所占内存字节数为 4,而 int 类型在 VC 6.0 中占 4 字节,所以 demo 就与成员 d2 所占字节数是相同的,选项 A 的说法正确。联合体的所有成员的首地址都是相同的,和联合

43、体变量的地址一致。故选项 B 和 C 都是正确的。由于 int 类型数据和 float 类型数据在内存中的存放格式是不一样的,所以给 d1 赋 99 后,d2 中不会得到 99.0 这个值。故选项 D 不正确,答案应该选择 D。7.冒泡排序在最坏情况下的比较次数是( )。(分数:2.00)A.n(n+1)/2B.nlog2nC.n(n-1)/2 D.n/2解析:解析 冒泡排序的基本思想是:将相邻的两个元素进行比较,如果反序,则交换;对于一个待排序的序列,经一趟排序后,最大值的元素移动到最后的位置,其它值较大的元素也向最终位置移动,此过程称为一趟冒泡。对于有 n 个数据的序列,共需 n-1 趟排

44、序,第 i 趟对从 1 到 n-i 个数据进行比较、交换。冒泡排序的最坏情况是待排序序列逆序,第 1 趟比较 n-1 次,第 2 趟比较 n-2 次,依此类推,最后一趟比较 1 次,一共进行 n-1 趟排序。因此,冒泡排序在最坏情况下的比较次数是(n-1)+(n-2)+1,结果为n(n-1)/2。8.以下选项中,值为 1 的表达式是( )。(分数:2.00)A.1-0B.1-/0 C.1-0D./0-0解析:解析 在 ASCII 码中,字符串结束符/0的 ASCII 码为 0,字符0的 ASCII 码的值为 48,字符1的 ASCII 码的值为 49。由此可见,选项 A 的值为-47;选项 B

45、 的值为 1;选项 C 的值为 49;选项 D 的值为-48。故应该选择 B。9.有以下程序: int a=4; int f(int n) int t=0; static int a=5; if(n%2) int a=6; t+=a+; else int a=7; t+=a+; return t+a+; main() int s=a,i=0; for(;i2; i+) s+=f(i); printf(“%d/n“,s); 程序运行后的输出结果是( )。(分数:2.00)A.24B.28 C.32D.36解析:解析 题目中第 1 行声明了一个全局变量 a,在函数 f()中,也声明了一个静态变量 a,这时全局变量被屏蔽,即在 f()函数中用到的 a 是其内部定义的这个静态变量 a,而不是全局变量。但 f()函数的if 子句和 else 子句又分别了局部变量 a,这时静态变量 a 又被屏蔽,即在 if 子句中使用的是 if 子句自己定义的 a,else 子句也是这样。在主函数中,通过 for 语句连续执行了 2 次 f()函数,并将返回值累加到 s 中,且 s 被全局变量 a 初始化,即初始值是 4。第 1 次调用 f(),参数值为 0,0 能被 2 整除,执行if 子句,t 被自增 6,a 增 1 不会影响外面的变量 a

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

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