2022-2023年贵州省安顺市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第1页
2022-2023年贵州省安顺市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第2页
2022-2023年贵州省安顺市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第3页
2022-2023年贵州省安顺市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第4页
2022-2023年贵州省安顺市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2022-2023年贵州省安顺市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.第

24

下面程序段的运行结果是

char*p="abcdefgh";

p+=3;

printf("%d\n",strlen(strcpy(p,"ABCD")));

A.8B.12C.4D.7

2.用二分法查找一个长度为10的,排好序的线性表,查找不成功时,最多需要比较()次

A.5B.2C.4D.1

3.

4.

5.下列有关格式输入函数scanf的叙述中正确的是()

A.输入项可以是C语言中规定的任何变量,并且在任何变量前必须加地址符号“&”

B.可以只有格式控制项,没有地址列表项

C.在输入数据时,必须规定精度。如:scanf("%4.2f",&d);

D.当输入数据时,必须指明变量地址

6.下列选项中,不属于数据管理员(DBA.职责的是()。

A.数据库维护B.数据库设计C.改善系统性能,提高系统效率D.数据类型转换

7.以下不能输出字符A的语句是(注:字符A的ASCII值为65,字符a的ASCII值为97)()。

A.printf(“%c\n”,‘a’-32);

B.printf(“%d\n”,‘A’);

C.printf(“%c\n”,65);

D.printf(“%c\n”,‘B’-1);

8.C语言的逻辑表达式在特定情况下会产生“短路”现象。若有逻辑表达式“x++&&y++,”则以下叙述中正确的是()。

A.若x的值为0,则“y++”操作被“短路”,y值不变

B.若x的值为1,则“y++”操作被“短路”,y值不变

C.若y的值为0,则“&&”运算被“短路”,y值不变

D.若y或x的值为0,则表达式值为0,“x++”和“y++”均不执行

9.以下程序的输出结果是______。main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}

A.20B.21C.22D.23

10.

11.有以下程序:#includedstdi0.h>#definef(x)X*x*xmain(){inta=3,S,t;s=f(a+1);t=f((a+1));printf("%d,%d\n",S,t);}程序运行后的输出结果是()。A.10,64B.10,10C.64,10D.64,64

12.在嵌套使用if语句时,C语言规定else总是A.和之前与其具有相同缩进位置的if配对

B.和之前与其最近的if配对

C.和之前与其最近的且不带else的if配对

D.和之前的第一个if配对

13.设长度为n的链队列用单循环链表表示,若只设头指针,则入队操作的时间复杂度为_______。

A.O(1)B.O(log2n)C.O(n)D.O(n2)

14.在银行业务中,实体客户和实体银行之间的联系是()。

A.—对一B.—对多C.多对一D.多对多

15.算法的空间复杂度是指()。

A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间

16.下列对队列的叙述正确的是A.队列属于非线性表B.队列按“先进后出”原则组织数据C.队列在队尾删除数据D.队列按“先进先出”原则组织数据

17.设有以下定义uniondata{intd1;floatd2;}demo;则下面叙述中错误的是()。A.A.变量demo与成员d2所占的内存字节数相同

B.变量demo中各成员的地址相同

C.变量demo和各成员的地址相同

D.若给demo.d1赋99后,demo.d2中的值是99.0

18.设二叉树的中序序列为BCDA,前序序列为ABCD,则后序序列为()。

A.CBDAB.DCBAC.BCDAD.ACDB

19.

20.以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。#defineMIN-2147483647intfindmax(intx[],intn){inti,max;for(i=0;i<n;i++){max=MIN;if(max<x[i])max=x[i];)returnmax;}造成错误的原因是()。A.定义语句“inti,max;”中max未赋初值

B.赋值语句“max=MIN;”中,不应给max赋MIN值

C.语句“if(max<x[i])max=x[i];”中判断条件设置错误

D.赋值语句“max-MIN;”放错了位置

二、2.填空题(20题)21.下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其他元素不变。请填空。

#include<stdio.h>

#include<string.h>

main()

{chara[]="clanguage",t;

inti,j,k;

k=strlen(a);

for(i=0;i<=k-2;i+=2)

for(j=i+2;j<=k;j+=2;)

if(【】)

{t=a[i];a[i]=a[j];a[j]=t;}

puts(a);

printf("\n");

}

