2021-2022年甘肃省陇南市全国计算机等级考试C语言程序设计真题(含答案)_第1页
2021-2022年甘肃省陇南市全国计算机等级考试C语言程序设计真题(含答案)_第2页
2021-2022年甘肃省陇南市全国计算机等级考试C语言程序设计真题(含答案)_第3页
2021-2022年甘肃省陇南市全国计算机等级考试C语言程序设计真题(含答案)_第4页
2021-2022年甘肃省陇南市全国计算机等级考试C语言程序设计真题(含答案)_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年甘肃省陇南市全国计算机等级考试C语言程序设计真题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.以下叙述中正确的是()。

A.结构体变量中的成员可以是简单变量、数组或指针变量

B.不同结构体的成员名不能相同

C.结构体定义时,其成员的数据类型可以是本结构体类型

D.结构体定义时,类型不同的成员项之间可以用逗号隔开

2.有以下程序段

#include<stdio.h>

voidfun(char*fname,char*st)

{FILE*myf;

inti;

myf=fopen(fname,"w");

for(i=0;i<strlen(st);i++)fputc(st[i],myf);

fclose(myf);

}

main()

{fun("test.t","newworld");

fun("test.t","hello,");}

程序执行后,文件test.t中的内容是A.A.hello,

B.newworldhello,

C.newworld

D.hello,rld

3.以下程序段中,与语句“k—a>b?(b>c?1:O):0;”功能相同的是()。

A.if(a>b)(b>c)k=1;elsek=0;

B.if((a>b)‖(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b>c)k=1;

D.if(a>b)k=1;elseif(b<=c)k=1;elsek=0:

4.下列叙述中正确的是()。

A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

B.打开一个已存在的文件并进行写操作后,原有文件中的全部数据必定被覆盖

C.在一个程序中对文件进行写操作后,必须先关闭该文件然后再打开才能读到第1个数据

D.C语言中的文件是流式文件,因此只能顺序存取数据

5.对序线性表23,29,34,55,60,70,78用二分法查找值为60的元素时,需要比较次数为()

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

6.

7.有定义语句:inta=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不为3的是A.if(c<a)x=1;elseif(b<a)x=2;elsex=3;

B.if(a<3)x=3;elseif(b<a)x=2;elsex=1;

C.if(a<3)x=3;if(a<2)x=2;if(a<1)x=1;

D.if(a<b)x=b;if(b<c)x=c;if(c<a)x=a;

8.s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句s;则以下选项中正确的是()。

A.if(s1>s2)S;

B.if(strcmp(s1,s2))S;

C.if(strcmp(s2,sl)>O)S;

D.if(stremp(s1,s2)>O)S;

9.

10.

11.有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf(“%d\n”,m);}程序的运行结果是()A.1B.0C.2D.3

12.有以下程序:main(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)printf("%s\n",p);}程序运行后的输出结果是()。

A.ABCDBCDCDDB.ABCDC.BCDD.BCDCDD

13.对线性表进行二分法检索,其前提条件是()。

A.线性表以顺序方式存储,并按关键码值排好序

B.线性表以顺序方式存储,并按关键码的检索频率排好序

C.线性表以链式方式存储,并按关键码值排好序

D.线性表以链式方式存储,并按关键码的检索频率排好序

14.以下选项中非法的表达式是()。

A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1

15.下列程序的输出结果是______。#include<stdio.h>main(){doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;printf("%d\n",d*y);}

A.3B.3.2C.0D.3.07

16.下列叙述中错误的是()。

A.C语言程序对预处理命令行的处理是在程序执行过程中进行的

B.预处理命令行的最后不能以分号表示结束

C.“#defmeMAX”是合法的宏定义命令行

D.在程序中,凡是以“#”开始的语句行都是预处理命令行

17.作为信息处理热点技术之一的“多媒体技术”中的媒体,强调的是()。

A.存储媒体B.表现媒体C.传输媒体D.感觉媒体

18.若有定义语句“doublea,*p=&a;”,下列叙述中错误的是()。

A.定义语句中的“*”是一个间址运算符

B.定义语句中的“*”是一个说明符

