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

下载本文档

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

文档简介

2021-2022年江苏省淮安市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下列程序的输出结果是()。main{inta,b,d=25;a=d/10%9;b=a&&(一1);printf("%d,%d\n",a,b);}A.6,1B.2,1C.6,0D.2,0

2.计算机系统的组成是______。

A.主机、外设B.运算器、控制器C.硬件系统和软件系统D.CPU、内存储器

3.下列关于线性链表的叙述中,正确的是()A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致

B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续

C.进行出入与删除时,不需要移动表中的元素

D.以上三种说法都不催

4.在下列几种排序方法中,空间复杂度最高的是()

A.归并排序B.快速排序C.插入排序D.选择排序

5.若有定义语句“char*s1=“OK”,*s2=“ok”;”,以下选项中,能够输出“OK”的语句是()。

A.if(strcmp(s1,s2)!=0)puts(s2);

B.if(strcmp(s1,s2)!=0)puts(s1);

C.if(strcmp(s1,s2)==1)puts(s1);

D.if(strcmp(s1,s2)==0)puts(s1);

6.有以下程序:#include<stdio.h>main(){inta=7;while(a--);print[("%d\n",a);}程序运行后的输出结果是()。A.-1B.0C.1D.7

7.以下是一个对数组A(含有n个数值元素)进行排序的算法伪代码,请问它的平均时间复杂度是多少()

A.O(n)B.O(n^2)C.O(1)D.O(log(n))

8.若有说明chars1[30]="Thecity",s2[]="isbeautiful";,则在使用函数strcat(s1,s2)后,结果是()。

A.s1的内容更新为Thecityisbeautiful\0

B.s1的内容更新为isbeaut\0

C.s1的内容更新为Thecity\0isbeautiful\0

D.s1的内容更新为Thecityisbeautiful\0

9.已知函数的调用形式为fread(buf,size,count,fp),参数buf的含义是

A.一个整型变量,代表要读入的数据项总数

B.一个文件指针,指向要读的文件

C.一个指针;指向要读入数据的存放地址

D.一个存储区,存放要读的数据项

10.顺序查找法适合于存储结构为()的线性表。

A.散列存储B.顺序存储或链式存储C.压缩存储D.索引存储

11.下面算法的时间复杂度为()A.O(1)B.O(n)C.O(n*n)D.O(n!)

12.可用作C语言用户标识符的一组标识符是()。A.voiddefine+WORDB.a3_b3_123YNC.for-abcCaseD.2aDOsizeof

13.两个或两个以上模块之间联系的紧密程度称为()。

A.耦合性B.内聚性C.复杂性D.数据传输特性

14.

15.以下叙述中正确的是_____。A.用C程序实现的算法必须要有输入和输出操作

B.用C程序实现的算法可以没有输出但必须要输入

C.用C程序实现的算法可以没有输入但必须要有输出

D.用C程序实现的算法可以既没有输入也没有输出

16.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printS(”%d,”,k);k=fun(j,m);printf(”%d\n”,k);)执行后的输出结果是()。A.5,5B.5,11C.11,11D.11,5

17.下列排序算法中,其时间复杂度和记录的初始排列无关的是()

A.插入排序B.堆排序C.快速排序D.冒泡排序

18.下述哪一条是顺序存储结构的优点()。

A.插入运算方便B.可方便地用于各种逻辑结构的存储表示C.存储密度大D.删除运算方便

19.对于如图所示二叉树采用中根遍历,正确的遍历序列应为()A.ABCDEFB.ABECDFC.CDFBEAD.CBDAEF

20.对线性表进行折半查找时,要求线性表必须()。A.A.以顺序方式存储

B.以顺序方式存储,且结点按关键字有序排列

C.以链式方式存储

D.以链式方式存储,且结点按关键字有序排列

二、2.填空题(20题)21.数据库管理系统是位于用户与______之间的软件系统。

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

23.以下程序的运行结果是【】。

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:

case2:return1;}

return(fib(g-1)+fib(g-2));}

main()

{longk;

k=fib(5);

printf("k=%5ld\n",k);}

24.下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是【】。

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

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

printf("%\n",p+9);

}

25.以下程序的功能是:删去一维数组中所有相同的数,使相同的数只剩一个。数组中的数已按由小到大的顺序排列,函数fun返回删除后数组中数据的个数。

