2021年山西省太原市全国计算机等级考试C语言程序设计真题二卷(含答案)_第1页
2021年山西省太原市全国计算机等级考试C语言程序设计真题二卷(含答案)_第2页
2021年山西省太原市全国计算机等级考试C语言程序设计真题二卷(含答案)_第3页
2021年山西省太原市全国计算机等级考试C语言程序设计真题二卷(含答案)_第4页
2021年山西省太原市全国计算机等级考试C语言程序设计真题二卷(含答案)_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

2021年山西省太原市全国计算机等级考试C语言程序设计真题二卷(含答案)学校:________班级:________姓名:________考号:________

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

A.算法的执行效率与数据存储结构无关

B.算法的空间复杂度是指算法程序中指令(或语句)的条数

C.算法的有穷性是指算法必须能在执行有限个步骤之后终止

D.以上3种描述都不对

2.若有定义“intx[10],*pt=x;”,则对x数组元素的引用正确的是()。

A.pt+3B.*&x[10]C.*(pt+10)D.*(x+3)

3.对于关键字值序列(12,13,11,18,60,15,7,18,25,100)

A.100B.12C.60D.15

4.有以下程序:#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

5.已知二叉树后序遍历序列是CDABE,中序遍历序列是CADEB,它的前序遍历序列是()

A.ABCDEB.ECABDC.EACDBD.CDEAB

6.一个递归的定义可以用递归过程求解,也可以用非递归过程求解,但单从运行时间来看,通常递归过程比非递归过程()。

A.较快B.较慢C.相同D.无法确定

7.x>0&&x<=10的相反表达式为()。

A.x<=0||x>10B.x<=0&&x>10C.x<=0||x<=10D.x>0&&x>10

8.以下正确的字符串常量是()。

A.\\\B.'abc'C.OlympicGames

9.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)当执行程序时,输出的结果是()。A.-1B.1C.4D.0

10.下面哪个序列不是此图的一个拓扑排序()A.ebfgadchB.aebdgfchC.adchebfgD.Aedbfgch

11.二维数组A的每个元素是由6个字符组成的串,其行下标i=0,1,…,8,列下标j=1,2,…,10。若A按行先存储,元素A[8][5]的起始地址与当A按列先存储时的元素()的起始地址相同。设每个字符占一个字节。

A.A[8][5]B.A[3][10]C.A[5][8]D.A[0][9]

12.

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

A.5,5

B.5,11

C.11,11

D.11,5

14.下列写法正确的是()。

A.main(){inti=3,j;j=5}

B.main(){inti=3;

C.main()

D.main(){;}

15.设有二元关系R和三元关系s,下列运算合法的是()。

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

16.以下选项中,不能作为合法常量的是

A.1.234e04B.1.234e0.4C.1.23E+4D.1.234e0

17.有以下程序#include<stdi0.h>main(){inta[]={2,3,5,4),i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;casel:a[i]--;}break;case1:a[i]=0;}for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");}程序运行后的输出结果是()。A.3344B.2050C.3040D.0304

18.栈这种数据结构一般应用在()。

A.递归调用B.子程序调用C.表达式求值D.A,B,C

19.若有说明“chars1[30]="abc",s2[]="defghi";",则在使用函数stoat(s1,s2)后,结果是()。

A.s1的内容更新为abcdefghi

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

C.s1的内容更新勾defghiabc\0

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

20.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)s=a;for(b=1;b<=c;b++)s=s+1;则与上述程序段功能等价的赋值语句是()。

A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;

二、2.填空题(20题)21.以下程序用来统计文件中字符的个数。请填空。

#include“stadio.h”

main()

{FILE*fp;longnum=0L;

if((fp=fopen(“fname.dat”,“r”))==NULL);

{printf(“0penerror\n”);exit(0);}

while(【】)

{fsetc(fp);num++;}

printf(“num=%1d\n”,num-1);

fclose(fp);

}

22.数据结构包括数据的逻辑结构、数据的【】以及对数据的操作运算。

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

fun(intt[],intn)

{inti,m;

if(n==1)returnt[0];

elseif(n>=2){m=fun(t,n-1);returnm;}

}

main()

{inta[]={11,4,6,3,8,2,3,5,9,2};

printf("%d\n",fun(a,10));

}