C.定义语句中的“p”只能存放double类型变量的地址

D.定义语句中*p=&a”把变量a的地址作为初值赋给指针变量p

19.设有下列二叉树:

对此二叉树先序遍历的结果是

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

20.使用堆排序方法排序(45,78,57,25,41,89),初始堆序列()

A.78,45,57,25,41,89

B.89,78,57,25,41,45

C.89,78,25,45,41,57

D.89,45,78,41,57,25

二、2.填空题(20题)21.Windows的空口分为两类,一类是应用程序窗口,另一类是【】窗口。

22.数据库保护分为:安全性控制、______、并发性控制和数据的恢复。

23.有以下程序:

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);

}

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

24.有以下程序:

intf(intn)

{if(n==1)retum1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

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

}

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

25.下面程序的功能是输出数组s中最大元素的下标,请填空。

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

26.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用删函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。

FILE*myf;longfl;

myf=【】("test.t","rb");

fseek(myf,(),SEEK_END);fl+ftell(myf);

fclose(myf);

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

27.有以下程序

main()

{intt=1,i=5;

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

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

}

执行后输出结果是______。

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

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

#include<stdio.h>

main()

{inta=5,b=4,c=3,d;

d=(a>b>c);

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

}

30.一个算法的空间复杂度是指该算法所耗费的【】。

31.指针变量p和数组a的说明如下:

int*a[3]={"aa","bb","cc"},**p;

执行语句p=&a[2];后,*p指向的字符串是______。

32.以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。

strcen(chara[],charb[])

{intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;}

return(num);

}

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

main()

{inti,n[]={0,0,0,0,0};

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

{n[i]=n[i-1]*2+1;

printf("%d",n[i]);

}

}

34.阅读下列程序,则程序的输出结果为【】。

#include"stdio.h"

structty

{intdata;

charc;};

main()

{structtya={30,′x′};

fun(a);

printf("%d%c",a.data,a.c);}

fun(structtyb)

{b.data=20;

b.c=′y′;}

35.软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是【】。

36.若输入字符串:abcde,则以下while循环体将执行【】次。

while((ch=getchar())=='e')printf("*");

37.以下程序运行时若从键盘输入:102030<回车>。输出结果是【】。

#include<stdio.h>

main()

{

inti=0,j=0,k=0;

scanf("%d%*d%d",&i,&j,&k);

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

}

38.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【】。

39.若有语句

inti=-19,j=i%4;

printf("%d\n",j),

则输出的结果是______。

40.()的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。

三、1.选择题(20题)41.下面程序段的运行结果是

charstr[]="ABC",*p=str;

printf("%d\n",*(p+3));

A.67B.0C.字符′C′的地址D.字符′C′

42.变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是()。

A.a^bB.a|bC.a&bD.a<<4

43.以下叙述中正确的是()

A.在C程序中,语句之间必须要用分号(;)分隔

B.在C程序中#include行和#define行不是C语句

C.程序中的注释部分可有可无,通常可以省略

D.当输入数值数据时,对于整型变量只能输入整型值:对于实型变量只能输入实型值

44.下列有关数据库的描述,正确的是______。

A.数据库是一个DBF文件B.数据库是一个关系C.数据库是一个结构化的数据集合D.数据库是一组文件

45.对建立良好的程序没计风格,下面描述正确的是______。

A.程序应简单、清晰、可读性好B.符号名的命名只要符合语法即可C.充分考虑程序的执行效率D.程序的注释可有可无

46.若运行时给变量x赋值12,则以下程序的运行结果是()。#include<stdio.h>main(){intx,y;scanf("%d",&x);y=x>12?x+10:x-12;printf("%d\n",y);}

A.0B.22C.12D.10

47.下列程序段的输出结果是______。int**pp,*p;inta=10,b=20;p=&a;pp=&p;p=&b;printf("%d,%d\n",*p,**pp);

A.10,20B.10,10C.20,20D.20,10

48.下列可用于C语言用户标识符的一组是

A.void,define,WORD

B.a3_b3,_123,Car

C.For,-abc,IFCase