例如,若一维数组中的数据是:

2223445666677899101010

删除后,数组中的内容应该是:2345678910。请填空。

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

for(i=1;i<n;i++)

if(a[j-1]【】a[i])a[j++]=a[i];

【】;

}

main()

{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;

printf("Theoriginaldata:\n");

for(i=0;i<n;i++)printf("%3d",a[i]);

n=fun(a,n);

printf("\nThedataafterdeleted:\n");

for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");

}

26.有以下程序

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

执行后输出结果是______。

27.以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

请填空。

#include"math.h"

doublefun(doublex){return(x*x-2*x+6);}

main()

{doublex,y1,y2;

printf("Enterx:");scanf("%lf",&x);

y1=fun(【】);

y2=fun(【】);

printf("y1=%lf,y2=%lf\n",y1,y2);

}

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

main()

{intm=011,n=11;

printf("%d%d\n",++m,n++);

}

29.以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。

main()

{intx[10],a[9],i;

for(i=0;i<10;i++)scanf("%d",&x[i]);

for([11];i<10;i++)

a[i-1]=x[i]+[12];

for(i=0;i<9;i++)printf("%d",a[i]);

printf("");

}

30.下列循环的循环次数是______。

intk=2;

while(k=0)

printf["%d",k);

k--;

printf("\n");

31.有以下程序

intfa(intx){returnx*x;}

intfb(intx){returnx*x*x;}

intf(ing(*f1)(),int(*f2)(),intx)

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2),printf("%d\n",i);}

程序运行后,输出结果是【】。

32.数据结构分为逻辑结构与存储结构,带链的栈属于【】。

33.若a的值为1,则表达式!a‖++a的值是______。

34.常用的软件结构设计工具是结构图(SC),也称程序结构图。其中,用矩形表示______,用带空心圆的箭头表示传递的是数据。

35.数据库系统在其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。

36.有以下程序:

voidswap1(intc[])

{intt;

t=c[0];c[0]=c[1];c[1]=t;

}

voidswap2(intc0,intc1)

{intt;

t=c0;c0=c1;c1=t;

}

main()

{inta[2]={3,5},b[2]={3,5};

swaplA);swap2(b[0],b[1]);

printf("%d,%d,%d,%d\n",a[0],a[1],b[0],b[1]);

}

其输出结果是【】。

37.下列程序段的运行结果是______。

intx=0,y=0;

while(x<15)y++,x+=++y;

printf("%d,%d",y,x);

38.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和,请填空。

#include<stdio,h>

main()

inti,a[20],sum,count;

sum=count=0;

for(i=0;i<20;i++)scanf("%d",【】);

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

{if(a[i]>0)

{count++;

sum+=【】;

}

prinff("sum=%d,count=%d\n",sum,count);

}

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

structNODE

{intk;

structNODE*link;

};

main()

{structNODEm[5],*p=m,*q=m+4;

inti=0;

while(p!=q){

p->k=++i;p++;

q->k=i++;q--;

}

q->k=i;

for(i=0;i<5;i++)printf("%d",m[i].k);

printf("\n");

}

40.按"先进后出"原则组织数据的数据结构是【】。

三、1.选择题(20题)41.下面程序的输出结果是______。unsignedfun(unsignednum){unsignedk=1;do{k*=num%10;num/=10;}while(num);return(k);}main(){unsignedn=26;printf("%d\n",fun(n));}

A.0B.4C.12D.无限次循环

42.以下程序执行后x的值是main(){intx,y=252,i=386,*m=&y,*z=&i;x=(z==y);printf("%d",x);}

A.252B.1C.0D.运行时出错,x无定值

43.若有定义:inta[2][3];,以下选项中对a数组元素正确引用的是A.a[2][!1]B.a[2][3]C.a[0][3]D.a[1>2][!1]

44.下列程序执行后输出的结果是______。intd=l;fun(intp){intd=5;d+=p++;printf("%d,",d);}main(){inta=3;fun(a);d+=a++;printf("%d\n",d);}

A.8,12B.9,13C.8,4D.9,5

45.X、Y、Z被定义为int型变量,若从键盘给X、Y、Z输入数据,正确的输入语句是______。

A.INPUTX,Y,Z;

B.scanf("%d%d%d",&X,&Y,&Z);

