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

下载本文档

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

文档简介

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

一、单选题(20题)1.在下列几种排序方法中,要求内存量最大的是______。

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

2.在定义inta[5][6];后,数组a中的第10个元素是()。(设a[0][0]为第一个元素)

A.a[2][5]B.a[2][4]C.a[1][3]D.a[1][5]

3.有以下程序:

运行时,若输入123450<;回车>;,则输出结果是()。

A.66656B.6566456C.66666D.6666656

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

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

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

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

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

5.下列二维数组初始化语句中,不正确的是()。

A.intb[][2]={1,2,3,4,5,6,7};

B.intb[3][5]={0,0,0};

C.intb[][4]={{1,2},{3,4,5},{6}};

D.intb[3][2]={(1,2),(3,4),(5,6)};

6.以下叙述中错误的是()。

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

B.在程序的开头包含头文件stdio.h后,可以给指针变量赋NULL值

C.将一个指针变量中的值赋给另一个指针变量,则这两个指针变量指向同一地址

D.C语言中函数返回值的类型可以是简单的数据类型,也可以是指针类型

7.对称数组A中,每个元素的长度为4个字节,行下标i从1到8,列下标j从1到8。将其下三角中的元素连续存储在从首地址SA开始的存储器内,该数组按行存放是,则元素A[5][8]的起始地址为()。

A.SA+124B.SA+128C.SA+132D.136

8.有以下程序段intm=0,n=0;charc='a';scanf("%d%c%d",&m,&c,&n);printf("%d,%c,%d\n",m,c,n);若从键盘上输入:10A10<回车>,则输出结果是

A.10,A,10B.10,a,10C.1O,a,0D.10,A,0

9.在一个C语言源程序文件中所定义的全局变量,其作用域为()。

A.所在文件的全部范围B.所在程序的全部范围C.所在函数的全部范围D.由具体定义位置和extern说明来决定范围

10.若有如下程序段,其中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;

11.以下叙述中正确的是

A.语句inta[4][3]={{1,2},{4,5}};是错误的初始化形式

B.语句inta[4][3]={1,2,4,5};是错误的初始化形式

C.语句inta[][3]={1,2,4,5};是错误的初始化形式

D.在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵

12.下列选项中合法的赋值语句是()。

A.a=b=34B.a=34,b=34C.i-1;D.m=(int)(x+y);

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

A.“charc1,*c2,*c3[10];”是合法的变量定义语句

B.数组说明符的方括号中不能使用表达式

C.数组元素下标可以是非整数

D.若有定义“chararray[4];”,则语句“printf(“%c”,array[“3”]);”是合法的

14.以下函数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;”放错了位置

15.若有宏定义“#defineA_RECT(W,H)W*H”和以下程序段:intx=5,y=6,area1,area2;area1=A_RECT((x-1),(y+1));area2=A_RECT(x+3,y-1);执行上述程序段后,变量area1和area2的值分别是()。

A.022B.2840C.2822D.040

16.面向对象方法中,继承是指()。

A.一组对象所具有的相似性质B.一个对象具有另一个对象的性质C.各对象之间的共同性质D.类之间共享属性和操作的机制

17.有以下程序:

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

A.4B.34C.31D.32

18.阅读以下程序:#include<stdio.h>main(){intcase;floatprintF;printf("请输人2个数:");scanf("%d%fl"&case,&printF);printf("%dofof\n",case,printF);}该程序在编译时产生错误,其出错原因是()。A.定义语句出错,case是关键字,不能用做用户自定义标识符

B.定义语句出错,printF不能用做用户自定义标识符

C.定义语句无错,scanf不能作为输入函数使用

D.定义语句无错,printf不能输出case的值

19.若执行下面的程序时,从键盘上输入5和2,则输出结果是______。main(){inta,b,k;scanf("%d,%d",&a,&b);k=a;if(a<b)k=a%b;elsek=b%a;printf("%d\n",k);}

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

20.有以下程序:

main()