D.2a,DO,sizeof

49.有如下程序main(){inti,sum;for(i=1;i<=3;sum++)sum+=i;printf("%d\n",sum);}该程序的执行结果是______。

A.6B.3C.死循环D.0

50.如果需要打开一个已经存在的非空文件“Demo"进行修改下面正确的选项是

A.fp=fopen("Demo","r");

B.fp=fopen("Demo","ab+");

C.fp=fopen("Demo","w+");

D.fp=fopen("Demo","r+");

51.下列数据模型中,具有坚实理论基础的是()。

A.关系模型B.网状模型C.层次模型D.以上三个都是

52.执行以下程序段后,m的值为______。inta[2][3]={{1,2,3},{4,5,6}};intm,*p;p=&a[0][0];m=(*p)*(*(p+2))*(*(p+4));

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

53.表示关系a≤b≤c的C语言表达式为()。

A.(a<=B)&&(b<=C)

B.(a<=B)and(b<=C)

C.(a<=b<=C)

D.(a<=B)&(b<=C)

54.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是()。

A.大写字母B.连接符C.数字字符D.下划线

55.下列叙述错误的是()。

A.函数名是属于用户标识符,需符合C语言对标识符的规定

B.形参只能是变最

C.为保证程序的正常运行,函数中定义的变量不能与其他函数中的变量同名

D.函数中定义的变量可以与其他函数中的变量同名

56.有以下程序:main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4:n+=2;k--;break;}printf("%d",n);}while(k>0&&n<5);}程序运行后的输出结果是()。

A.235B.235C.2356D.2356

57.在结构化程序设计中,模块划分的原则是()。

A.各模块应包括尽量多的功能

B.各模块的规模应尽量大

C.各模块之间的联系应尽量紧密

D.模块内具有高内聚度,模块间具有低耦合度

58.设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是()。

A.n=(n*100+0.5)/100.0

B.m=n*100+0.5,n=m/100.0

C.n=n*100+0.5/100.0

D.n=(n/100+0.5)*100.0

59.现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中连续的三个节点。structnode{chardata;structnode*next;}*p,*q,*r;

现要将q和r所指节点交换前后位置,同时要保持链表的连续,以下不能完成此操作的语句是()。

A.q->next=r->next;p->next=r;r->next=q;

B.p->next=r;q->next=r->next;r->next=q;

C.q->next=r->next;r->next=q;p->next=r;

D.r->next=q;p->next=r;q->next=r->next;

60.以下程序的输出结果是

#include<stdio.h>

structst

{intx;int*y;}*p;

intdt[4]={10,20,30,40};

structstaa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0],};

main()

{p=aa;

printf("%d\n",++(p->x));}

A.10B.11C.51D.60

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

main()

{charstr[]="xyz",*ps=str;

while(*ps)ps++;

for(ps--;ps-str>=0;ps--)

puts(ps);

}

程序的运行结果是

A.yzB.zC.zD.x

xyzyzyzxy

xyzxyz

62.排序的一个重要目的是为了对已排序数据进行

A.合并B.打印输出C.查找D.分类

63.

64.

以下程序的输出结果是()。

main