22.x和y都是double型变量,x的初值为4.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为______。

23.在使用putchar和getchar函数处理字符时,必须在程序的开头出现包含头文件的命令行是【】。

24.以下程序运行后的输出结果是()。

#include<stdio.h>

main()

{intx=20;

printf("%d",0<x<20);

printf("%d\n",0<x&&x<20);

}

25.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。

26.以下程序运行后的输出结果是______。

#inClude<strinq.h>

char*ss(char*s)

{char*p;t;

p=S+1;t=*s;

while(*p){*(p-1)=*p;p++;}

*(p-1)=t;

returns;

}

main()

{char*p,str[10]="abcdefgh";

p=ss(str);

printf("%s\n",p);

}

27.以下程序运行后的输出结果是______。

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

printf("%d%d%d\n",a,b,C);

}

28.若从键盘输入58,则以下程序的输出结果是【】。

main()

{inta;

scanf(“%d”,&A);

if(a>50)printf(“%d”,A);

if(a>40)printf(“%d”,A);

if(a>30)printf(“%d”,A);

}

29.在树形结构中,树根结点没有______。

30.下面程序的功能:输出100以内能被3整除且个位数为6的所有整数,请补充完整。

main()

{inti,j;

for(i=0;【】;i++)

{j=i*10+6;

if(【】)continue;

printf("%d",j);

}

}

31.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。

32.下列表达式用于判断y是否为闰年。闰年的判断条件是:年号能被4整除但不能被100整除或年号能被400整除,请填空______。

33.软件开发环境是全面支持软件开发全过程的______的集合。

34.设有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

for(i=0;i<2;i++)

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

printf("%s\n",t);

}

程序运行后,从键盘上输入(<CR>代表回车符):CDEF<CR>BADEF<CR>QTHRG<CR>,则程序的输出结果是______。

35.在宏定义#definePI3.14159中,用宏名PI代替一个______。

36.设有如下宏定义

#defineMYSWAP(z,x,y){z=x;x=Y;Y=z;}

以下程序段通过宏调用实现变量a、b内容的交换,请填空。

floata=5,b=16,c;

MYSWAP(【】,a,b);

37.以下程序运行后的输出结果是【】。

main()

{

intx=0210;

printf("%X\n",x);

}

38.以下程序的输出结果是【】。

doublesub(doublex,doubley,doublez)

{y-=1.0;

z=z+x;

returnz;

}

main()

{doublea=2.5,b=9.0;

printf("functionrunningresultis:%6.1f\n",sub(b-a,a,A));

}

39.设有以下定义:

structss

{intinfo;structss*link;}x,y,z;

且已建立如下图所示链表结构,

请写出删除点y的赋值语句【】。

40.一棵二叉树第六层(根结点为第一层)的结点数最多为______个。

三、1.选择题(20题)41.若有以下程序段(n所赋的是八进制数):intm=32767,n=032767;printf("%d,%\n",m,n);执行后输出结果是()。

A.32767,32767B.32767,032767C.32767,77777D.32767,077777

42.下面语句的输出结果,是______。printh("%d\n",strlen("\t\"\065\xff\n"));

A.14B.8C.5D.输出项不合法,无正常输出

43.若有以下定义,则正确的switch语句是______。floatx;inta,b;

A.switch(x){case1.0:printf("*\n");csse2.0:printf("**\n");}

B.switch(x){case1,2:printf("*\n");case3:printf("**\n");}

C.switch(a+b){case1:printf("\n");case1+2:printf("**\n");}

D.switch(a+b);{case1:printf("*\n");case2:printf("**\n");}

44.有以下程序intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i<3;i++)j+=f(i);printf("%d\n",j);}程序运行后的输出结果是

A.4B.3C.2D.1