24.以下程序用于判断a、b、c能否构成三角形,若能,输出YES,否则输出NO。当给a、b、c输入三角形三条边长时,确定a、b、c能构成三角形的条件是需同时满足三个条件:a+b>c,a+c>b,b+c>a。请填空。

main()

{floata,b,c;

scanf("%f%f%f",&a,&b,&c);

if(【】)printf("YES\n");/*abc能构成三角形*/

elseprintf("NO\n");/*abc不能构成三角形*/

}

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

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

26.以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。

#defineN4

voidrotade(inta[][N],intb[][N])

{intI,j;

for(I=0;I<N;I++)

{b[I][N-1]=【】;【】=a[N-1][I];}}

27.下列程序可以将从键盘上输入的十进制数(10ng型)以二到十六进制形式输出。

#include.<stdio.h>

main()

{charb[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

intc[64],d,i=0,base;

longn;

printf("enteranumber:\n");scanf("%1d",&n);

printf("enternewbase:\n");scanf("%d",&baBe);

do

{c[i]=【】;

i++;n=n/base;

}while(n!=0);

printf("transmitenewbabe:\n");

for{--i;i>=0;--i)

{d=c[i];

printf("%c",b【】);

}

}

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

#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+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

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

main()

{

chara[]="123456789",*p;

inti=0;

p=a;

while(*p)

{

if(i%2==0)

*p='*';

p++;i++;

}

puts(a);

}

30.常见的拓扑结构有【】。

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

#include<stdio.h>

#defineMAX(x,y)(x)>(y)?(x):(y)

main()

{inta=5,b=2,c=3,d=3,t;

t=MAX(a+b,c+d)*10;

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

}

32.当运行以下程序时,输入abcd,程序的输出结果是【】。

insert(charstr[])

{inti;

i=stolen(str);

while(i>0)

{str[2*i]=str[i];str[2*i-1]='*';i--;}

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

}

main()

{charstr[40];

seanf("%s",str);insert(str);

}

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

#include<stdio.h>

main()

{intx=27;

while(x>20&&x<30)

{x++;

if(x/3){x++;break;}

else

continue;

}

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

}

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

main()

{intx=1,y=2,z=3;

printf("%d,",x<y?y:x);

printf("%d,",z<y?x++:y++);

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

}

35.耦合和内聚是评价模块独立性的两个主要标准,其中______反映了模块内各成分之间的联系。

36.在数据库理论中,数据物理结构的改变,如存储设备的更换、物理存储的更换、存取方式改变等都不影响数据库的逻辑结构,从而不引起应用程序的变化,称为______。

37.一张3.5英寸软盘大约能存储140万个ASCⅡ字符,若存放汉字大约能存放【】个。

38.在关系模型中,把数据看成一个二维表,每一个二维表称为一个______。

39.输出若干学生3门课程的成绩。

#include<stdio.h>

【】

structstudent

{intnum;

floatscore[3];

}

main()

{inti=0,n;

floata[3];

【】*ptr[200];

printf("请输入学生学号和3门课成绩,学号为0表示数据输入结束\n");

do

{ptr[i]=(structstudent*)malloc(sizeof(structstudent));

scanf("%d%f%f%f",&ptr[i]->num,&a[O],&a[1],&a[2]);

ptr[i]->score[O]=a[O];

ptr[i]->score[1]=a[1];

ptr[i]->score[2]=a[2];

if(【】)break;

i++;

}while(1);

n=i-1;

【】;

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

printf("%-6d%.1f%.1f%.1f\n",ptr[i]->num,ptr[i]->score[0],

ptr[i]->score[1],ptr[i]->score[2]);}

40.下述函数用于统计一行字符中的单词个数,单词之间用空格分隔。

word_num(str)

for(i=0;str[i]!=【】;i++)

if(【】='')word=0;

【】;

}

return(num);

}

三、1.选择题(20题)41.已知字符'0'的ASCII码的十进制数为48,并且数组的第0个元素在低位,有以下程序#include<stdio.h>main(){union{inti[2];longk:charc[4];}r,*s=&r;s->i[0]=0x39;s->i[1]=0x38;printf("%c\n",s->c[0]);}程序运行后的输出结果是()

A.39B.9C.38D.8