{charw[][10]={"ABCD","EFGH","IJKL","

MNOP"),K;

for(k=1;k<3;k++)printf("%s\n",w[k]);

A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL

65.下列关于C语言数据文件的叙述中正确的是______。

A.文件由ASCII码字符序列组成,C语言只能读写文本文件

B.文件由二进制数据序列组成,C语言只能读写二进制文件

C.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

D.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

66.结构化分析可以使用的工具是()。

A.N—s图B.DFD图C.PAD图D.程序流程图

67.有以下程序:viodfun(inta,intb,intc){a=456;b=567;c=678;}main{intx=10,y=20,z=30;fun(x,y,z);printf("%d,%d,%d\n",x,y,z);}输出的结果是()。A.30,20,10B.10,20,30C.456,567,678D.678,567,456

68.语句“printf(”a\bhow\’are\’y\\\bou\n”);”的输出结果是()。A.A.a\bhow\'are\'y\\bou

B.a\bhow\’are\’y\bou

C.how'are'you

D.ahow'are'y\bou

69.有以下程序

#include<stdio.h>

voidprt(int*x,int*y,int*z)

{printf("%d,%d,%d\n",++*x,++*y,*z++);}

main()

{inta=10,b=40,c=20;

prt(&a,&b,&c);

prt(&a,&b,&c);

}

程序的输出结果是

70.

下列程序的运行结果是()。

#include<stdio.h>

main

{staticchara[]="Languagef",b[]="programe":

char*p1,*p2;intk;

p1=a;p2=b;

for(k=0;k<=8;k++)

if(*(p1+k)==*(p2+k))

printf("%c",*(p1+k)):

}

A.gaeB.angC.programD.有语法错

71.若a是数值类型,则逻辑表达式(a==1)Il(a!=1)的值是()。

A.1B.0C.2D.不知道a的值,不能确定

72.

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

A.xyzabcABCB.zabcABCC.xyabcABCD.yzabcABC

74.以下选项中合法的标识符是()。

75.函数ftell(fp)的作用是()。

A.得到fp所指向文件的当前读写位置B.初始化流式文件的位置指针C.移动流式文件的位置指针D.以上答案均正确

76.

77.在JavaScript语言中,拥有onsubmit事件的对象是()。

A.documentB.eventC.windowD.form.

78.(61)数据结构中,与所使用的计算机无关的是数据的()

A.存储结构

B.物理结构

C.逻辑结构

D.物理和存储结构

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

A.调用函数时,实参可以是表达式

B.调用函数时,实参与形参可以共用内存单元

C.调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等

D.调用函数时,实参与形参的类型必须一致

80.

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:先将字符串s中的字符按顺序存放到t中,然后把S中的字符按正序连接到t的后面。例如,当s中的字符串为WXYZ时,则t中的字符串应为WXYZWXYZ。

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

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

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidproc(char*s,char*t)

{

inti,s1;

s1=strlen(s);

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

//****found****

t[i]=s[s1];

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

t[s1+i]一s[i];

t[2*s1]=\O0;

}

voidmain

{

chars[100],t[100];

system("CLS");

print{("\nPleaseenterstrings:");

scanf("%s",s);

proc(s,t);

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

}

六、程序设计题(1题)82.有N个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩,从键盘上输入N个学生的信息,要求输出总平均成绩最高的学生信息,包括学号、性别、姓名和平均成绩。

参考答案

1.A结构体变量中的成员可以是简单变量、数组、指针变量或者结构体变量,选项A正确;不同结构体成员名可以相同,选项B错误;结构体定义时,其成员的数据类型不能是本结构体类型,选项C错误;结构体定义时,类型不同的成员项之间使用分号隔开,选项D错误。本题答案为A选项。

2.D本题主要考查文件的操作。在本题的程序中,首先定义了一个无返回值的函数fun,该函数带有两个指针类型的形参,其中第一个形参指向需要被操作文件的文件名,而第二个形参指向被操作的字符串。在函数体中,首先定义一个文件指针,然后以只写的方式打开第一个形参所指向的文件,接着执行for循环,循环结束的条件是循环变量小于被操作字符串的长度,循环体中的程序fputc(st[i],myf);的功能是将字符串中的当前字符输入到文件中。由这些分析我们可以知道,函数fun的作用是将字符串的内容写入到文件中。

在主函数中,两次调用函数fun,当第一次调用时,写入文件的内容为newworld,然后第二次调用函数,此时打开文件,文件的指针重新回到开始,然后往文件中写内容“hello,”,由于此时文件中已经有内容“newworld”,则需要覆盖前面一部分的内容,因此,程序的最终输出结果是hello,rld,本题的正确答案选D。

3.A本题考查了双重三目运算符的用法。例如:表达式a>b?c:d可以看成,当a>b时取C的值,否则取d的值。在本题中k=a>b?(b>c?1:0):0可以看做:当b>c时为真,则k=a>b?1:0。当bb?0:0。也就是说,当a>b并且b>C时,k=1,否则k=0。所以A选项符合题意。

4.AB选项中,打开一个已存在的文件并进行写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。C选项中,在一个程序中对文件进行写操作后,不是先关闭该文件然后再打开才能读到第1个数据,用fseek函数进行重新定位即可。D选项中,C语言中的文件可以进行随机读写。故本题答案为A选项。

5.Cc)【解析】根据二分法查找法需要两次:①首先将60与表中间的元素55进行比较,由于60大于55,所以性表的后半部分查找。②第二次比较的元素是后半部分的中间元素,将60与表中间的元素70进行比较,由于60小于70,所以性表的前半部分查找。③第三次比较的元素是前半部分的中间元素,即60,这时两者相等,即查找成功。

6.A

7.C解析:选项A),B)考查了多分支结构的用法,选项A)中的程序段执行时,c<a,b<a条件均不成立,故执行else后的语句,x值为3;选项B)中a<3条件成立,执行x=3;而选项C),D)是单分支结构的用法,选项C)中程序段执行时,a<3条件成立,x=3,但条件a<2也成立,此时执行x=2,下一个条件不成立,不再执行其后的语句。