C.scanf("%d%d%d",X,Y,Z);

D.read("%d%d%d",&X,&Y,&Z);

46.有以下程序main(){inta,b,d=25;a=d/10%9;b=a&&(-1)printf("%d,%d\n",a,b);}程序运行后的输出结果是______。

A.6,1B.2,1C.6,0D.2,0

47.下面不属于软件工程的3个要素的是______。

A.工具B.过程C.方法D.环境

48.若有以下调用语句,则不正确的fun函数的首部是______。main(){……inta[50],n;fun(n,&a[9]);……}

A.voidfun(intm,intx[])

B.voidfun(kits,kith[41])

C.voidfun(kitp,kit*s)

D.voidfun(intn,inta)

49.下面程序的输出结果是()main(){inta[10]={l,2,3,4,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}

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

50.在软件生存周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是()。

A.概要设计B.详细设计C.可行性分析D.需求分析

51.结构化程序设计的主要特点是______。

A.模块化B.每个控制结构具有封装性C.每个控制结构具有独立性D.每个控制结构只有一个入口和一个出口

52.以下函数值的类型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不确定C.voidD.float

53.有一函数以下程序段中不能根据x值正确计算出y值的是

A.if(x>0)y=1;elseif(x==0)y=0;elsey=-1;

B.y=0;if(x>0)y=1;elseif(x<0)y=-l;

C.y=0;if(x>=0);if(x>0)y=1;elsey=-1;

D.if(x>=0)if(x>0)y=1;elsey=0;elsey=-l;

54.C语言提供的合法关键字是______。

A.swicthB.chanC.CaseD.default

55.下列用于printf函数的控制字符常量中,代表“竖向跳格”的转义字符常量是()。

A.\bB.\tC.\vD.\f

56.以下程序的运行结果是()。#include<stdio.h>main(){st,uctdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}

A.6B.8C.10D.12

57.设有定义:int(*ptr)();则以下叙述中正确的是()

A.ptr是指向一维数组的指针变量

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int数据

D.prt是一个函数名,该函数的返回值是指向int型数据的指针

58.有如下程序main(){charch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}该程序的输出结果是

A.69825B.63825C.6385D.693825

59.以下关于C语言的叙述中正确的是()。

A.预处理命令通常位于函数体外面,但也可以位于函数体中间

B.C语言中的变量定义须在其他语句之前

C.在C语言程序的书写中,一个语句必须单占一行

D.一个C语言源程序可以由一个或多个源文件组成,每个源文件可由自己的main函数

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

A.ABCDEFGB.IJHLC.ABCDEFGHIJKLD.IJKLABCDEFGH

四、选择题(20题)61.以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。

main()

/*Beginning*/

{intr;floats;

scanf("%d",&r);

s=*PI*r*r;printf("s=%f\n",s);

}

若想纠正错误,应该()。

A)更改注释语句书写位置B)存放圆半径的变量r应该定义为整型

C)输出语句中不能加“s=”D)给计算面积的PI变量赋值

62.在软件设计中不使用的工具是()。

A.系统结构图

B.程序流程图

C.PAD图

D.数据流图(DFD图)

63.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。A.调用语句B.命令C.口令D.消息

64.若程序有宏定义:#defineNl00,则以下叙述中正确的是()。

A.宏定义中定义了标识符N的值为整数100

B.在编译程序对C源程序进行预处理时用l00替换标识符N

C.对C源程序进行编译时用100替换标识符N

D.在运行时用100替换标识符N

65.有以下函数定义:

voidfun(intn,doublex){……}

若以下选项中的变量都已正确定义并赋值,则对函数fun正确调用的语句是

A.fun(inty,doublem);B.k=fun(10,12.5);

C.fun(x,n);D.voidfun(n,x);

66.有以下程序

67.(12)下列叙述中正确的是______。

A.线性表是线性结构

B.栈与队列是非线性结构

C.线性链表是非线性结构

D.二叉树是线性结构

68.利用E-R模型进行数据库的概念设计,可以分成3步:首先设计局部E-R模型,然后把各个局部E-R模型综合成一个全局的模型,最后对全局E-R模型进行(),得到最终的E-R模型。

A.简化B.结构化C.最小化D.优化

69.有以下程序:

main()