{intX,i;

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

{x=i;

if(X%2=O)

if(x%3=O)

if(X%7=0)

printf("%d,i)";

}

}

输出结果是()。

A.28

B.27

C.42

D.41

二、2.填空题(20题)21.软件危机出现于60年代末,为了解决软件危机,人们提出了【】的原理来设计软件,这就是软件工程诞生的基础。

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

#defineMAX(a,b)(a>b?a:b)+1

main()

{inti=6,j=8,k;

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

}

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

#include<stdio.h>

main()

{unionEXANPLE

{struct

{

intx;

inty;

}in;

inta;

intb;

}e;

e.a=1;

e.b=2;

e.in.x=e.a*e.b;

e.in.y=e.a+e.b;

printf("\n%d,%d",e.in.x,e.in.y);

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

}

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

main()

{

chara[]="123456789",*p;

inti=0;

p=a;

while(*p)

{

if(i%2==0)

*p='*';

p++;i++;

}

puts(a);

}

25.不改变关系表中的属性个数但能减少元组个数的是()。

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

main()

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

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

for(【】;I<10;I++)

a[I-1]=x[I]+【】;.

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

printf("");

}

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

28.树中度为零的结点称为______。

29.若按功能划分,软件测试的方法通常分为______测试方法和黑盒测试方法。

30.与二维表中的“行”的概念最接近的概念是()。

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

voidsstrcpy(char*s,char*t)

{while(*s++=______);}

main()

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

sstrcpy(str1,str2);

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

}

32.数据结构分为逻辑结构和存储结构,循环队列属于______结构。

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

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{intx==3,y=5,*p=&x,*q=&y;

swap(p,q);

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

}

34.计算机中存储容量的基本单位是字节,它的英文名称是【】。

35.目前实际存在和使用的广域网基本上都是采用______拓扑结构类型。

有以下程序:

#include<string.h>

structSTU

{intnum;

floatTotalScore;};

voidf(structSTUp)

{structSTUs[2]={{20041,703},{20045,537}};

p.num=s[1].num;p.TotalScore=s[1].TotalScore;

}

main()

{structSTUs[2]={{20041,703},{20042,580}};

f(s[0]);

printf("%d%3.0f\n",s[0].num,s[0],TotalScore);

}

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

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

main()

{intx,a=1,b=2,c=3,d=4;

x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;

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

}

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

strcen(chara[],charb[])

{intnum=0,n=0;

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

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

return(num);

}

38.下面rotme函数的功能是:将n行n列的矩阵A转置为A'。例如:

请填空。

#defineN4

voidrotate(inta[][N])

{inti,j,t;

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

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

{t=a[i][j];

【】;

a[j][i]=t;

}

}

39.若a=l,b=2,则表达式!(x=a)||y=b)&&0的值是______。

40.以下程序中,for循环体执行的次数是【】。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{

inti;

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

{…}

}

三、1.选择题(20题)41.有以下程序:#include<string.h>main(){charp[]={'a','b','c'},q[10]={'a','b','c'};printf("%d%d\n",strlen(p),strlen(q));}以下叙述中正确的是()。

A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

B.由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3

C.由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3

D.由于p和q数组中都没有字符串结束符,故长度都不能确定

42.有如下程序;

intfunc(inta,intb)

{return(a+b);}

main()

{intx=2,y=5,z=8,r;

r=func(func(x,y),z);printf("%\d\n",r);}

该程序的输出的结果是______。

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

43.下列函数定义中,会出现编译错误的是()。

A.max(intx,inty,int*z){*z=x>y?x:y;}

B.intmax(intx,y){intz;z=x>y?x:y;returnz;}

C.max(intx,inty){intz;z=x>y?x:y;return(z);}

D.intmax(intx,inty){return(x>y?x:y);}

44.有以下程序#include<string.h>main(){char*p=“abcde、Ofghjik\0”;printf(“%d\n”,strlen(p));}程序运行后的输出结果

A.12B.15C.6D.5

45.下列程序中的for循环执行的次数是______。#defineN2#defineMN+1#defineNUM2*M+1#main(){inti;for(i=1;i<=NUM;i++)printf("%d\n",i);}

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

46.下面的程序执行后,文件test.t中内容是______。#include<stdio.h>voidfun(char*fName,char*st){FILE*myf;inti;myf=fopm(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}

A.hello,B.newworldhelloC.newworldD.hello.rld

47.下面程序的输出结果是()main(){inti,x=023;printf("%d\n",--x);}

A.17B.18C.23D.24

48.在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示______。A.A.模块之间的调用关系B.程序的组成成分C.控制程序的执行顺序D.数据的流向