8.D在C语言中,不能直接比较两个字符串的大小,必须用特定的函数来完成,选项A错误;选项B不管大于还是小于都执行S,不符合题意;选项C正好相反,当s2大于s1时,执行语句S,可知选项D正确。

9.B

10.D

11.A虽为嵌套的for循环,但“m=m%j”只执行1次,即当i=3时,内层循环条件成立,m=55%3=1,故选A。

12.D解析:本题中首先定义一个字符数组s,并将字符串'ABCD'存到数组s中,定义了一个字符指针变量p,在接下来for循环中,循环体共执行了三次,第一次p指向s[1],所以此时输出的p所指字符串的值为BCD,第二次循环p指向s[2],此时输出p所指的字符串的值为CD,第三次循环p指向s[3],此时输出的p所指的字符串的值为D。所以,4个选项中选项D符合题意。

13.A解析:对线性表进行二分法检索,要求线性表是按顺序方式存储的,并按关键码值的大小排好序,而不是按关键码的检索频率排序。

14.D解析:选项A)在C语言中是一个合法的关系表达式,但它并不代表数学式o<=x<100。计算0<=x<100时,从左到右结合,先计算0<=x,其结果只能是0或1,然后再比较0<100或1<100。根据运算符的优先级,选项B)先判断j==0是否成立,其结果只能是0或1,然后再将0或1赋给i。选项C)中,(char)(65+3)为类型强制转换,将整数型数据转换为字符型。选项D)是将一个数据赋给一个表达式,等号左边不合要求,所以错误。

15.C

16.A预处理是在程序编译之前进行的,所以A选项错误。故本题答案为A选项。

17.D媒体分为感觉媒体、表示媒体、存储媒体、传输媒体和表现媒体五种,“多媒体技术”中的媒体强调的是感觉媒体。

18.A变量定义语句“doublea,*p=&a;”,“*”是一个指针运算符,而非间址运算符。故本题答案为A选项。

19.C解析:二叉树的遍历分为先序、中序、后序三种不同方式。本题要求先序遍历遍历顺序应该为:访问根结点->先序遍历左子树->先序遍历右子树。按照定义,先序遍历序列是ABDECF。

20.B

21.文档文档

22.完整性控制完整性控制

23.33解析:i=1时,f(1)=1,j=j+f(1)=0+1=1;i=2时,f(2)=f(1)+1=1+1=2,j=j+f(2)=1+3=3;此时循环结束,程序运行后的输出结果是3。

24.33解析:i=1时,f(1)=1,j=j+f(1)=0+1=1;i=2时,f2=f(1)+1=1+1=2,j=j+f(2)=1+3=3;此时循环结束,程序运行后的输出结果是3。

25.k=p;k=p;解析:为要寻找数组中的最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考查是从首元素开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考查的循环控制变量。当发现当前元素s[p]比临时最大元素s[k)更大时,应该用p更新k。所以在空框处应填入代码“k=p;”。

26.fopenfopen解析:C语言中的文件分为:ASCII文件与二进制文件。文件在使用前打开,使用后要关闭。