{char*p[]={"3697","2584"};

inti,j;longnum=0;

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

{j=0;

while(p[i][j]!=’\0’)

{if((p[i][j]-’0’)%2==0)num=10*num+p[i][j]-’0’;

j+=2;

}

}

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

}

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

A.35B.37

C.39D.28

70.有以下程序:

#include<stdiO.h>

main()

{FILE*fp;

intk,n,i,a[6]={1,2,3,4,5,6};

fp=fopen("d2.dat","w");

for(i=0;i<6;i++)fprintf(fp,"%d\n",a[i]);

fclose(fp);

fp(i=0;i<3;i++)fscanf(fp,"%d%d",&k,&n);

fclose(fp);

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

}

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

A.1,2

B.3,4

C.5,6

D.123,456

71.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp),的返回值为()。

A.0B.\0C.非0值D.NULL

72.

73.有以下程序:

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

A.500B.401C.503D.1404

74.以下不能定义为用户标识符的是()

A.MainB._0C._intD.sizeof

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

A.自顶向下

B.由底向上

C.由内向外

D.由整体到局部

76.有三个关系R、S和t如下:由关系R和s通过运算得到关系T,则所使用的运算为()。

A.笛卡儿积B.交C.并D.自然连接

77.某二叉树共有7个结点,其中叶子结点只有l个,则该二叉树的深度为(假设根结点在第1层)()。

A.3B.4C.6D.7

78.在“文件包含,预处理语句的使用形式中,当#include后面的文件名用(双引号)括时,寻找被包含文件的方式是()。

A.直接按系统设定的标准方式搜索目录

B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索

C.仅仅搜索源程序所在目录

D.仅仅搜索当前目录

79.执行下面的程序后,a的值为()。main{inta,b;for(a=1,b=1;a<=10;a++){if(b%3==l){b+=3;continue;}b-=5;}}A.7B.8C.9D.10

80.

五、程序改错题(1题)81.下列给定程序中函数proc()的功能是:将长整型数中为偶数的数依次逆向取出,构成一个新数放在t中。高位在低位,低位在高位。例如,当s中的数为12345678时,则t中的数为8642。

请修改函数proc()中的错误,使它能得出正确的结果。

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

试题程序:

六、程序设计题(1题)82.假定输入的字符串中只包含字母和*号。请编写函数proc,它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。例如,若字符串中的内容为****a*bc*def*g****,删除后,字符串中的内容则应当是a*bc*def*g****。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。试题程序:#include<stdio.h=:{>#include<conio.h>woidproc(char*str){}voidmaincharstr[81];printf("Enterastring:\n");gets(str);proc(str):printf("Thestringafterdeleted:\n");puts(str);}

参考答案

1.B当逻辑运算符“&&”两边的值是非零时,逻辑表达式的值为真(即为1)。所以b=2&&(-1)=1,2%9=2,故a=2,故先算a/10=25/10=2。

2.C

3.C

试题2分析

结点的存储顺序和逻辑顺序不一定一致,存储空间也不一定连续。插入和删除元素的时候,不需要移动表中的元素。

试题2答案

C

4.A

5.B“strcmp(S1,S2)”是字符串比较函数,比较规则是两个字符串自左向右逐个字符相比较(按照ASCII值大小)。因为“OK”<“ok”,所以“strcmp(S1,S2)”为负值。故本题答案为B选项。

6.A此题考查a--和--a之间的区别,当while(a--)为真循环执行,a--是执行再减1,所以答案选择A。

7.B

8.D解析:该函数用来使两个字符串连接成为一个字符串。strcat(str1,str2)将str2中的字符连接到str1的字符后面,并在最后加一个“\\0”。连接后新的字符串存放在strl中。注意:用于字符串处理的函数。

9.C解析:这是一道考查fread函数的题。buf是一个指针,fread是读入数据的存放地址;fwrite是输出数据的地址(以上指的是起始地址)。

10.B

11.B

12.B

13.A解析:耦合性是模块间互相连接的紧密程度的度量,取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。

[知识拓展]模块的独立程序是评价设计好坏的一个重要标准,衡量软件的模块独立性有两个定性的度量标准。其中内聚性是指一个模块内部各个元素间彼此结合的紧密程度的度最,内聚性是从功能角度来度量模块内的联系;耦合性是模块间互相连接的紧密程度的度量,耦合性从整体的角度来度量模块间的联系。