49.在下列各m的值中,能使m%3=2&&m%5=3&&m%7=2为真的是()

A.8B.23C.17D.6

50.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是()。

A.a,point,*&a

B.&*a,&a,*point

C.*&point,*point,&a

D.&a,&*point,point

51.计算机中,能够用来与外存交换信息的是______。

A.键盘B.RAMC.显示器D.ROM

52.有以下程序main(){inti=0,s=0;for(;;){if(i==3‖i==5)continue;if(i==6)break;i++;s+=i};printf("%d\n",s)}程序运行后的输出结果是

A.10B.13C.21D.程序进入死循环

53.有定义语句:intx,y;若要通过scanf("%d,%do,&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是

A.1112<回车>B.11,12<回车>C.11,12<回车>D.11,<回车>12<回车>

54.以下程序输出正确的是______。amovep(int*p,int(*A)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);amovep(p,a,3);printf("%d%d\n",p[2],p[5]);free(p);}

A.56B.25C.34D.程序错误

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

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

56.以下正确的程序段是

A.charstr1[]="12345",str2[]="abcdef";

B.charstr[10],*st="abcde";strcat(str,st);

C.charstr[10]=""。*st="abcde";strcat(str,st);

D.char*st1="12345",*st2="abcde";strcat(st1,st2);

57.若有运算符:>、=、<<、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为()。

A.%、sizeof、>、<<、=

B.sizeof、%、>、=、<<

C.sizeof、<<、>、%、=

D.sizeof、%、<<、>、=

58.设有下列定义:structsk{intm;floatx;}data,*q;若要使q指向data中的m域,正确的赋值语句是()。

A.q=&data.m;

B.q=data.m;

C.q=(structsk*)&data.m;

D.q=(structsk*)data.m;

59.若有定义inta[10],*p=a,则p+6表示()。

A.数组元素a[5]的值B.数组元素a[5]的地址C.数组元素a[6]的地址D.数组元素a[0]的值加上5

60.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是()。

A.(!E==0)B.(E>0||E<0)C.(E==0)D.(E!=0)

四、选择题(20题)61.以下选项中正确的定义语句是()。

62.

63.在下列关于二叉树的叙述中,选出正确的一项()。

A.在二叉树中,任何一个结点的度都是2

B.二叉树的度为2

C.在二叉树中至少有一个结点的度是2

D.一棵二叉树的度可以小于2

64.有三个关系R,S和T如下:

其中关系T由关系R和S通过某种操作得到,该操作为()。A.选择B.投影C.交D.并

65.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件),下面属于系统软件的是()。A.学生管理系统B.C语言编译程序C.UNIX操作系统D.数据库管理系统

66.设有定义:

67.以下关于retllm语句的叙述中正确的是()。

A.一个自定义函数中必须有一条return语句

B.一个自定义函数中可以根据不同情况设置多条retum语句

C.定义成void类型的函数中可以有带返回值的return语句

D.没有return语句的自定义函数在执行结束时不能返回到调用处

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

A.算法在执行过程中所需要的计算机存储空间

B.算法所处理的数据量

C.算法程序中的语句或指令条数

D.算法在执行过程中所需要的临时工作单元数

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

A.堆排序

B.直接插入排序

C.快速排序

D.直接选择排序

70.

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

#include<stdio.h>

main

{inti;

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

{if((i*i>=20)&&(i*i<=100))

break;

}

printf("%d\n",i*i;

}

A.49B.36C.25D.64

71.在C程序中有如下语句:char*func(intx,inty);它是()。

A.对函数func的定义。B.对函数func的调用。C.对函数func的原型说明。D.不合法的

72.若有条件表达式

则以下表达式中能完全等价于表达式(exp.的是()。

A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)

73.

设有定义:“inta;floatb;”,执行“scanf("%2d%f",&a,&b);”语句时,若从键盘输入876543.0<回车>,a和b的值分别是()。

A.876和543.000000

B.87和6.000000

C.87和543.000000

D.76和543.000000

74.若有以下定义和语句:

则输出结果是()。

A.107B.105C.55D.58

75.设有关系R和S,关系代数表达式为R一(R—S)表示的是()。

A.R∩SB.R—SC.RUSD.R÷S

76.以理对枚举类型名的定义中正确的是______。

A.enuma={one,two,three);

B.enuma{one=9,two=1three};

C.enuma={"one","two","three"};

D.enuma{"one","two"."three"};

77.

78.有以下程序

79.若有下列定义(设int类型变量占2个字节):inti=8,j=9;则下列语句:printf("i=%%d,j=%%d\n",i,j);输出的结果是()。A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9

80.有下列程序:

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]-t\0)%2)num=10*num+p[j][j]-0;