45.有以下程序structSTU{charnum[10];floatscore[3];};main(){structSTUs[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p=s;inti;floatsum=0;for(i-0;i<3,i++)sum=sum+p->score[i];printf("%6.2f\n",sum};}程序运行后的输出结果是

A.260B.270C.280D.285

46.有下列程序段:intk=0,a=1,b=2,c=3;k=a<b?b:a;k=k>c?c:k;执行该程序段后,k的值是()。

A.3B.2C.1D.0

47.阅读下列程序段,则程序的输出结果为

#include"stdio.h"

#defineM(X,Y)(X)*(Y)

#defineN(X,Y)(X)/(Y)

main()

{inta=5,b=6,c=8,k;

k=N(M(a,b),c);

printf("%d\n",k);

A.3B.5C.6D.8

48.下列说法正确的是()。

A.main函数必须放在C程序的最后面

B.main函数必须放在C程序的最前面

C.main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执行的

D.main函数可以放在C程序的中间部分,但在执行C程序时是从main函数开始的

49.设变量已正确定义,则以下能正确计算f=n!的程序段是______。A.f=0;for(i=1;i<n;i++)f*=i;

B.f=1;for(i=1;i<n;i++)f*=i;

C.f=1;for(i=n;i>1;i++)f*=i;

D.f=1;for(i=n;i>=2;i--)f*=i;

50.当执行下面的程序时,如果输入ABC,则输出结果是______。#include"stdio.h"#include"string.h"main(){charss[10]="12345";gets(ss);strcat(ss,"6789");printf("%s\n",ss);}

A.ABC6789B.ABC67C.12345ABC6D.ABC456789

51.设有说明语句如下:staticcharstr[]="Beijing";若执行下列输出语句:printf("%d\n",strlen(strcpy(str,"China")));则输出结果为()。

A.5B.7C.12D.14

52.假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:PROGABCDEFGHIJKL<回车>则输出结果是()。#include<stdio.h>main(intargc,char*argv[]){while(--argc>0)printf("%s",argv[argc]);printf("\n");}

A.ABCDEFGB.IJHLC.ABCDEFGHIJKLD.IJKLABCDEFGH

53.有以下程序#include<stdio.h>main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf("a=%d,b=%d\n",a,b);}程序的运行结果是

A.a=1,b=0B.a=2,b=2C.a=1,b=1D.a=2,b=1

54.有以下程序:fun(intx,inty){return(x+y);}main(){inta=1,b=2,c=3,Sum;sum=fun((a++,b++,a+b),c++);printf("%d",sum);}执行后的输出结果是______。

A.6B.7C.8D.9

55.下列关于队列的叙述中正确的是______。A.在队列中只能插入数据B.在队列中只能删除数据C.队列是先进先出的线性表D.队列是先进后出的线性表

56.有以下程序:main(){intm,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%d\n",m,n,p);}若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是______。

A.m=123n=456p=789

B.m=123n=456p=789

C.m=123,n=456,p=789

D.123456789

57.C语言提供的预处理功能包括条件,其基本形式为:#×××标识符程序段1#else程序段2#endif这里的×××可以是()

A.define或include

B.ifdef或include

C.indef或ifndef或define

D.ifdef或ifndef或if

58.若有以下说明和语句:intc[4][5],(*p)[5];p=C;能够正确引用c数组元素的是______。

A.p+1B.*(p+1)C.*(p+1)+3D.*(p[0]+2)

59.以下程序的输出结果是______。intf(){staticinti=0;ints=1;s+=i;i++;returns;}main(){inti,a=0;for(i=0;i<5;i++)a+=f():printf("%d\n",a);}

A.20B.24C.25D.15

60.若有说明:intn=2,*p=&n,*q=p;,则以下非法的赋值语句是

A.p=q;B.*p=*q;C.n=*q;D.p=n;

四、选择题(20题)61.有以下程序:

#include<stdio.h>

intf(intx):

main

{intn=1,m;

m=f(f(f(n)));printf("%d\n",m);

}

intf(intx)

{returnx*2;)

程序运行后的输出结果是()。

A.1B.2C.4D.8

62.

63.

64.

65.以下程序的输出结果是______。#include<stdio.h>#defineFUDGE(y)2.84+y#definePR(a)printf("%d",(int)(a))#definePRINT1(a)PR(a);putchar('\n')main(){intx=2;PRINT1(FUDGE(5)*x);}

A.11B.12C.13D.15

66.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是()。

A.提高耦合性降低内聚性有利于提高模块的独立性

B.降低耦合性提高内聚性有利于提高模块的独立性

C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度

D.内聚性是指模块间互相连接的紧密程度

67.

68.下面程序的输出结果是()。

#include<stdio.h>

main()

{inta[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};

inti,j,n;

n=9;

i=n/5;

j=n-i*5-1;

printf("a[%d][%d]=%d\n",i,j,a[i][j]);

}

执行后输出结果是()。A.A.a[1][3]=6

B.a[1][3]=-3

C.a[1][3]=2

D.不确定

69.有以下程序:

main

{chara='a',b;

printf("%c,",++a);

printf("%c\n",b=a++):

)

程序运行后的输出结果是()。A.A.b,bB.b,cC.a,bD.a,c

70.设有表示学生选课的三张表,学生s(学号,姓名,性别,年龄,身份证号),课程c(课号,课名),选课SC(学号,课号,成绩),则表sc的关键字(键或码)为()。

A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩

71.设“intx=2,y=1;”,则表达式(!x||Y--)的值是()。

A.0B.1C.2D.-1

72.下列不可作为C语言赋值语句的是()。

A.x=3,y=5B.a=b=6C.i--D.y=6

73.

74.

75.

76.有以下程序:

程序运行后的输出结果是()。

A.7B.5C.3D.9

77.(50)数据库概念设计的过程中,视图设计一般有三种设计次序,以下各项中不对的是()

A.自顶向下

B.由底向上

C.由内向外

D.由整体到局部

78.有如下程序段

#include"stdio.h"

main()

{intk[10];

intj;

for(j=0;j<10;j++)

scanf("%d",&k[j]);

for(j=9;j>=0;j--)

printf("%d",k[j]);}

则程序段实现的功能是

A.输入10个数据的顺序输入并输出

B.输入10个数据的逆序存放

C.输入10个数据的逆序输出

D.以上叙述均错误

79.已知数据表A中每个元素距其最终位置不远,为了节省时间,应采用的算法是()。

A.堆排序B.直接插入排序C.快速排序D.直接选择排序

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:从字符串str中,删除所有大写字母'F'。

请修改程序中的错误,使它能得到正确结果。

注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

试题程序:

六、程序设计题(1题)82.请编写—个函数,用来删除字符串中的所有空格。例如,输入asdafaaz67,则输出为asdafaaz67。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:

参考答案

1.C在本题中,程序段首先定义了字符型指针变量p,并使其指向一个字符串,然后将指针变量p加3,即使其指向字符串的第四个元素。然后执行输出语句,通过输出语句的输出格式我们可以知道,最后输出的是一个十进制数的整型数值,其输出列表为strlen(strcpy(P,″ABCD″))。这就要求我们了解strlen函数和strcpy函数的作用。

strcpy的调用格式是:strcpy(目的地址,源地址),其功能是把源地址的字符串复制到目的地址中,这种复制将覆盖原来的字符串。strcat函数的功能是将源地址的字符串复制到目的地址字符串的后面。

strlen的调用格式是:strlen(字符串地址),其功能是返回字符串中字符的个数。

那么程序中执行strcpy(P,″ABCD″)后指针变量p所指向的字符串为“ABCD”,该字符串中字符的个数为4,那么执行strlen后,程序最终输出的结果是4。因此本题正确的答案是C。

2.C

3.C

4.A

5.D解析:如果是指针型变量或数组名,则变量前不加地址符号&,所以选项A的说法有误。必须有地址列表项才能实现正确输入,所以选项B的说法有误。在输入数据时,不可以指定实型数据的精度,所以选项C的说法有误。只有选项D的说法正确。

6.DD)【解析】数据库管理员(DataBaseAdministrator,DBA)是指对数据库的规划、设计、维护、监视等的人员,其主要工作如下:数据库设计。DBA的主要任务之一是数据库设计,具体地说是进行数据模式的设计;数据库维护。DBA必须对数据库中的数据安全性、完整性、并发控制及系统恢复、数据定期转储等进行实施与维护;改善系统性能,提高系统效率。DBA必须随时监视数据库的运行状态,不断调整内部结构,使系统保持最佳状态与效率。

7.BB选项输出的格式为%d,即整型格式,所以输出字符‘A’的ASCII值65,而不是字母A。因为大写字母比其对应的小写字母的ASCII值小32,所以A选项正确。字符‘A’的ASCII值是65,以%c格式输出可以输出字母A,所以C选项正确。因为字符‘A’的ASCII值比字符‘B’的小1,所以D选项正确。故本题答案为B选项。

8.A题干中,“x++&&y++”属于逻辑与表达式。仅当“x++”和“y++”的结果为真,整个逻辑表达式的结果才为真,否则整个表达式的结果为假。当“x++”的结果为0时,“y”就会被短路,即不再执行“y++”表达式,整个表达式的结果为假。所以当x的值为0时,“x”的结果也是0,“y”操作被“短路”,y值不变。故本题答案为A选项。

9.B解析:第1个循环对数组a进行赋值:第2个循环对数组p进行赋值;第3个循环对k进行累加,k的初值等于5,第1次循环,k=k+p[0]*2=5+0*2=5,第2次循环,k=k+p[1]*2=5+2*2=9,第3次循环,k=k+p[2]*2=9+6*2=21并输出。

10.D

11.A本题考查带参数的宏定义。第一次函数调用求S的值,x=a+1,所以X*X*X应写成a+1*a+1*a+1,没有括号优先级,结果为l0,第二次函数调用x*X*X可写成(a+1)*(a+1)*(a+1),所以结果为43=64。

12.C解析:C语言的语法规定:else子句总是与前面最近的不带else的if相结合,与书写格式无关。所以选项C)为正确答案。

13.C

14.D一个客户可以在多家银行办理业务,一家银行也有多个客户办理业务,因此,实体客户和实体银行之间的联系是多对多。本题选择D选项。

15.D【解析】算法的空间复杂度是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。如果额外空间量相对于问题规模来说是常数,则称该算法是原地工作的。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。

16.D解析:本题考查数据结构中队列的基本知识。队列是一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出的特性。在队列中,允许插入元素的一端叫做队尾,允许删除的一端则称为队头。这与日常生活中的排队是一致的,最早进入队列的人最早离开,新来的人总是加入到队尾。因此,本题中只有选项D的说法是正确的。

17.D解析:联合体的所有成员共占同一段内存,所以联合体变量的长度与它的最长成员所占长度…致,本题中float所占内存字节数为4,而\u3000int类型在TurboC\u30002.0中是占2字节、在VisualC++6.0中占4字节,所以int类型所占内存字节数不会超过float,那demo就与成员d2所占字节数是相同的,选项A的说法正确。联合体的所有成员的首地址都是相同的,和联合体变量的地址一致。故选项B和C都是正确的。由于int类型数据和float类型数据在内存中的存放格式是不一样的,所以给d1赋99后,d2中不会得到99.0这个值。故选项D不正确,答案应该选择D。

18.B二叉树的前序序列为ABCD,由于前序遍历首先访问根节点,可以确定该二叉树的根节点是A。再由中序序列为BCDA,可知以A为根节点的该二叉树只存在左子树,不存在右子树,故后序序列为DCBA。本题答案为B选项。

19.B

20.D“max=MIN;”语句应放在for循环之前,否则每次循环时都重新赋值,值没有变化。

21.a[i]>a[j]a[i]>a[j]解析:本题中的嵌套的循环结构用在了数组元素的排序上。本题需要注意的一点是:由于题目只要求将下标值为偶数的元素从小到大排序,所以内外层for循环的条件变量变更条件都是+=2。最后通过条件a[i]>a[j]对元素大小进行判断并交换。

22.1616解析:函数运算不改变数据类型,所以结果也是double型,fabs(x)是对x取绝对值,pow(y,fabs(x))是y的labs(x)次幂,即2.04。0=16.000000(注意;结果为double型)。

23.#include"stdio.h"#include'stdio.h'解析:使用putchar和getchar函数时,必须在程序的开头出现包含头文件#include'stdio.h'的命令行。putchar的函数调用形式为:putchar(字符变量或字符常量);getchar函数的调用形式为:变量=getchar();getchar后的一对圆括号内没有参数,但这一对圆括号不可少。

24.1010解析:表达式0<x<20,首先计算0<x,其值为1,再计算1<20,其值为1,输出1;表达式0<x&&x<20,0<x为1,x<20为0,再计算1&&0,其值为0,输出0。所以输出结果为10。

25.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。

26.bcdefghabcdefgha解析:在本题定义的ss()函数中首先定义了一个指针p和一个字符变量t,然后让p指向参数指针s的下一个位置s+1,并让t保存s位置的字符.然后使用一个while循环将p指向的内容赋给它前面一个位置,即将参数s所指的字符串从第2个字符开始整体往前移动一位。循环结束时,p指向原s串的结束标志处,所以让*(p-1)=t;即是将原s串的第1个字符复制到s串的最后一个位置。整个函数实现的是让一个字符串循环左移一位。故主函数中最后输出的字符串是'bcdefgha'。

27.252137252137解析:本题中先定义了整型变量a、b和c,然后分别给赋值a为25,b为八进制的025,c为十六进制0x25。然后调用pruntf()函数将a、b和c分别用十进制输出,且中间用空格隔开,八进制025转换为十进制的值为21,十六进制的0x25转换为十进制的值为37,故最后的输出结果为252137。

28.585858585858解析:在程序中,执行scanf()语句后,a被赋值为58。接着执行第一个if语句,因为,a=58>50,执行第一个if语句后面的输出语句,输出58;接着执行第二个if语句,因为,a=58>40,执行第二个if语句后面的输出语句,输出58;接着执行第三个if语句,因为,a=58>30,执行第三个if语句后面的输出语句,输出58,所以最后的输出为585858。

29.前件前件

30.i<10i%3!=0i<10\r\ni%3!=0解析:本题要求输出100以内能被3整除且个位数为6的所有整数,程序中j=i*10+6;语句是求个位数为6的整数,由此可得出程序的循环次数为i<10。然后通过if语句判断整数是否能被3整除,若不能则继续下一次循环,若能则输出该整数,所以逻辑表达式为j%3!=0。

31.完善性软件维护活动包括以下几类:改正性维护,适应性维护、完善性维护和预防性维护,完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。

32.(y%4==0)&&(y%100!=0)||(y%400==0)(y%4==0)&&(y%100!=0)||(y%400==0)解析:考查逻辑表达。年号能被4整除(y%4==0)但不能被100整除(y%100!=0),两者是与的关系,年号能被400整除即y%400==0,与前两项是或的关系。

33.软件工具软件工具解析:软件开发环境是各类软件开发工具的集合体。

34.QTHRGQTHRG解析:strcmp(t,s)函数用来比较t和s所指字符串的大小,若t>s,则函数值大于0;若t=s,则函数值等于0:若t<s,则函数值小于0。strcpy(t,s)函数的功能是把字符数组s所指字符串的内容复制到字符数组t所指的存储空间中。本题中,t[10]='CDEF'。第一次循环,s[10]='BADEF',if语句的控制条件strcmp(t,s)<0不成立,接着执行第二次循环.s='QTHRG',if语句的控制条件strcmp(t,s)<0成立,执行下列的语句,将字符数组s所指字符串的内容复制到字符数组t所指的存储空间中,然后输出字符数组t。

35.字符串字符串解析:本题考查字符替换格式:#define标识符字符串。

36.cc解析:本题关键在考生是不是了解宏的基本运用,在使用宏的时候明显少了—个实参。在定义宏的时候变量z是用来做中间变量的,题目中缺的变量就是一个中间变量c。

37.8888解析:C语言规定,以0开头的整型常量为八进制。另外,在primf()函数中,%X表示以十六进制无符号形式输出一个整数,且十六进制中的ABCDEF为大写字母。本题的输出应该是八进制210的十六进制形式。将八进制转换为十六进制,可以先将其转换为二进制。因为1位八进制表示3位二进制,4位二进制表示1位十六进制。(210)8=(10001000)2=(88)16,故本题输出为880

38.functionrunningresultis:9.0

39.x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;解析:要删除结点y,只需让结点x的指针域指向y结点的指针域所指向的后续结点就可,因此把结点z的地址赋给x的指针域就可以了,即让结点x的指针域指向结点z。而结点z的地址保存在结点y的指针域中,因此只需把结点y的指针域赋值给结点x的指针域即可。

40.3232解析:二叉树的一个性质是,在二叉树的第k层上,最多有2k-1(k≥1)个结点。由此,26-1=32.所以答案为32。

41.A解析:程序在定义时,以十进制形式为m赋初值,以八进制的形式为n赋初值。输出的时候m以十进制形式输出,n以八进制形式输出,因此输出的结果为32767和32767。所以,A选项为所选。

42.C解析:在C语言中,以“\\”开头的字符均为转义字符,其中“\\”后可跟1~3位八进制熟或在“\\”后跟字母x及1~2位十六进制数,以此来代表—个特定的字符。

43.C

44.B解析:主函数中for循环执行两次,i=1和i=2。调用函数f(1),返回值为1,j=1;调用函数f(2),计算表达式f(n-1)+1的值时递归调用f(1),返回值为2,j=3。所以B为所选。

45.B解析:本题考查的知识点是结构体数组元素的成员元素的引用。程序中首先定义了一个结构体,其成员为一字符数组和一浮点型数组。在main()首先定义了一个结构体数组并初始化.接下来在for循环中遍历了结构体数组中的第一个元素中数组成员即{'20021',90,95,85'}循环结果为90+95+85=270最后sum为270,又输出格式为“%6.2f\\n”要求保留两位小数故最后输出为270.00。所以4个选项中B正确。

46.B解析:因为a<b成立,所以条件表达式a<b?b:a的值等于b的值等于2,因此变量k的值等于2。又因为k=2>c=3不成立,所以条件表达式k>c?c:k的值等于k的值等于2。把条件表达式k>c?c:k的值赋给变量k,因而变量k的值等于2。因此,选项B)为正确答案。

47.A解析:带参数的宏定义命令行形式如下:#define宏名(形参表)替换文本。首先进行M的宏替换,之后再进行N的宏替换,替换后的表达式为(a)*(b)/(c)。

48.D解析:每个C程序有且只有一个主函数(main),且程序必须从main()函数开始执行。别外main()函数可以放在程序中的任意位置。

49.D解析:n!=n*(n-1)*……*2*1,由于选项A中f的初值为0,所以循环n次后,f值依然为0,故选项A错误:选项B中循环的终止条件是“i<n”,即只执行i-1次循环,得到的f值为(n-1)*……*2*1的值,故选项B错误;选项C中,当n>1时,由于初值“i=n”是符合条件“i>1”的,且增量为+1,故循环中永远不会出现不满足条件“i>1”的值,所以出现死循环。

50.A解析:sdtrcat(str1,str2)合并字符串函数的作用是把str2所指字符串的内容连接到str1字符串的后面,自动删去str1原来串中的'\\0'。为了进行这项操作,要求str1所指的字符串后面有足够的空间来容纳str2所指字符串中的内容。函数值为str1所指第一个字符的地址。

51.A解析:本题考查求字符串的长度。数组str初始化的长度是7,使用strcpy函数将新字符串赋给str后,strlen函数返回的是新字符串的字符个数5。

52.D解析:本题中,arge表示参数的个数,应为3。argv是一个指向字符串的指针数组,指针数组argv中的元素argv[0]指向字符串“PROG”,元素argv[1]指向字符串“ABCDEFGH”,argv[2]指向字符串“IJKL”。在while循环条件中,先进行自减运算,再执行相应的printf语句。

53.D解析:本题考查switch语句,首先,x=1符合条件case1,执行switch(y)语句。y=0符合case0语句,执行a抖并跳出switch(y)语句,此时a=1。因为case1语句后面没有break语句,所以向后执行case2语句,执行a++,b++,然后跳出switch(x),得a=2,b=1。

54.C解析:在fun((a++,b++,a+b),c++)函数中先计算括号内的“(a++,b++,a+b)”逗号运算符,整个逗号表达式最后的值为5;接下来调用fun()函数,此时原句变为fun(5,c++)。运算c++表示在使用完c后再将c的值加1,函数的返回值为8。

55.C队列是指允许在一端进行插入、而在另一端进行删除的线性表,选项A和选项B错误。允许插入的一端称为队尾,允许删除的一端称为队头。在队列中,最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删除。所以,队列又称为“先进先出”或“后进后出”的线性表,它体现了“先来先服务”的原则,选项C正确,选项D错误。

56.A解析:正确输入各变量的值,输入的格式应该和输入语句中的“格式控制”字符串的格式对应一致。

57.D

58.D解析:p是指向一个一维数组的指针,选项A、B和C中都是地址,而非数组元素。选项D正确。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论