14.C

15.C解析:算法的特性中包括“有零个或多个输入”及“有一个或多个输出”这两个特性。一个算法得到的结果就是算法的输出,没有输出的算法是没有意义的,所以一千算法必须至少有一个输出。

16.B子函数fun(intx,inty),将变量m和i声明为局部静态变量,因此第l次调用主函数后,局部静态变量m和i的值为5和3,第l次函数调用结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为5和3,即在执行“i+=m+1”时,i的值为9,因此最终m的值为11。

17.B

18.C

19.D

20.B

21.操作系统操作系统解析:数据库管理系统是帮助用户创建和管理数据库的应用程序的集合。因此,数据库管理系统需要操作系统的支持,为用户提供服务。

22.n+1n+1解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为0的结点多一个。

23.k=5k=5解析:本题主要考查了函数的递归调用方法。g=0或\ue008g=1\ue009或g=2是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。

24.1a61a6解析:对于指针变量的运算,就是对地址的运算。本题中由于指针指向的是整型变量,所以,使指针变量移动9个位置也就是移动18个字节。注意,本题是以十六进制输出的。

25.!=returnj!=returnj解析:函数fun中,变量j用于控制删除后剩下的数中的下标,i用于搜索原数组中的元素。j始终是新数组已有元素中最后一个元素的下一个元素的下标,所以订语句中的条件是a[j-1]!=a[i],其中a[j-1]就是新数组中的最后一个元素,若条件成立则表示出现了不同的值,a[i]要添加到新数组中。该算法只能用于数组已排序的题目中。

26.00解析:本题中的for循环共执行了6次,每执行一次将相应i的值相乘,最后当i=-1时停止循环.该for循环执行完后t的值为5*4*3*2*1*0=0,故最后输出I的值为0。

27.x+8sin(x)x+8,sin(x)解析:考查考生对函数调用相关知识的了解。用x+8代替函数fun(doublex)中形式参数x;用sin(x)代替函数fun(doublex)中形式参数x。

28.10111011解析:前缀自增运算时,表达式的值和变量自增之后的值相同;后缀自增运算时,表达式的值为变量自增之前的值。所以,本题程序输出的两个结果分别是m+1和n的值。而m在初始化时使用的是八进制常量011,转换为十进制为9。故输出结果是1011。

29.i=1x[i-1]i=1\r\nx[i-1]解析:对于10个数,相邻的两个数相加取和,总共要进行9次加法运算,所以空11处应填入i=1。相邻的两个数相加取和,放在数组a中,x[0]与x[1]的和存放在a[0]中,所以空12处应填入x[i-1]。

30.00解析:解答本题需要注意表达式“k=0”,它是赋值表达式而不是关系表达式,不论k为何值,表达式k=0总会使k为0,所以不能进入循环。

31.44解析:在主函数中调用函数f,函数f有三个参数,形参f1与f2分别是两个指向函数的指针。在f中执行f2(x)-f1(x),实际上是执行了fb()2)-fa(2),故执行i=(fa,fb,2)卮i的值为23-22=4。

32.存储结构存储结构解析:带链的栈属于栈的链式存储结构。

33.11解析:逻辑运算中,非1即0,非0即1,!a=0,++a为逻辑1,所以0和1相或结果为1。

34.模块模块解析:矩形表示的是模块,箭头表示的是模块间的调用关系。用带实心圆的箭头表示传递的是控制信息,用带空心圆的箭头表示传递的是数据。

35.外模式外模式解析:外模式由概念模式推导而出,给出了每个用户的局部数据描述,即数据视图。

36.53355335解析:函数swap1的形参是数组,故形参的改变能够影响实参,所以执行完swap1(a)后,a[0]=5、a[1]=3;函数swap2的形参是简单变量,故形参的改变不能够影响实参,所以执行完swap2(b)后,b[0]=3、b[1]=5;正确答案为5335。

37.8208,20解析:本题考查while循环和++运算符的运用。x=0符合条件x<15,则执行y++,x+=++y后,y=1,x=0+2=2后y=2,符合条件继续循环,y=3,x=x+4=6后y=4,再循环y=5,x=x+6=6+6=12后,y=6,继续循环y=7,x=x+8=12+8-20,此时y=8。