打开文件的函数为:fopen(),调用形式为:fp=fopen(“文件名”,“使用文件方式”);

关闭文件的函数为:fclose(),调用形式为:fclose(fp);其中fp为文件指针。

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

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

29.00解析:在本题中,d=(a>b>c);相当于d=(5>4>3);其计算过程为:先算5>4,结果为真,得1,即d=(1>3);然后计算1>3,结果为假,得0。

30.存储空间存储空间解析:空间复杂度是指算法在执行过程中临时占用的存储空间大小,包括:①算法本身所占用的存储空间;②算法的输入输出数据所占用的存储空间;③算法在运行过程中临时占用的存储空间。

31.cc。cc。解析:a是指针数组,每个数组元素存放的是字符数据的地址,数组a的3个元素分别指向字符串常量'aa'、'bb'和'cc',指针p赋予数组元素a[2]的值,即指向第3个字符串。

32.0'或0或NULLn++或++n或n=n+1或n+=10'或0或NULL\r\nn++或++n或n=n+1或n+=1

33.1371513715解析:本题中,定义了一个整型数组n并初始化,在for循环语句中,再对数组中各元素重新赋值。循环执行第一次时,n[1]=n[0]*2+1=0+1=1,printf函数输出1,然后i的值加1,比较i<=4成立,继续执行循环体语句,使后一个数为前一个数的2倍加1。所以最后输出为1、3、7、15。

34.30x30x解析:本题的参数传递属于值传递,所以被调用函数内不能改变调用函数中的数据。

35.正确性正确性解析:本题考查软件工程中需求规格说明书的评审。衡量需求规格说明书好坏的标准按重要性次序排列为:正确性、无歧义性、完全性、可验证性、一致性、可理解性、可修改性和可追踪性。因此,划线处应填入“正确性”。

36.00解析:函数getchar()是从键盘得用户输入的一个字符。用户输入的第1个字符a,不管后面输入的是什么ch的值都是'a',因此条件(ch=getchar())=='e'为假,这个循环不会被执行。

37.1030010300解析:本题的scanf()函数要求用户输入三个十进制整数,但只接受第一和第三个到函数的第二和第三个参数所指的内存地址中。所以本题的输出为:10300。

38.可重用性继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。

39.-3-3解析:本题考核的知识点是运算符“%’的应用。该运算符是求两个数相除的余数,其结果与被除数的符号一致,本题中“-19%4”的值为“-3”,所以说空格处应该填-3。

40.数据库概念设计数据库概念设计解析:数据库概念设计的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。

41.B解析:考查指向字符串的指针变量。在该题中,指针变量p指向的应该是该字符串中的首地址,p+3指向的是字符串结束标志'\\0'的地址,因而*(p+3)的值为0。

42.A解析:1与1异或结果为0,0与1异或结果为1,可见要使某位数翻转,只要使其与1进行异或运算即可。0与0进行异或运算结果为0,1与0进行异或运算结果为1,可见要使某位的数不变,只要使其与0进行异或运算即可。

43.B

44.C解析:数据库(Database,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。数据库中的数据具有“集成”、“共事”之特点。

45.A解析:B选项错误,符号名应该能反映出它所代表的实际东西,应有一定的意义,不是简单的符合语法就可以.C选项不对,应该在保证程序正确的情况下再考虑程序的执行效率。D选项错误,程序的注释有益于对程序的理解和维护,好的程序必不可少。A选项正确。

46.A解析:条件运算符“?:”是三目运算符,其形式为:

表达式17表达式2:表达式3

当表达式1的值为真时,则表达式2的值为整个表达式的值;如果表达式1的值为假,则表达式3的值为整个表达式的值。题中,表达式x>12的结果为假,所以将表达式x-12的值0作为y的值。

47.C解析:指针变量p先是指向变量a,后指向变量b,但二级指针变量始终指向指针变量p。

48.B解析:C语言规定标识符只能由字母、数字和下画线3种字符组成,且第一个字符必须为字母或下画线,排除选项C)和D);C语言中还规定标识符不能为C语言的关键字,而选项A)中void为关键字,故排除选项A)。