j+=2;

}

}

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

}

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

A.35B.37C.39D.3975

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:利用插入排序法对字符串中的字符按从大到小的顺序进行排序。插入法的基本方法是:先对字符串中的头两个元素进行排序,然后把第3个字符插入前2个字符中,插人后前3个字符依然有序,再把第4个字符插入前3个字符中,待排序的字符串已在主函数中赋予。例如,原始字符串为“goodluck”,则排序后的字符串为“uoolkgdc”。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数proc(),该函数的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.D解析:快速排序的基本思想是,通过一趟排序将排序记录分割成独立的两部

分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继

续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依

次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整

个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩

下的于表采用同样的方法,直到表空为止;归并:排序是将两个或两个以上的有序表组合

成一个新的有序表。

注意:各种排序方法实现过程及实现机制。

2.C

3.Bswitch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个e·*后面的常量表达式的值相等,就执行此ca*后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有ca$e后面的常量表达式都不等,则执行default后面前语句。然后退出。所以输入l时打印65,输入2时打印6,输入3时打印64,输入4时打印5,输入5时打印6。

4.C本题中int(*ptr)的含义是指向函数的指针变量,其为指向函数的指针变量,该函数返回一个int型数据,故选择C选项。

5.D解析:在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取0;C语言规定,对于二维数组,只可以省略第1个方括号中的常量表达式,而不能省略第2个方括号中的常量表达式;赋的初值不能多于事先定义好的数组元素个数。

在选项D)赋值表达式中,对每一维的元素赋初值应用{},而不是()。

6.A通过指针变量存取某个变量值的方式称为“间接存取”方式,选项A错误;头文件stdio.h中定义了NULL,在程序的开头包含stdio.h后,可以给指针变量赋NULL值,表示一个空指针,选项B正确;将一个指针变量中的值赋给另一个指针变量,这两个指针变量指向同一地址,选项C正确;C语言中函数返回值的类型可以是简单的数据类型,也可以是指针类型,选项D正确。故本题答案为A选项。

7.B

8.A解析:本题考核的知识点是scallf()函数输入格式。格式字符“%d”用于输入整数,“%C”用来输入字符。在输入时,系统把第一个10作为整数10赋给m,把随后的A作为字符赋值给c,后面的10作为整数赋给n,最后输出的结果为10,A,10所以,A选项为所选。

9.D

\n全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用extern对此全局变量进行说明,以便通知编译程序该变量是一个已在外部定义了的全局变量,这时全局变量的作用域从extern说明处起,延伸到该函数末尾。

\n

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

11.D二维数组在初始化时,可以省第1维,但是不可以省第2维。可以为部分数组元素初始化。A选项、B选项和C选项内的初始化都没有错误。因此D选项正确。

12.D解析:选项A)是一个合法的赋值表达式,但结尾没加分号,所以它不是一个赋值语句;选项B)是一个逗号表达式,也因为结尾没有加分号而不是合法的赋值语句,选项C)是一个算术表达式,虽然有分号,但这个表达式没有赋值操作,因此,也不是一条赋值语句。

13.AC语言规定定义数组时,数组的长度必须是整型常量,数组说明符的方括号中表达式只要是常量即合法,因此选项B错误。C语言规定,数组元素下标必须是非负整数,因此选项C错误。选项D中,“chararray[4]”数组的长度为4,“army[“3”]”中“3”是常量字符串,与C语言规定数组的下标必须是非负整数不符。故本题答案为A选项。

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

15.C带参数的宏定义的替换过程是:用宏调用提供的实参字符串,直接置换宏定义命令行中相应的形参字符串,非形参字符串保持不变。题干中,“area1=A_RECT((x-1),(y+1));”宏替换后为“area1=(x-1)*(y+1);”,“area2=A_RECT(x+3,y-1);”宏替换后为“area2=x+3*y-1;”。所以area1=4*7=28,area2=5+3*6-1=22。故本题答案为C选项。