38.&a[i]a[i]&a[i]\r\na[i]解析:scanf的格式为:scanf(格式控制,地址表列),因此,第一处应该填写地址,由于是循环输入,所以填&a[i]。依据题意第二处应该填写a[i],以实现sum=sum+a[i]的求和。

39.1343113431解析:初始化时,指针p指向m[0]的地址,指针q指向m[4]的地址,p!=q满足循环条件,执行循环语句,得到m[0].k=1,m[4].k=1,此时i=2,指针p指向m[1]的地址,指针q指向m[3]的地址,p!=q满足循环条件,执行循环语句,得到m[1].k=3,k=3,此时i=4,指针q指向m[2]的地址,p==q不满足循环条件,则退出循环,m[2].k=4。所以最后输出为13431。

40.栈栈解析:考查考生对栈和队列概念的掌握。按'先进后出'原则组织数据的数据结构是栈;按'先进先出'原则组织数据的数据结构是队列。

41.C解析:本题定义了一个fun函数,用于num求和,具体执行过程如下:

num=26:k=k*(num%10)=1*(26%10),所以k=6,num=num/10=2;

num=2:k=k*(num%10)=6*(2%10),所以k=12,num=num/10=0);

num=O:while条件不成立,所以返回k的值12。

42.C解析:指针变量m和z分别指向整型变量y和i,所以这两个指针变量中存储的地址是不同的。变量x接受的是一个关系运算的结果,因为两个地址是不同的,所以“z=y”的判断结果为0。注意:C语言中,逻辑值的表示方法。

43.D解析:a是一个2行3列的二维数组,行下标和列下标都是从0开始的,数组中的元素为a[0][0]、a[0][1]、a[0][2]、a[1][0]、a[1][1]、a[1][2],行下标最大值为1,列下标最大值为2,因此选项A、B、C都是错误的引用。计算选项D中数组元素的下标后得a[0][0],为正确的引用。

44.C解析:本题执行过程如下:首先调用fun函数,使得实参a的值3传递绐形参p,得到局部变量d=8,打印出局部变量d的值8返回主函数执行“d+=a++””,此处的d为全局变量,所以d=1+3=4(由于本题是值传递,所以在函数fun中对p值的改变并不能引起a的改变),故本题的输出是8,4。

45.B解析:scanf()函数要求将输入的数据存入变量所在的地址。选项A不是C语言中的输入语句,故选项A不正确;选项C中输入的是变量字符串而不是地址字符串,不满足scanf()函数要求将输入的数据存入变量所在的地址,故选项C不正确;选项D不是C语言中的输入语句,故选项D不正确:所以,4个选项中选项B符合题意。

46.B解析:本题主要考查的是C语言中的整除、求余以及逻辑值的概念。在C语言中,/号的两边如果都是整数的话,返回的结果也是整数,如果除不净则舍去小数部分。%是求余运算,它的运算对象只能是整型,运算结果是两数相除后所得的余数,当运算量为负数时,结果的符号与被除数相同。因此,执行语句a=d/10%9;后,a=25/10%9=2%9=2。C语言中没有专门的逻辑值,而是用整型值来代替。当整型值作逻辑值使用时,非零即表示“真”,零表示“假”,而逻辑值当整型值使用时,“真”等于1,“假”等于0。因此,执行语句b=a&&(-1);后b=2&&(-1)=“真”&&“真”=“真”=1。所以,4个选项中选项B符合题意。

47.D解析:软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制和管理。

48.D

49.A

50.D解析:在需求分析阶段中,根据可行性研究阶段所提交的文档,特别是从数据流图出发,对目标系统提出清晰、准确和具体的要求,即要明确系统必须做什么的问题。本题的正确答案为D。

51.D解析:按照结构化设计方法设计的程序具有以下特点:(1)程序易于理解、使用和维护,程序员采用结构化编程方法,便于控制、降低程序的复杂性,因此容易编写程序,便于验证程序的正确性。结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试,以确保程序的正确性。程序容易阅读并被人理解,便于用户使用和维护。(2)提高了编程工作的效率,降低了软件开发成本。由于结构化编程方法能够把错误控制到最低限度,因此能够减少调试和查错时间。结构化是由一些为数不多的基本结构模块组成,这些模块甚至可以由机器自动生成,从而极大地减轻了编程工作量。(3)结构化程序设计选用的每个控制结构只允许有一个入口和一个出口。