42.有以下程序:main(){charstr[]="xyz",*ps=str;while(*ps)ps++;for(ps--;ps-str>=0;ps--)puts(ps);}执行后输出结果是()。

A.yzxyZB.zyzC.zyzD.xxyxyzxyz

43.在C语言系统中,假设int类型数据占两个字节,则double、long、unsignedint、char类型数据所占字节数分别为()。

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

44.关于结构化程序设计原则和方法的描述错误的是()。

A.选用的结构只准许有一个入口和一个出口

B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现

C.不允许使用GOTO语句

D.语言中所没有的控制结构,应该采用前后一致的方法来模拟

45.以下叙述不正确的是

A.一个C源程序可由一个或多个函数组成

B.一个C源程序必须包含一个main函数

C.C程序的基本组成单位是函数

D.在C程序中,注释说明只能位于一条语句的后面

46.下列选项中,不能用作标识符的是A._1234_B._1_2C.int_2_D.2_int_

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

48.规范化理论中,分解______主要是消除其中多余的数据相关性。

A.关系运算B.内模式C.外模式D.视图

49.下面程序输出的结果是______。main(){inti=5,j=9.x;x=(i==j?i:(j==7));printf("\n%d,%d",i,j);}

A.5,7B.5,5C.语法错误D.7,5

50.字符(char)型数据在微机内存中的存储形式是______。

A.反码B.补码C.EBCDIC码D.ASCII码

51.若有以下结构体定义,则______是正确的引用或定义。structexample{intx;inty;}v1;

A.example.x=10

B.examplev2.x=10

C.example.x=10

D.structexamplev2={10};

52.在16位C编译系统上,若定义longa;,则能给变量a赋值40000的正确语句是______。

A.a=20000+20000;B.a=4000*10;C.a=30000+10000;D.a=4000L*1OL;

53.下列数据结构中,属于非线性的是()。

A.线性表B.队列C.树D.栈

54.已定义ch为字符型变量,以下赋值语句中错误的是

A.ch='\';B.ch=62+3;C.ch=NULL;D.ch='\xaa';

55.在进行单元测试时,常用的方法是

A.采用白盒测试,辅之以黑盒测试B.采用黑盒测试,辅之以白盒测试C.只使用白盒测试D.只使用黑盒测试

56.按照“先进先出”组织数据的数据结构是()。

A.队列B.栈C.双向链表D.二叉树

57.在C语言中,运算对象必须是整型数的运算符是()。

A.%B.\C.%和\D.**

58.有以下程序

intadd(inta,intb){return(a+b);}

main()

{intk,(*f)(),a=5,b=10;

f=add;

}

则以下函数调用语句错误的是A.k=(*f)(a,b);B.k=add(a,b);C.k=*f(a,b);D.k=f(a,b);

59.在下列叙述中,不正确的一条是______。

A.在C语言中,函数中的自动变量可以赋初值,每调用一次,赋一次初值

B.在C语言中,外部变量的隐含类别是自动存储类别

C.在C语言中,在调用函数时,实际参数和对应形参在类型上只需赋值兼容

D.在C语言中,函数形参可以说明为register变量

60.下列程序的输出结果是()。main(){intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2)j+=p[i];printf("%d\n",j);}

A.42B.45C.56D.60

四、选择题(20题)61.以下选项中,合法的是()。

A.charstr3[]={d,e,b,u,g,\0};

B.charstr4;str4="helloworld";

C.charname[10];name="china";

D.charstrl[5]="pass",str2[6];str2=strl;

62.下列各数据类型不属于构造类型的是()。

A.枚举型B.共用型C.结构型D.数组型

63.在下列结论中,只有一个是错误的,它是()。

A.C语言允许函数的递归调用

B.C语言中的continue语句,可以通过改变程序的结构而省略

C.有些递归程序是不能用非递归算法实现的

D.C语言中不允许在函数中再定义函数

64.有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向此链表中的3个连续结点。structnode{

int

data;structnode

*next;

}*p,*q,*r;现要将这个链表构成一个环,以下(

)操作是正确的。A.p->next=q->nextB.r->next=pC.p->next=rD.r->next=q->next->next

65.