16.D继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。

17.C本题重点考察二维数组名作为实参进行参数传递,在主函数中调用了fun函数,实参为二维数组名a和两个整数4.0,这样对应定义fun函数首部有三种形式,这里采用了第一种形式——行指针,这样在fun函数对s[i][j]进行操作实际上就是对主函数中的a[i][j]进行操作,再分析fun函数的作用便可知,是求二维数组第0列中最大的那个元素。因此C选项正确。

18.A本题中定义了整形变量case,但case是关键字,关键字不能用做标识符。单精度printF不是关键字,因为标识符区分大小写。所以A不正确。

19.C解析:本题考查简单的if...else语句。先执行条件if(a<b),显然不成立,则执行else语句。

20.C\n只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择c选巩。

\n

21.软件工程学软件工程学

22.99解析:本题考查宏定义与三目运算符的综合用法,宏定义是原样替换,本题中,如果a>b成立,则a+1的值为整个表达式的值,否则为b+1的值为整个表达式的值,(应注意后面的加1)。

23.4844

24.*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*

25.选择选择解析:关系数据库的专门关系运算包括选择、投影和连接3种,其中选择不改变关系表中的属性个数但能减少元组个数。

26.I=1x[I-1]I=1,x[I-1]解析:对于10个数,相临的两个数相加取和,总共要进行9次加法运算,所以空14处应填入I=1。相临的两个数相加取和,放在数组a中,x[0]与x[1]的和存放在a[0]中,所以空15处应填入x[I-1]。

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

28.叶子结点叶子结点解析:树中度为零的结点,也就是没有后件的结点,称为叶子结点。

29.白盒白盒解析:软件测试的方法分为白盒测试方法和黑盒测试方法.

30.元组元组解析:在关系模型中,数据结构用单一的二维表结构来表示实体及实体间的联系。一个关系对应一个二维表。二维表中的列称为属性,属性值的取值范围称为值域。二维表中的一行称为一个元组。

31.*t++或*(t++)*t++或*(t++)解析:主函数中定义了两个字符型数组st1l和str2,并且给str2赋初值“abcdefgh”,接着调用函数sstrcpy(str1,str2),将字符串str2的值赋给str1.在函数sstrcpy(*s,*t)中,用了一个while循环,每循环一次将形参指针t所指的字符赋给形参指针s所指向的存储空间,然后指针s和指针t都下移到下一个元素。所以空格处应该填*t++或*(t++)。

32.存储或物理或存储结构或物理结构存储或物理或存储结构或物理结构解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。供队列循环使用。可知,循环队列应当是物理结构。

33.3535解析:主函数中通过定义和赋初值使p和q分别指向了x和y,执行函数调用swap(p,q),把p和q中的地址值传给了形参指针变量a和b,此时a和b分别指向了主函数中的变量x和y。在函数swap()中交换了指针变量a和b的值,但并没有改变a和b所指向的内容,所以函数调用返回后x和y依旧是原来的值。故运行结果为35。

34.Brte

35.2004170320041703解析:由于参数传递只是将实参的值复制到形参中,形参与实参拥有各自的存储空间,因此形参的改变并不影响实参,所以并不改变s的情况。

36.11解析:因为在条件表达式(a<b)?a:b中,比较表达式a<b为真,所以x的值等于a的值等于1,后面两个条件表达式中的比较表达式都为真,所以最终x的值等于1。

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

38.j<Ia[i][j]=a[j][i]j<I\r\na[i][j]=a[j][i]解析:本题中要求将n行n列的矩阵A转置,即让数组中行上的元素变成对应列上的元素。即把对角线两边的元素对换,所以本题的第一个空白处应该填写j<i,第二个空白处填写交换对角线两边的元素的语句a[i][j]=a[j][i]。

39.00解析:根据运算符的运算顺序可知,该表达式最后运算的是与(&&)运算,而任何表达式与“0”进行“与”运算,结果都为0。

40.44解析:将程序中所有的宏替换掉可得:M=2+1,K=2+1*2+1/2=4,所以for循环共循环了K-1+1次,即4-1+1共4次。