52.A解析:函数定义时如果数据类型默认,则默认为int。函数中如果有“retum(表达式):”语句,表达式的类型可能与函数的类型不一致,但它并不能改变函数的类型,实际情况是把表达式转换为函数值的类型作为返回值,因此本题的函数值类型是int。

53.C解析:本题考查的知识点是if语句的嵌套使用.首先检查订与else的配对,然后再分析各分支实现的功能.选项A描述的意思是:在x>=O情况下,则y为1,否则;在x=O时,y为0,剩下的x<0时,y为-1,满足本题中函数的要求;选项B描述的意思时:初始化y的值为0,在x>0时,给y重新赋值为1,否则,在x<0时,给y重新赋值为-1,满足本题中函数的要求;选项C描述的意思是:在x>0情况下,如果x>0,则y为1,否则即“c==0”时,y为-1:剩下的x<0时,y为0.可见答案C实现的结果不是给定的表达式。选项D中描述的意思是:在x>=0的情况下,如果x>=0,就给y赋值为1,否则就给y赋值为0,在不是x>=0的其他情况下,就给y赋值为-1,满足本题中函数的要求.所以4个选项中C为所选。

54.D

55.C本题考查C语言转义字符的含义。我们归类了常用的转义字符及其含义,如下,根据这些不难选出正确答案

转义字符的意义:\n回车换行、\t横向跳到下一制表位置、\v竖向跳格、\b退格、\r回车、\f走纸换页、\\反斜线符、“\”\′单引号符、\\ddd1~3位八进制数所代表的字符、\xhh1~2位十六进制数所代表的字符。

56.A解析:结构体变量的长度是其内部成员总长度之和,在本题中,structdate中包含year,month,day三个整型变量。通常一个整型变量占2个字节,因此,用sizeof求得该结构体变量的长度为6个字节。

57.C

58.C解析:该题稍微难一点。主要要搞清楚以下几点:①定义了一个指针数组char.p[2]后,程序中第一个循环for(i=0;i<2;i++)p[i]=ch[i];的作用,是使指针数组的p[0]元素(它本身是一个指针)指向了二维数组ch的第一行字符串,并使指针数组的p11)元素指向了二维数组ch的第二行字符串,这样,就使指针数组p和二维数组ch建立起了一种对应关系,以后对二维数组ch的某个元素的引用就有两种等价的形式:ch[i][j]或p[i][j]。②对二维数组ch的初始化,使其第一行ch[0]中存入了字符串'6937',第二行ch[1]中的内容为字符串'8254'。③程序中第二个循环中的循环体s=e*10+p[i][j]-‘0’;的功能是这样的,每执行一次,将s中的值乘以10(也即,将s中的数值整体向左移动一位,并在空出来的个位上添一个0),再将当前p[i][j]中的字符量转换为相应的数字,然后把这个数字加到s的个位上。④注意到内层循环的循环条件p[i][j]>,0,是指p[i][j]中的字符只要不是字符串结束标志,\\0,就继续循环,语句j+=2;是使下标j每次增加2,也即一个隔一个地从p[i]所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从p[0]所指向的字符串'6937'中一个隔一个地取出字符,分别是‘6’和‘3’,然后从p[1]所指向的字符串'8254'中一个隔一个地取出字符,分别是‘8’和‘5’,同时经过转换和相加运算后,结果s中的值应该是6385,所以,正确答案是C)。

59.A解析:源程序中可以有预处理命令(include命令仅为其中的一种)。C语言中的变量可以在使用之前的任何位置进行定义。C语言程序的书写中,多个语句可以位于一行,但为了增强可读性,一般每行只有一条语句。一个C语言源程序可以由一个或多个源文件组成,但仅可以有一个main函数。

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

61.DPI没有定义,definePI3.1415

62.D【答案】:D

【知识点】:软件设计中使用的工具

【解析】:数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的。PAD图是问题分析图(ProblemAnalysisDiagram)的英文缩写,是在详细设计阶段用到的。系统结构图是对软件系统结构的总体设计的图形显示,是在概要设计阶段用到的。程序流程图是对程序流程的图形表示,故选D。

63.D解析:面向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这样的机制称为消息。消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它

温馨提示

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

评论

0/150

提交评论