66.有以下程序:main{inta=0,b=0;a=10;/*给a赋值b=20;给b赋值*/printf(“a+b=%d\n”,a+b);/*输出计算机结果*/}程序运行后的输出结果是()。A.a+b=10B.a+b=30C.30D.出错

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

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

68.HTTP协议的消息有()两种类型。

A.发送消息和接收消息B.请求消息和响应消息C.消息头和消息体D.实体消息和控制消息

69.设变量x为float型且已赋值,则以下语句能将x中的数值保留到小数点后两位,并将第3位四舍五入的是()。

A.

B.

C.

D.

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

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

71.C语言结构体类型变量在程序执行期间,()。

A.所有成员一直驻留在内存中B.没有成员驻留在内存中C.部分成员驻留在内存中D.只有一个成员驻留在内存中

72.对于循环队列,下列叙述中正确的是()。A.队头指针是固定不变的

B.队头指针—定大于队尾指针

C.队头指针_定小于队尾指针

D.队头指针可以大于队尾指针,也可以小于队尾指针

73.

有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",m,85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",f,95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

程序的运行结果是()。

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

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

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

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

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

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

75.若有定义语句:“inta=3,b=2,c=1;”,以下选项中错误的赋值表达式是()。

A.a=(b=4)=3;B.a=b=c+1:C.a=(b=4)+C;D.a=1+(b=c一4);

76.

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

main

{inta=1,b;

for(b=1,b<=10;b++)

{if(a>=8)break;

if(a%2==1){a+=5;continue;}

a=3;}

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

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

77.

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

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

79.非空的循环单链表head的尾结点(由p所指向)应该满足

A.p->next==NULLB.p==NULLC.p->next=headD.p=head

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

A.zB.0C.元素Ch[5]地址D.字符y的地址

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:依次取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。例如原始字符串是“ab45c6djfd789”,则输出后的字符是“456789”。请修改函数proc()中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.N名学生的成绩已在主函数中放入一个带有头结点的链表结构中,h指向链表的头结点。请编写函数fun(),其功能是:找出学生的最高分,并由函数值返回。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.C在程序设计中,算法执行效率与数据的存储结构密切相关。算法的空间复杂度是指算法执行过程中所需存储空间。

2.D选项A中,“pt+3”使指针变量Pt移动3个单元,指向第4个元素,不能正确引用。运算符“*”与“&”放在一起,其作用相互抵消,且下标10超出了数组下标范围,所以B选项错误。“*(pt+i)”表示引用指针pt所指元素后的第i个元素,引用数组第11个元素,C选项错误。故本题答案为D选项。

3.C

4.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。

5.C由于后序遍历的最后一个儿素为E,所以E为根结点,所以它的前序遍历的首个元素为E,敞排除A)和D)选项。由于中序遍历中,元素B在元素根结点E自:J后面,所以B为二叉树的右子树,并且该二叉树右子树只有一个儿素,所以前序遍历的最后一个元素应为B,故选项C)为正确选项,即该二叉埘的前序遍历序列是EACDB。

6.B

7.A

8.D解析:在C语言中,字符串常量是以双引号括起来的字符序列。故选项B和C不正确。字符序列中可包含一些转义字符,转义字符都是以“\\”开头的。选项A中包含了三个“\\”,前两个(\\\\)代表了一个“\\”字符,后面一个和“'”一起(\\”)被看作一个……,所以该字符串缺少一个结束的“'”,故不正确。选项D的两个……之间没有任何字符,代表的是一个空串,是合法的字符串常量,故应该选择D。

9.A本题考查do-while循环。当--y是0(即y是o)时结束循环,输出--y,先将y的值减1再输出Y的值。

10.C

11.A

12.B

13.Bmain函数中的局部变量m与fun函数中的静态局部变量m同名,因此main访问的是其局部变量m,所以main中的两次函数调用,实际上都是调用fun(1,1)。

第一次调用时,i=i+(m+1)=2+(0+1)=3,m=i+x+y=3+1+1=5。

第二次调用时,i=i+(m+1)=3+(5+1)=9,m=i+x+y=9+1+l=11。

所以程序输出5,11。

14.D解析:本题考查语句的基本构成。选项A)中j=5后面少了一个分号:选项B)中少了“}”;选项C)不是一个完整的函数定义格式,一个完整的函数定义格式还包括一对花括号:选项D)正确,是一个空语句。