49.C解析:在循环过程中,i的值一直没有被改变,所以这是一个死循环。

50.D解析:此题考查文件打开方式对文件操作的影响。由于打开文件进行修改,可见选项A)是错误的,因为此种方式打开时,只能读,不能写,当然无法修改。选项B)是以追加方式“ab+”打开文件读写。以这种方式打开时,新写入的数据只能追加在文件原有内容之后,但可以对以前的数据读出。换言之,“ab+”或“a+”方式打文件后,对于写操作,文件指针只能定位在文件的原有内容之后,但对于读操作,文件指针可以定位在全文件范围内,可见,按此种方式打开文件不能实现文件内容的修改。选项C)以“w+”方式打开文件,此时,原文件中已存在的内容都被清除。但新写入文件的数据可以被再次读出或再次写入,故也不能实现对文件的修改。只有以“r+”方式打开文件时,才允许将文件原来数据读出,也允许在某些位置上再写入,从而实现对文件的修改。

51.A解析:在层次模型和网状模型的系统研究和数据库设计中,其性能和质量主要决定于设计者的经验和技术水平,缺乏一定的理论指导。关系模型有坚实的理论基础,它以数学理论为基础,从而避免了层次模型和网状模型系统中存在的问题。

52.A

53.A解析:本题考查逻辑与运算符&&。在C语言中使用运算符“&&”连接两个表达式,也可以表示逻辑与运算符。在C语言中不允许出现a<=b<=c这种格式。

54.B解析:在C语言中,用户标识符命令规则规定:变量名只能由字母、数字或下划线3种字符组成,且第一个字符必须为字母或下划线。在C语言中,大写字母和小写字母被认为是两个不同的字符。据此规定A)、D)、C)三个选项是正确的,而B)选项是连字符,不在C语言规定的命名变量标识符的范围内。

55.C解析:本题考查函数调用时参数的作用域。在函数调用时,函数体内定义的变量的作用域连函数体内,因而在不同函数体内定义的变量可以相同,不影响各个变量的使用。

56.A解析:do-while语句的特点是先执行循环体,然后再判断循环条件是否成立,当循环条件的值为0时循环结束。本题中执行switch语句,寻找与5匹配的case5分支,没有寻找到则执行default后的语句,n=0,k的值变为4,继续执行switch语句,寻找与4匹配的case4分支,找到后开始执行其后的语句“n+=2;k--;”,n的值为2,k的值变为3,遇到break语句跳出该switch语句体。执行print语句输出2;此时n=2,k=3依旧满足do-while循环条件,将用同样的方式再次执行switch语句,直到n=5时不再满足do-while循环条件退出所有的循环。

57.D解析:本题考查软件工程中软件设计的概念和原理。人们在开发计算机软件的长期实践中积累了丰富的经验,总结这些经验得到如下的启发式规则:

(1)改进软件结构,提高模块独立性;通过模块的分解或合并,力求降低耦合提高内聚。低耦合也就是降低不同模块间相互依赖的紧密程度,高内聚是提高一个模块内各元素彼此结合的紧密程度。

(2)模块的规模应适中。一个模块的规模不应过大,过大的模块往往是由于分解不够充分:过小的模块开销大于有益操作,而且模块过多将使系统接口复杂。因此过小的模块有时不值得单独存在。

(3)模块的功能应该可以预测,但也要防止模块功能过分局限。如果模块包含的功能太多,则不能体现模块化设计的特点:如果模块的功能过分的局限,使用范围就过分狭窄。

经过上述分析,本题的正确答案是选项D。

58.B本题要求选项中的表达式能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算。

在选项A中,n=(n*100+0.5)/100.0表示先将n后的前两位小数变成整数,然后对其第三位小数进行加0.5操作,这个操作其实是第三位小数在进行四舍五入运算时只有入,而没有舍运算。因此,本选项不能实现题目的要求。