41.A解析:在给p和q数组赋初值时,系统会自动添加字符串结束符,从题目中可以看出数组p和q都有3个字符,所以长度均为3。

42.D解析:函数func的功能是计算两个形参之和,并将值返回主调函数。所以:r=func(func(x,y),z)=func(func(2,5),8)=func(7,8)=15。

43.B解析:本题考核的知识点是函数的定义方法。选项B中在说明形参时,省略了第二个参数的类型,故选项B编译不能通过。

44.D解析:本题首先定义了一个字符型指针变量p,并用一个字符串给它赋值,然后调用printf()函数输出p所指向的字符串的长度。字符串的结束标记为“\\0”,其长度为“\\0”前的字符个数,故长度为5。

45.B

46.A解析:C语言中文件有文本文件与二进制文件,对文件的使用前必须先打开,打开方式有只读、写入、读写等方式。

47.B

48.A解析:让考生对常用的软件结构设计工具要有较深入的了解。常用的软件结构设计工具是结构图(SC-structureChart),也称程序结构图。其中,矩形内用于注明模块的功能和名字;箭头表示模块间的调用关系,带实心圆的箭头表示传递的是控制信息,带空心圆的箭头表示传递的是数据。注意:根据结构图设计思想,了解结构图构成的基本形式。

49.B

50.D本题主要考查指针变量对数值的引用。在题目中,首先定义了整型指针变量point和一个整型变量a,变量a的初值为4,然后是指针变量指向a,或者说将变量a所在存储单元的地址值赋给指针变量。

在选项A中,很显然,不全是地址,只有point表示地址,而*&a等价于*(&a),表示取一个数值。

在选项B中,也不都表示地址,其中*point表示数值,其他两个表示地址。

在选项C中,与选项B类似,其中的*point表示数值。

在选项D中,都表示地址,是题目的选择答案。

51.B解析:RAM中存储着当前使用的程序、数据、中间结果和与外存交换的数据,CPU根据需要可以直接读/写RAM中的内容。

52.D解析:本题考核的知识点是for循环,continue语句和break语句的运用。程序中for循环中省略了判断退出循环的表达式,for循环将由里面的break语句控制是否结束循环,第一次循环,第一条if语句后面括号里的表达式的值为假,所以该if语句不被执行,执行下面的第二条语句,此时该if语句表达式的值为假,所以该if语句也不执行,执行下面的语句,i++、s+=i,执行完毕后i的值为1,s的值为1,如此循环,直到第三次之后i,s的值都为3,继续第四次循环,显然这时满足第一条if语句的,执行后面的continue;该次循环结束从头开始下次循环,而i的值为3一直没有改变,所以第一条语句始终要执行,因此for循环将一直循环下去,所以,4个选项中选项D符合题意。

53.A解析:scanf()函数有两个参数,第一个参数为输入格式字符申;第二个参数为输入变量地址列表,在scanf()语句中非格式字符可以作为输入时数据的间隔,输入时必须原样输入,在本题中输入格式串为%d,%d其中“,”为非格式字符,所以输入时必须原样输入。

54.A解析:本题main函数中定义了指针p和二维数组a,通过函数amovep将数组的值存入指针p所指向的存储单元中,a的各各元素分别为:a[0][0]=1,a[0][1]=3,a[0][2]=5,a[1][0]=2,a[1][1]=4,a[1][2]=6,a[2][0]=0,a[2][1]=0,a[2][2]=0。通过malloc()函数绐指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中通过amovep(p,a,3)调用函数amovep,使得实参p与形参p,实参数组a与形参中指向数组的指针变量共用同一存储空间。最后输出p[2],p[5]为56。

55.A解析:位置指针当前值函数ftell()的基本调用格式为:ftell(fp)。

ftell()函数的参数说明:“fp”是指向文件的文件型指针。

ftell函数的功能:得到fp所指向文件的当前读写位置,即位置指针的当前值,如果函数的返回值为-1L,表示出错。

56.C解析:本题考查了一维字符数组的定义和初始化。选项C中str[10]初始化为空,可以不必进行类似''的空赋值,字符数组若没有进行初始化赋值,默认的字符为空,并且定义完str数组后,应该用“,”分隔而不是“。”,所以选项C错误。

57.D解析:主要考查运算符的优先级。sizeof的优

温馨提示

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

评论

0/150

提交评论