15.D本题给出的两个关系R与S的表结构是不同的(R是二元关系,S是三元关系),它们不能进行∩、∪、一运算。而两个不同结构的关系是可以进行笛卡儿积(×)运算的。

16.B解析:C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,而选项B)中,e(E)后面的指数是小数,所以不合法。

17.C本题考查嵌套分支语句。共输出4个值:当i=0时,i%2取余后还是0,则执行ease0语句,继续switch语句,此时i为0,数据的下标是从0开始的,a[03的值为2,则a[0]%2=0,继续执行case0,数组a[0]++,值变为3,执行break跳出第二重开关语句。出来后继续执行break,跳出第一重开关语句,继续循环;输出第一个值为3。i++后值为1,i%2=1%2取余后值为1,执行casel,将0赋给a[l],退出开关语句,输出第二个值为0。i++后值为2,i%2=2%2取余后值为0’a[2]的值为5,则a[2]%2=1,继续执行casel,数组a[2]--,值变为4,执行break跳出第二重开关语句。出来后继续执行break,跳出第一重开关语句,继续循环;输出第三个值为4。i++后值为3,i%2=3%2取余后值为1,执行casel,将0赋给a[3],退出开关语句,输出第四个值为0。结果为3040。

18.D

19.Dstrcat(s1,s2)函数的功能是把s2字符串连接到s1字符串的末尾,要保证s1有足够的空间容纳下连接后的字符串。

20.B解析:本题考核的知识点是for循环次数的计算.本程序中for循环的次数为c-1+1共循环了c次,而每循环一次s的值加1,所以s的值为s+c.而最开始s的值为a,故4个选项中选项B符合题意.

21.!feof(fP)!feof(fP)解析:统计文件中字符个数的算法可描述如下:首先判断文件位置指针是否指向了文件尾,如果不是则读出一个字符,同时字符的个数加1,再判断文件位置指针是否位于文件尾,如此循环,直到文件位置指针位于文件尾为止。本题首先以读文件的方式打开了文件“fname.dar”,如果打开成功则把返回的文件型指针赋值给fp,然后通过循环求文件中的字符数。首先判断文件位置指针是否位于文件尾,如果不是则循环读取字符,每次字符数加1。所以下划处应填循环条件,文件位置指针不是指向文件尾,即“!feof(fp)”。

22.存储结构数据结构包括3个方面,即数据的逻辑结构、数据的存储结构及对数据的操作运算。

23.1111解析:此题涉及函数的调用和if语句。程序先执行第二个if语句,然后再执行第一个if语句,最后用return返回数值。

24.(a+b>c)&&(a+c>b)&&(b+c>a)(a+b>c)&&(a+c>b)&&(b+c>a)解析:三角形形式的条件是两边之和大于第三边。要用'&&'指令连接三个条件,表示三个条件都要满足。

25.55解析:分析程序,当a=3;b=4;c=5时,判断语句a>b不成立,所以不执行后面的语句,直接执行“printf('%d\\n',c);”语句,输出c的值,输出结果为5。

26.a[0][I]b[I][0]a[0][I],b[I][0]解析:b[i][N-1]=a[0][i]实现把a所指二维数组中的第0行放到b所指二维数组的最后一列中,\ue008b[I][0]=a[N-1][I]实现将a所指N行N列的二维数组中的最后一行放到b所指二维数组中的第0列。

27.n%base[d]

28.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。

29.*2*4*6*8**2*4*6*8*解析:程序中定义了一个字符数组a,并初始化为123456789,接着定义了一个指针p并让它指向数组a,紧接着执行了一个while循环,此循环的作用是:当i为偶数时,将“*”赋给a[i],p指向数组末尾,循环结束,此时数组中a[0]、a[2]、a[4]、a[6]和a[8]的值都为“*”,所以最后调用puts()函数输出的a的值为*2*4*6*8*

30.星型、总线型和环型星型、总线型和环型

31.77解析:程序中经过宏替换后,表达式t=MAX(a+b,c+d)*10变为t=(a+b)>(c+d)?(a+b):(c+d)*10。因为(a+b)>(c+d)为真,所以t=(a+b),输出结果为7。

32.a*b*c*d*a*b*c*d*解析:程序中的变量i用于存放字符串str的长度,执行while语句,通过分析可知,字符串第2*i项的值可由第i项的值得到;第2*i-1项直接赋值为。号,i减1,如此反复直到不满足i>0的条件时,输出运行后的字符串。

33.2929解析:本题考查while循环和++运算,x=27符合循环条件,执行循环体中x++后,x=28,if条件也成立,执行x++后退出,x的值增1,结果x=29。

34.22132,2,1,3解析:本题考查++,--运算符和条件运算符的使用。

“表达式1?表达式2:表达式3”的功能是:表达式1的值若非0,则计算表达式2的值,且表达式2的值为最终结果;若表达式1的值为0,则计算表达式3的值,且为最终结果。

本题中,x=1,y=2时,x<y成立,输出y的值2;y=2,z=3时,z<y不成立,执行y++,输出2后y值增1,所以最后一个输出x的值不变为1,y的值为增加后的3。

35.内聚内聚

36.物理独立性物理独立性解析:数据的物理结构改变,不影响数据库的逻辑结构,从而不引起应用程序的变化,这种性质叫做物理独立性。

37.70万70万

38.关系关系解析:关系模型用;维表表示,则每个;维表代表一种关系。

39.#include<alloc.h>structstudentptr[i]->num==Ofree(ptr[i])#include<alloc.h>\r\nstructstudent\r\nptr[i]->num==O\r\nfree(ptr[i])

40.\O'或0或NULLstr[i]num++或num=num+1或num+=1\\O'或0或NULL\r\nstr[i]\r\nnum++或num=num+1或num+=1解析:观察题目要求,可以知道以下几点:

①for循环的结束条件应当是:str[i]已是字符串的最后一个字符;

②str[i]代表字符串str中的第i+1个字符;

③整形变量num的值是要记录的单词的个数。

C语言中规定字符串的最后一个字符是一个隐含的字符串结束符“\\0”,所以在题中第一个空中应填写“\\0”;题中第二个空应填写“str[i]”,以判断当前位置的字符是否为空格;题中第三个空中应当填写“num++”,通过变量num的加1累加得到字符串中的单词个数。

41.B

42.C解析:执行while循环,使指针变量ps指向字符串“xyz”的字符串结束标志,然后执行for循环,先执行“ps--”,使ps指向字符“z”,故puts(ps)输出结果为“z”:再次执行“ps--”,使ps指向字符“y”,故puts(ps)输出结果为“yz”:再次执行“ps--”,使ps指向字符'x',故puts(ps)输出结果为“xyz”,退出循环。所以,C选项正确。

43.D解析:在C语言中,double类型数据占8个字节、long型占4个、unsignedint和int型一样占2个、char型占1个。所以本题应该选择D。

44.C解析:限制使用GOTO语句是结构化程序设计的原则和方法之一,但不是绝对不允许使用GOTO语句。其他3项为结构化程序设计的原则。

45.D解析:本题考查C语言的基本基础知识。在C程序中,注释用符号“/*”开始,而以符号“*/”结束。程序的注释可以放在程序的任何位置。通常将注释放在程序的开始,以说明本程序的功能;或者放在程序的某个语句后面,以对此语句的功能进行描述。无论将注释放有何处,在程序进行编译时,编译程序不会处理注释的内容;且注释内容也不会出现在目标程序中。

46.D解析:本题考核的知识点是用户的标识符。在C语言中,合法的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或者下划线,如:acd,d_ad、_adf124,_124等都是合法的标识符号.而2asdf、_sd/=都不是合法的标识符.在C语言中大写字母和小写字母被认为是两个不同的字符,如:ACD和acd是两个不同的标识符号。选项D中用下划线作为第一个字符,这是不合法的,故选项D不正确,所以,4个选项中选项D符合题意。

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

48.A解析:数据库规范化的基本思想是逐步消除数据依赖中不合适的部分,根本思想是通过分解关系运算来消除多余的数据相关性。

49.A解析:条件表达式的一般形式为:表达式1?表达式2:表达式3;先求解表达式1,若为真则求解表达式2;若表达式1的值为假,则求解表达式3。本题中先判断i==j不等,执行j=7。然后执行x=7。故本题为A。

50.D解析:将—个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的ASCII码值放到存储单元中。

51.D解析:在定义结构体变量时,不能只用结构体名example或关键字struct进行定义,必需要用结构体类型名structexample定义,在引用结构体成员变量时,需要用结构体变量名进行引用,所以选D。

52.D解析:本题中a是长整型变量,故应将一个长整型常量赋值给a,选项A、B、C中的数值的末尾都没有加L或1,所以不正确。

53.C解析:线性结构,是指数据元素只有一个直接前件元素和直接后件元素。线性表是线性结构。栈和队列是指对插入和删除操作有特殊要求的线性表,树是非线性结构。

54.A解析:字符型变量用来存放字符常量,且只能存放一个字符。赋值反斜杠线“\\”,必须用转义字符实现,即ch='\\\\',所以选项A)错误;字符型变量可以赋0~255之间的ASCII码值,整型数据和字符型数据有时可以通用,所以选项B)正确;可以将NULL赋给一个字符型变量,NULL代表一个空字符,相当于0,选项C)正确;'\\xaa'表示的是1~2位16进制数所代表的字符,所以选项D)正确。

