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

下载本文档

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

文档简介

2022年四川省宜宾市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.由两个栈共享一个向量空间的好处是______。

A.减少存取时间,降低下溢发生的机率

B.节省存储空间,降低上溢发生的机率

C.减少存取时间,降低上溢发生的机率

D.节省存储空间,降低下溢发生的机率

2.

3.

4.若已知一个栈的进栈序列是l,2,3…n,其输出序列是P1,P2,P3,…PN,若P1=3,则P2为()。

A.可能是2B.一定是2C.可能是1D.一定是1

5.关键路径是事件结点网络中()。

A.从源点到汇点的最长路径B.从源点到汇点的最短路径C.最长回路D.最短回路

6.设a,b,c,d,m和n均为int型变量,且a=5,b=6,c=7,d=m=2,n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为()

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

7.如下函数调用语句func(rec1,rec2+rec3,rec4,rec5);该函数调用语句中,含的实参个数是().

A.3B.4C.5D.有语法错误

8.有以下程序:main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d,%d\n",x,y,z);程序运行后的输出结果是()。

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

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

A.测试工作必须由程序编制者自己完成

B.测试用例和调试用例必须一致

C.一个程序经调试改正错误后,一般不必再进行测试

D.上述三种说法都不对

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

A.无论指针变量P具有何种基类型,表达式“p=p+1”都代表指针P移动1个字节

B.指针变量具有基类型,基类型不同的指针变量不能直接相互赋值

C.指针变量的赋值操作“p=0;”是非法的

D.通过指针变量存取某个变量值的方式称为“直接存取”方式

11.计算机算法必须具备输入、输出和()等5个特性。

A.可行性、可移植性和可扩充性B.可行性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、稳定性和安全性

12.设R是一个二元关系,S是一个三元关系,则下列运算中正确的是()。

A.R-SB.R×SC.R∩SD.R∪S

13.已知a,b均被定义为double型,则表达式:b=1,a=b+5/2的值为()。

A.1B.3C.3.0D.3.5

14.若i和k都是int类型变量,有以下for语句:for(i=0,k=-1;k=1;k++)printf("*****\n");下面关于语句执行情况的叙述中正确的是()。

A.循环体执行两次B.循环体执行一次C.循环体一次也不执行D.构成无限循环

15.以下程序的输出结果是()。main{inta=3:printf("%d\n",(a+a-=a*a));}A.-6B.12C.0D.-12

16.数据库设计中,用E—R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的()。

A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段

17.排序的算法很多,若排序的稳定性和不稳定性分类,则()是不稳定排序。

A.冒泡排序B.归并排序C.直接插入排序D.希尔排序

18.若有说明语句:double*p,a;则通过scanf语句正确给输入项读人数据的程序段是()。

A.*p=&a;scanf("%1f”,p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%",*p);

D.p=&a;scanf("%1f",p);

19.若果要求一个线性表既能较快查找,又能适应动态变化的要求,可以采用()查找方法。

A.分块B.顺序C.二分D.散列

20.恢复系统默认菜单的命令是()。

A.SETMENUTODEFAULT

B.SETSYSMENUTODEFAULT

C.SETSYSTEMMENUTODEFAULT

D.SETSYSTEMTODEFAULT

二、2.填空题(20题)21.数据库系统的三级模式分别为______模式、内部级模式与外部级模式。

22.______是数据库应用的核心。

23.在面向对象方法中,属性与操作相似的一组对象称为【】。

24.以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指内存空间中,形成一个新字符串s。请填空。

voidsstrcpy(char*s,char*t)

{while(*s++=【】);}

main()

{charstrl[100],str2[]="abcdefgh";

sstrcpy(str1,str2);

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

}

25.注释说明了程序的功能,它分为【】注释和功能性注释。

26.以下函数fun的功能是返回str所指字符中中以形参c中字符开头的后续字符串的首地址,例如:str所指字符串为“Hello!”,c中的字符为'e',则函数返回字符串"ello!"的首地址。若str所指字符串为空中或不包含c中的字符,则函数返回NULL。请填空。

char*fun(char*str,charc)

{intn=0;char*p=str;

if(p!=NULL)

while(P[n]!=c&&p[n]!='\0')n++;

if(p[n]=='\0')retumNULL;

return(【】);

}

27.在面向对象方法中,类之间共享属性和操作的机制称为______。