在选项B中,m=n*100+0.5,n=m/100.0表示先将n后的前两位小数变成整数,然后对第三位小数进行加0.5操作,并将最后的运算结果赋值给一个整型变量m,这是数据的强制转换,它对小数部分的处理是直接舍弃,而在对第三位小数进行加0.5操作时,其实就是对第三位进行四舍五入运算。因此选项能实现题目的要求,是正确的答案。

在选项C中,根据运算符的优先级我们知道,先运算n*100,再运算0.5/100.0,最后将结果相加,与题目要求相差比较远。

在选项D中,n=(n/100+0.5)*100.0表示先除100,这不是对小数部分进行四舍五入运算,而是对整数部分进行四舍五入运算,与题目要求不一致。

59.D解析:D中的操作将会丢失r后面的链表结构,不能保持链表的连续。

60.C解析:考查结构体成员数据的引用方法。通过指针来引用结构体成员的方法是(指针变量)->结构体成员名。

61.B本题主要考查循环结构和字符串的存储结构。在C语言中,为了方便确定字符串的长度,编译系统在字符串后增加了一个结束标识‘\\0’,即ASCII码的0。

在程序中,首先定义了一个字符型数组str,并赋初值,然后定义一个同类型的指针变量ps,并使ps指向字符数组str。

在while循环中,循环结束的条件是*ps的值为0,由于循环开始前,指针变量ps是指向数组的第一个元素,即*ps等价于str[0],值为x,其ASCII码值不为0,循环继续,使ps指向数组的第二个元素,很明显,结果不为0,第三个元素也不为0,而第四个元素才为0,循环结束,此时ps指向数组中的结束标识符。

在for循环中,首先将指针变量ps做自减运算,即使指针变量ps执行数组的最后一个元素值,即第三个元素z,然后用输出函数puts输出,该输出函数的功能是输出字符串或字符数组到终端上,一次只能输出一个字符串,输出时,遇到字符串结束标志符结束,并自动换行。

第一次for循环时,由于ps指向z,输出的结果为z,换行。

第二次for循环时,由于ps指向y,那么输出的结果为yz,换行。

第二次for循环时,由于ps指向x,那么输出的结果为xyz,换行。

因此,本题的正确答案是B。

\r\n\r\n\r\n

62.C排序是计算机程序中一种重要的操作,它的功能是将任意一个数据元素序列排成有序的数据元素序列;而查找是要在数据元素序列中找到一个与之相符的结果。不难看出,如果数据元素序列有序,则查找起来就方便很多。因此,排序的一个重要目的是为了对已排序数据进行查找。

63.D

64.D

\n当k=1时,循环成立,输出w[l]的数组即EFGH,接着执行k++后k为2;当k=2时,循环成立,输出w[2]的数组即IJKL,接着执行k++后,k为3;当k=3时,循环不成立,退出。

\n

65.C文件一般指存储在外部介质上数据的集合。C语言把文件看做是一个字符(字节)的序列,即由一个字符(字节)的数据顺序组成。它不是由记录组成的,而是一个数据流。根据数据的组织形式,可分为ASCII文件和二进制文件。ASCII文件又称文本文件,它的每一个字节存放一个ASCII代码,代表一个字符。二进制文件把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。由此可知,本题正确答案是选项C。

66.B\n数据流图(DFD)、数据字典、判定表和判定树是结构化分析常用的工具。程序流程图、N—S图、PAD图是详细设计过程中常用的图形工具。

\n

67.B本题考查实参与形参调用,从实参传递到形参时,只是数值的传递,调用函数中值的改变不会影响主函数中的值,因此原样输出。

68.C“\\b”格式符表示退格,功能是将它后面的字母把它前面的字母覆盖,导致“\\b”格式符前面的字母不能输出;“\\'”格式符表示输出单引号字符;“\\\\”格式符表示输出反斜线字符。

69.B在本题中,程序首先定义了一个prt函数,该函数带有三个整型指针变量,分别为x,y,z,程序体是一条输出语句,由于运算符*和++的优先级一样,且都是自右向左结合的运算符,因此,++*x等价于++(*x),这个操作可描述为:选取值,再加1,最后输出相加后的结果,并将相加后的结果修改到实参中;*z++等

温馨提示

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

评论

0/150

提交评论