55.A解析:单元测试的步骤如下:

①理解需求和设计。清楚被测试模块在整个软件中所处的位置。一个原则是:好的设计,各模块只负责完成自己的事情,层次与分工明确。单元测试时,可以不测试不属于被测模块所负责的功能,以减少测试用例的冗余。

②概览源代码。浏览源代码,初步检查源代码的编码风格与规范,大致估算测试工作量,确定模块的复杂程度,初步制定测试的优先级等。

③精读源代码。认真阅读和分析代码,理解代码的业务逻辑,检查代码与设计是否相符,仔细研究逻辑复杂的模块,可采用一些检查列表来检查程序可能会出现的问题。

④设计测试用例。综合运用白盒测试方法(并结合黑盒测试方法)设计测试用例,包括功能测试、性能测试等,要达到一定的测试覆盖率。本题正确答案为选项A。

⑤搭建单元测试环境。这个阶段主要就是写桩模块和驱动模块,然后驱动模块想办法获取被测试模块对数据的处理结果,并判定返回的实际结果与测试用例的预

期结果是否一致,通过测试框架来记录执行的结果,对于出现的错误,还需统计错误的信息,供执行完之后分析。

⑥执行测试。运行写好的驱动模块完成对被测试模块的测试。

⑦补充和完善测试用例。在测试过程中不断补充测试用例,直到满足要求为止。