28.设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。

29.以下程序的功能是将字符串s中所有小写字母'a'删去,请填空。

#include<stdio.h>

main()

{chars[]="absuWWUDJFKFLaaakdK";

inti,j;

for(i=j=0;s[i]!='\0';i++)

if()

s[j++]=s[i];

s[j]='\0';

printf("%s",s);

}

30.软件危机出现于20时纪60年代末,为了解决软件危机,人们提出了()的原理来设计软件,这就是软件工程诞生的基础。

31.数据流的类型有______和事务型。

32.若有定义语句chars[100],d[100];intj=0,i=0;且s中已赋字符串,请填空以实现拷贝。(注:不使用逗号表达式)

white(s[i]){d[j]=【】;j++;}

d[j]=0;

33.设有下列宏定义:#defineA2

#defineBA+3

则执行赋值语句:t=b*2;t为血型变量后的值是______。

34.表达式pow(2.8,sqrt(float(x)))值的数据类型为______型。

35.下面程序的输出走【】。

main()

{enumem{em1=3,em2=1,em3};

char*aa[]={"AA","BB","CC","DD"};

printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);

}

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

37.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n-->1)

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

if(str[i]<str[i+l])

{temp=【】;

str[i]=str[i+l];

【】=temp;

}

printf(【】);

}

38.以下程序的运行结果为【】。

#include<stdio.h>

main()

{staticintb[2][3]={{1,2,3},{4,5,6}};

staticint*pb[]={b[0],b[1]};

inti,j;

i=0;

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

printf("b[%d][%d]=%d",i,j,*(pb[i]+j));

printf("\n");

}

39.阅读下面程序段,则执行后输出的结果是【】。

#include"stdio.h"

main()

{charfun(char,int);

chara=′A′;

intb=13;

a=fun(a,b);

putchar(a);}

charfun(chara,intb)

{chark;

k=a+b;

returnk;}

40.下列程序能将字符串s1中的所有与字符串str1相同的子串替换成字符串sb2,并将替换后的新串存于字符数组s2中。

#include<stdio.h>

voidreplace(s1,s2,str1,str2)

char*s1,*s2,*str1,*str2;