⑧分析结果,给出评价。根据测试的结果分析、查找错误的原因,并找到解决的办法。测试结束之后,根据测试过程的数据统计,给出被测试对象评价。

56.A队列是一种特殊的线性表,只允许在表的一端插八元素,在表的另一端删除元素,插入元素的一端叫“队尾”,删除元素的一端叫“队头”。先插入的元素先被删除,是按“先进先出”的原则组织数据的。

【知识拓展】“队列”和“栈”都是一种特殊的线性表。之所以称之为“队列”,其形式如“排队”。要讲究“先来后到”,先进先出,后进后出。

57.A解析:在C语言中,“%”运算符两侧的运算数必须是整型。

58.C答案C

解析:在语句“k=*f(a,b)”中,由于“()”的优先级高于“*”,所以“*f(a,b);”表示其返回类型为指针的带有两个整型参数的函数。

59.B

60.B解析:在C语言中,数组的下标默认为0,因此数组p的下标范围为:0~7。程序循环过程为:第1次循环i=0,执行循环,并且i自加,得i=1,因此p[i]为p[1]=12,12%2=0,不执行后面的语句;接着进行第2次循环,此时i=1,小于7执行循环,并且i自加,得i=2,因此p[i]为p[2]=13,13%2=1,执行后面的语句;这样一直到退出循环。最后j的值为j=13+15+17=45。

61.A选项B不能把一个字符串赋值给一个字符变量,选项c和D犯了同样的错误是把字符串赋给了数组名。

62.A本题考查高级语言的数据类型。其中属于构造类型的主要有结构体类型、联合体类型,即共用体类型和数组类型。

63.CC语言不仅可以递归调用,还可以对自己进行递归调用,但是,不允许在函数中再次定义函数,c语言中的coutinue语句,可以通过改变其结构来实现。

温馨提示

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

评论

0/150

提交评论