{char*t0,*t1,*t2,*x,*y;

x=s1;y=s2;

while(【】)

{

for(t0=s1,t1=str1;((*t1!='\O'&&【】;t0++,t1++);

if(*t1!='\0')*s2++=【】;

else

{for(t1=str2;*t1!='\0';)*s2++=【】;

【】;

}

}

*s2='\0';

}

main()

{staticchars1[]="abcdefababcdabab.",s2125];

replace(s1,s2,"abc","XYZ");

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

}

三、1.选择题(20题)41.已知a的ASCⅡ码为97,执行下面两个语句后,输出的结果为______。charc1=97;c2=98;printf("%d%c",c1,c2);

A.9798B.97bC.a98D.ab

42.当执行下面的程序时,如果输入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

43.设有下列二叉树:

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

A.ABCDEFB.BDAECFC.ABDCEFD.DBEFCA

44.有以下程序voidf(int*x,int*y){intt;t=*X;*X=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7);while(p>q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序运行后的输出结果是

A.8,2,3,4,5,6,7,1,

B.5,6,7,8,1,2,3,4,

C.1,2,3,4,5,6,7,8,

D.8,7,6,5,4,3,2,1,

45.有以下程序:

#inClude<stdlib.h>

structNODE{

intnum;

structNODE*next;

};

main()

{StructN00E*p,*q,*r;

intsum;0;

p=(structNODE*)malloc(sizeof(structNODE));

q=(structNODE*)malloc(sizeof(structNODE));

r=(structNODE*)malloc(Sizeof(structNODE));

p->num=1;q->num=2;r->num=3;

p->next=q;q->next=r;r->next=NULL;

sum+=q->next->num;sum+=p->num;

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

}

执行后的输出结果是

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

46.检查软件产品是否符合需求定义的过程称为()。

A.确认测试B.集成测试C.验证测试D.验收测试

47.设已有定义:floatx;则以下对指针变量p进行定义且赋初值的语句中正确的是A.float*p=1024;

B.int*p=(float)x;

C.floatp=&x;

D.float*P=&x;

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

A.黑箱(盒)测试方法完全不考虑程序的内部结构和内部特征

B.黑箱(盒)测试方法主要考虑程序的内部结构和内部特征

C.白箱(盒)测试不考虑程序内部的逻辑结构

D.上述3种说法都不对

49.结构化程序设计的一种基本方法是()

A.筛选法B.递归法C.归纳法D.逐步求精法

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

51.设有两个串p和q,求q在p中首次出现位置的运算称作______。

A.连接B.模式匹配C.求子串D.求串长

52.计算机辅助教育的英文缩写是()

A.CADB.CAMC.CAID.CAT

53.设定义下列结构体,结构体变量p的出生年份赋值正确的语句是()。stmctst{intx;inty;intz;}structworker{charname[20];charsex;structstbirth;}p;

A.x=1987B.birth.x=1987;C.p.birth.x=1987;D.p.x=1987;

54.设有定义:floata=2,b=4,h=3;,以下C语言表达式中与代数式计算结果不相符的是

A.(a+b)*h/2B.(1/2)*(a+b)*hC.(a+b)*h*1/2D.h/2*(a+b)

55.以下叙述中正确的是

A.用C程序实现的算法必须要有输入和输出操作

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

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

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

56.以下程序的输出结果是main(){inta=0,i;for(i=1;i<5i++){switch(i){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;}printf("%d\n",A);}

A.31B.13C.10D.20

57.下列对于软件测试的描述中正确的是()。

A.软件测试的目的是证明程序是否正确

B.软件测试的目的是使程序运行结果正确

C.软件测试的目的是尽可能多地发现程序中的错误

D.软件测试的目的是使程序符合结构化原则

58.下列属于C语言语句的是______。

A.printf("%d\n",a)

B.#include<stdio.h>

C.a=b;b=c;c=a;

D./*thisisaprogram*/

59.以下程序段的输出结果是()。inta=1234;printf("%2d\n",a);

A.12B.34C.1234D.提示出错,无结果

60.有如下程序

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

四、选择题(20题)61.以下叙述中错误的是()。

A.c语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令

B.c程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件

C.用c语言编写的程序称为源程序,它以ASCIl代码形式存放在一个文本文件中

D.c语言源程序经编译后生成后缀为.obj的目标程序

62.有如下程序段:inta=14,b=15,x;charc=A;x=(a&&b)&&(c<B):执行该程序后,x的值为()。A.trueB.falseC.0D.1

63.

64.

65.有以下程序

66.

67.设整型变量a为5,使b不为2的表达式是()。

A.b=a/2B.b=6-(--a)C.b=a%2D.b=a>3?2:1

68.下列定义数组的语句中,正确的是()。

69.有三个关系R、s和T如下:

由关系R和s通过运算得到关系T,则所使用的运算为()。

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

70.

71.

72.具有3个结点的二叉树有

A.2种形态B.4种形态C.7种形态D.5种形态

73.下列关于单目运算符++、--的叙述中正确的是A.它们的运算对象可以是任何变量和常量

B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量

C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量

D.它们的运算对象可以是char型变量、int型变量和float型变量

74.

75.软件需求规格说明书的作用不包括()。

A.软件设计的依据B.软件可行性研究的依据C.软件验收的依据D.用户与开发人员对软件要做什么的共同理解

76.

77.有以下程序

78.

79.

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.下列程序定义了MM的二维数组,并在主函数中自动赋值。请编写函数proc(inta[][M]),该函数的功能是:使数组左下半三角元素中的值全部置成0。例如,a数组中的值为:

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。

试题程序:

参考答案

1.B

2.A

3.A

4.A

5.A

6.C

7.B

8.C解析:z=x++是先把x的值1赋给z,所以z=1,然后再把x加1赋给x,x=2,++y后y又加1,所以y=3。

9.D解析:测试不是为了证明程序是正确的,而是在设想程序有错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷,一般应当避免由开发者测试自己的程序,因此,选项A错误;测试是为了发现程序错误,不能证明程序的正确性,调试主要是推断错误的原因,从而进一步改正错误,调试用例与测试用例可以一致,也可以不一致,选项B错误;测试发现错误后,可进行调试并改正错误:经过调试后的程序还需进行回归测试,以检查调试的效果,同时也可防止在调试过程中引进新的错误,选项C错误。

10.B指针自增或自减1,移动的字节数与指针变量的基类型有关,假设指针变量p基类型为int类型,那么“p=p+1”表示指针P移动4个字节(通常int类型占4个字节),选项A错误;指针变量具有基类型,基类型不同的指针变量不能直接相互赋值,选项B正确;将0赋给指针变量,表示指针变量的值为空,这是合法的,选项C错误;通过指针变量存储指向变量的地址并通过指针存取变量的值,称为“间接存取”方式,选项D错误。故本题答案为B选项。

11.B

12.BB。【解析】关系的交(∩)、并(∪)和差(-)运算要求两个关系是同元的,显然作为二元的R和三元的S只能做笛卡儿积运算。

13.D

14.D此题考查的是基本的循环,答案为D。

15.D本题可以写成:a+a+(a-(a*a)),所以*的优先级最高,其次是-=的,+的优先级最低,因此先求a-=a*a=9,表达式变为a+a+-=9,a即a=a-9=-6,再次变为a+(-6)=-12,故选择D选项。

16.CC。【解析】E—R(Entity—Relationship)图为实体一联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。

17.D

18.Ddouble*p,a定义了一个指向双精度型的指针变量P和双精度型变量a,p=&a表示将变量a的地址赋给指针变量p;scanf("%If",p)表示用键盘输入的数赋给指针变量P所指向的地址单元中,scanf函数要求在输入double型数据,格式控制符必须用%1f。否则,数据不能正确输入。所以选项D正确。

19.A

20.BB。【解析】考查菜单。在菜单中恢复系统菜单用的是SETSYSMENUTODEFAULT。所以答案选择B。

21.概念(或概念级)概念(或概念级)

22.数据库设计数据库设计

23.类类解析:在面向对象方法中,类描述的是具有相似性质的一组对象。所以,属性与操作相似的一组对象称为类。

24.*t++*t++解析:要使sstrcpy函数实现字符串复制,必须将t字符串中的每个字符逐个复制到s字符串中,可以使用*s=*t;s++;t++,也可以写成*s++=*t++,因此空格处填*t++。

25.序言性序言性解析:注释一般分为序言性注释和功能性注释。

26.str+n或p+nstr+n或p+n解析:此题主要是将形参c中的字符与str中的字符相比较,返回以形参c中字符开头的后续字符串,函数fun中的变量n用于记录形参c中字符在str字符串中的位置,故返回的结果用str+n或p+n表示。

27.继承继承

28.350350解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。在根据完全二叉树的定义,在一棵完全二叉树中,最多有1个度为1的结点。因此,设一棵完全二叉树具有n个结点,若n为偶数,则在该二叉树中有n/2个叶子结点以及n/2-1个度为2的结点,还有1个是度为1的结点:若n为奇数,则在该二叉树中有[n/2]+1个叶子结点以及[n/2]个度为2的结点,没有度为1的结点。本题中,完全二叉树共有700个结点,700是偶数,所以,在该二叉树中有350个叶子结点以及349个度为2的结点,还有1个是度为1的结点。所以,本题的正确答案为350。

29.s[i]!='a's[i]!='a'解析:本题是要将字符串s中所有小写字母'a'删去,所以if语句的判断条件应该是字符串s中的字符和字符'a'不相同的时候,就把它仍然存在原来的数组中,若是和字符'a'相同,就不再保存它。

30.软件工程学软件工程学解析:为了消除软件危机,通过认真研究解决软件危机的方法,认识到软件工程是使计算机软件走向工程科学的途径。逐步形成了软件工程的概念,开辟了工程学的新兴领域——软件工程学。

31.变换型变换型

32.s[i++]s[i++]解析:本题中为了能实现字符串的拷贝,需要使字符数组s从头到尾依次遍历其有元素。本题应使用i舶自增后置来实现。

33.88解析:本题考查带参数的宏定义及相关运算。运算过程为:t=-B*2=A+3*2=2+3*2=8。

34.floatfloat解析:在此表达式中x是float类型的变量,经过开方所得到的结果仍是float类型,再和2.8进行运算时,应该先将2.8转换成float类型再运算,最后结果仍是float型。

35.DDBBCCDDBBCC解析:C语言对枚举的定义规定:在枚举中声明的各个枚举元素,如果没有明确指出某个枚举元素的值,它的上一个元素存在并有明确值的情况下,这个枚举元素的值为其上一个元素的值+1。在本题中,没有明确说明枚举元素em3的值,则em3=em2+1=1+1=2,进而可知,在printf()打印函数中,要打印的数组元素是aa[3]、aa[1]、aa[2],因此最后的打印结果应当为“DDBBCC”。

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

37.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实过程是将相邻两个字符进行比较,如果当前字符小于下一个字符,则通过中间变量temp将字符两两交换,所以第—空应填:str[i],第二空应填str[i+1]最终打印输出得到的字符串str,所以第三空应填'%s',str。

38.b[0][0]=1b[0][1]=2b[0][2]=3

39.NN解析:函数说明语句中的类型名必须与函数返回值的类型一致。本题实现的是在字符'A'的ASCII码值上加上一个常数,使之变成另一个ASCII码值,从而输出字符。

40.*s1!='\0'或*s1*t0=*t1*s1++*t1++s1=t0或s1=s1+strlen(str1)*s1!='\\0'或*s1\r\n*t0=*t1\r\n*s1++\r\n*t1++\r\ns1=t0或s1=s1+strlen(str1)

41.B解析:整型数据和字符数据可以通用,变量c1和c2被定义为字符型,语句c1=97和c2=98的作用相当于执行c1='a'和c2='b'两语句。在输出语句中,%d%c是输出格式符,要求在相应位置上分别输出一个整数和一个字符。

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

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

44.D解析:在C语言中,函数参数的默认传递方式是传值,即函数内部的形参只是调用时的实参的一个拷贝,改变形参,实参不会被改变.如果想要实现传址调用只能使用传递指针的方式来实现.利用指针作函数的参数时,无论形参指针还是实参指针所指的都是同一个内存地址,所以形参如果改变了这个地址中的内容,也就是改变了实参所指的地址内容.本题程序开头定义了一个函数f(),在函数中用一个临时变量t交换了两个指针参数所指的地址内容,所以该函数的作用就是交换两个参数所指的内容。在主函数中,首先定义了一个int型数组a,并定义了两个int型指针p、q分别指向数组a的第一个元素和最后一个元素。然后使用一个while循环调用函数f()不断交换两个指针所指的内容,每次交换后p往后移动一个元素,q往前移动一个元素,直到q不再大于p,即直到两个指针在数组a的中间相遇为止。所以,程序最终运行的结果是数组a中的所有元素全被反序排列一次。故应该选择选项D。

45.B解析:本题中定义了一个结点structNODE,在主函数中定义了三个结点变量指针p、q和r,接着通过malloc函数分配了三个结点并让p、q和r分别指向他们,再接着给p、q和r所指向的结点的hum域赋值为1、2、3,然后让结点p指向q,让q指向r,r指向NULL。显然q->next->num的值为指针r所指向结点的num域的值为3,p->num的值为指针p所指向结点的num域的值为1,故最后输出s的值为3+1=4。所以,4个选项中选项B符合题意。

46.A本题主要考查软件测试的基本知识。软件测试的步骤可分为单元测试(模块测试)、集成测试、确认测试和系统测试。

(1)单元测试是针对每个模块进行的测试,它可从程序的内部结构出发设计测试用例,多个模块可以平行、对立地测试。单元测试主要用于发现详细设计和编程时犯下的错误。单元测试多采用白盒测试,辅之以黑盒测试。

(2)集成测试是在单元测试的基础上,根据模块结构图将各个模块连接起来,必须精心计划,应提交集成测试计划、集成测试规格说明和集成测试分析报告。主要目标是发现与接口有关的问题。集成测试可以发现概要设计时犯的错误。

(3)确认测试用于验证软件的功能和性能及其他特性是否与用户的要求一致。确认测试主要用于发现需求分析时犯下的错误,一般使用黑盒法测试,以表明软件符合需求说明书的要求,应该仔细设计测试用例和测试过程。确认测试必须有用户参加,或以用户为主,用户应参与设计测试用例,通常情况下,主要使用生产中的实际数据进行测试,测试数据通过用户接口输入。

(4)系统测试是将已经通过确认测试的软件,作为整个计算机系统的元素与计算机硬件、外设和网络等其他因素结合在一起,进行一系列的组装测试和确认测试。系统测试的目的是通过与系统的需求定义做比较,发现软件与系统的定义不符合的地方。系统测试可以发现问题定义时犯下的错误。

47.D解析:指针指向的是变量的地址而不是常量,所以选项A是错误的;选项B同样是将float类型变量的值赋给指针而不是地址,所以选项B也是错误的。定义指针变量前面必须有星号(*),如果省略了就变成了把p定义为实型变量,所以选项C不正确。

48.A解析:黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例,选项A是正确的,选项B错误。白箱测试是根据对程序内部逻辑结构的分析来选取测试用例,选项C错误。

49.D解析:在结构化程序设计中,通常采取自顶向下、逐步求精的方法,尤其是在详细设计和编码阶段,其总的思想就是先全局后局部、先整体后细节、先抽象后具体、程序自顶向下、逐步细化。而筛选法、递归法和归纳法指的都是程序的某种具体算法。逐步求精法是结构化程序设计中很重要的思想,一定要牢记!

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

51.B解析:子串的定位操作通常称作串的模式匹配,是各种串处理系统中最重要的操作之一,算法的基本思想是:从主串的开始字符起,与模式的第一个字符比较,若相等,则继续比较后续字符,否则从主串的下一个字符起再重新与模式的字符比较,依次类推,直至模式中的每一个字符依次和主串中的一个连续的字符序列相等,称匹配成功,否则称匹配不成功。

52.C

53.C解析:本题主要考查怎样为嵌套定义的结构中的成员赋值:由于worker中的birth是一个st型的结构,在给birth赋值时,不能将birth作为一个整体,要用“.”运算再深入一层访问到最基本的成员x、y\\z。

54.B解析:选项B中由于1和2都是整型,其1/2的运算结果为0,故整个表达式的值为0,所以它的结果和题目中要求的代数式的计算结果不相符,所以,4个选项中选项B符合题意。

55.C算法具有的5个特性是:有穷性、确定性、可行性、有0个或多个输入、有一个或多个输出。所以说,用C程序实现的算法可以没有输入,但必须要有输出。因此本题答案选C。

56.A解析:本题考核的知识点是for语句与switch语句地综合运用。switch语句的执行过程是:在switch后面的表达式的值和case后面常量表达式的值吻合时,就执行该case分支的语句。如果在该语句的后面没有break语句,则按顺序继续执行下一个case分支,直到遇到break语句或switch多分支语句结束,在switch语句中,break语句的作用是使流程跳出switch结构,终止switch语句的执行.在本题中,因为每个case语句后面都没有break语句,所以,第一轮循环(i==1)执行过后a的值为8,第2轮(i==2)执行过后a的值为16,第3轮(i==3)执行过后a的值为26,第4轮(i==4)执行过后a的值为31,然后执行“i++”语句,这时循环条件为假,循环结束.所以,4个选项中A为所选。

57.C解析:关于软件测试的目的,GrenfordJ.Myers在《TheArtofSoftwareTesting》一书中给出了深刻的阐述:软件测试是为了发现错误而执行程序的过程;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。整体来说,软件测试的目的就是尽可能多地发现程序中的错误。本题答案为C。

58.C解析:在C语言中,一个完整的C语句必须在语句末尾出现分号,分号是C语句的必要组成部分。本题答案为C。

59.C解析:在C语言中,对于不同类型的数据用不同的格式字符,其中,“%d”是按整型数据的实际长度输出,“%md”中,m为指定的输出字段的宽度,如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。注意:格式输入函数scanf的使用。

60.C解析:该题稍微难一点。主要要搞清楚以下几点:①定义了一个指针数组char*p[2]后,程序中第一个循环for(i=0;i<2;i++)p[i]=ch[i];的作用,是使指针数组的p[0]元素(它本身是一个指针)指向了二维数组ch的第一行字符串,并使指针数组的p[1]元素指向二维数组ch的第二行字符串,这样,就使指针数组p和二维数组ch建立起了一种对应关系,以后对二维数组ch的某个元素的引用就有两种等价的形式:ch[i][j]或p[i][j]。②对二维数组ch的初始化,使其第一行ch[0]中存入了字符串'6937',第二行ch[1]中的内容为字符串'8254'。③程序中第二个循环中的循环体s=s*10+p[i][j]-\'0\';的功能是这样的,每执行一次,将s中的值乘以10(也即,将s中的数值整体向左

温馨提示

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

评论

0/150

提交评论