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

下载本文档

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

文档简介

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

一、单选题(20题)1.

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

A.局部变量说明为static存储类,其生存期将得到延长

B.全局变量说明为static存储类,其作用域将被扩大

C.任何存储类的变量在未赋初值时,其值都是不确定的

D.形参可以使用的存储类说明符与局部变量完全相同

3.数据库系统的核心是()。

A.数据模型B.数据库管理系统C.数据库D.数据库管理员

4.有下列程序:程序执行后的输出结果是()。

A.654321

B.65432

C.65453452

D.654534521

5.有以下程序:#include<stdio.h>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);

6.已定义以下函数“intfun(int*p){return*p;}”,fun函数的返回值是()。

A.—个整数B.不确定的值C.形参p中存放的值D.形参p的地址值

7.有以下程序:#include<stdio.h>int*f(int*s){s[1]+=6;*s=7;s+=2;returns;}main(){inta[5]={1,2,3,4,5},*p=a;P=f(P);printf(“%d,%d,%d\n”,a[0],a[1],*p);}程序运行后的输出结果是()。

A.9,8,9B.7,8,7C.7,8,3D.1,2,1

8.程序段:intx=12;doub1ey=3.141593;printf("%d%8.6f"x,y);的输出结果是______。A.123.141593B.123.141593C.12,3.141593D.123,1415930

9.如果最常用的操作是取第i个结点及其前驱,则采用()存储方式最节省时间。A.单链表B.双链表C.单循环链表D.顺序表

10.若有以下程序:inta=1,b=2;a=a^b;b=b^a;则执行以上语句后a和b的值分别是()。A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2,b=l

11.关于C语言中数的表示,以下叙述中正确的是()。

A.只有整型数在允许范围内能精确无误地表示,实型数会有误差

B.只要在允许范围内整型数和实型数都能精确地表示

C.只有实型数在允许范围内能精确无误地表示,整形数会有误差

D.只有用八进制表示的数才不会有误差

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

13.具有20个结点的二叉树,其深度最多为_______。

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

14.定义根节点深度为1,有n个元素的完全二叉树的深度是()

A.D(n)=log2(n)

B.D(n)=1+log2(n)

C.D(n)=n+log2(n)

D.D(n)=1+n*log2(n)

15.

16.使用下列二维图形变换矩阵A=a*T,,其中,a是行向量(xy1),是齐次坐标形式的二维点。给定的变换矩阵T如下所示,则将产生的变换结果为()A.图形放大2倍

B.图形放大2倍,同时沿X、Y坐标轴方向各移动一个单位

C.沿X坐标轴方向各移动2个单位

D.沿X坐标轴放大2倍,同时沿X、Y坐标轴方向各移动一个单位

17.以下关于结构化程序设计的叙述中正确的是()。

A.一个结构化程序必须同时由顺序、分支、循环三种结构组成

B.结构化程序使用goto语句会很便捷

C.在C语言中,程序的模块化是利用函数实现的

D.由三种基本结构构成的程序只能解决小规模的问题

18.

19.利用fseek函数可实现的操作是()。

A.实现文件的顺序读写B.改变文件的位置指针C.实现文件的随机读写D.以上答案均正确

20.微型计算机的运算器、控制器及内存储器组合在一起,称之为()

A.ALUB.CPUC.MPUD.主机

二、2.填空题(20题)21.以下程序的运行结果是()。main(){inta=1,b=2,c;if(a>B)c=1;elseif(a==B)c=0;elsec=-1;printf("%d\n",C);}

22.以下程序是求矩阵a、b的和,结果存入矩阵c中,请填空。#include<stdio.h>main(){inta[4][4]={1,2,6,7},{0,4,2,-8},{1,4,5,2},{2,4,6,8}};intb[4][4]={{-4,0,7,9},{2,-7,7,4),{6,9,0,1),{8,8,6,5)};inti,j,c[4][4];for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=();for(i=0;i<4;i++)for(j=0;j<4;j++)printf("%d",c[i][j]);}

23.设有以下程序,为使之正确运行,请在横线中填入应包含的命令行。(注:try_me()函数在a:\myfile.txt中有定义。)

______

main()

{printf("\n");

try_me();

printf("\n");}

24.若有如下结构体说明:

structSTRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。

【】t[20]

25.为了便于对照检查,测试用例应由输入数据和预期的【】两部分组成。

26.在运算过程中,能够使空表与非空表的运算统一的结构是【】。

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

fun(intx,inty,intz)

{z=x*x+y*y;}

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

}

28.函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下

1

11

121

1331

14641

其构成规律是:

(1)第0列元素和主对角线元素均为1

(2)其余元素为其左卜方和正上方元素之和

(3)数据的个数每行递增1

请将程序补充完整。

#defineN6

voidyanghui(intx[N][N])

{inti,j;

x[0][0]=1;

for(i=1;j<N;i++)

{x[i][0]=______=1;

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

x[i][j]=______;

}

}

29.一个项目有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体“项目”的联系属于【】的联系。

30.已有定义:charc=′′;inta=1,b;(此处c的初值为空格字符),执行b=!c&&a;后b的值为【】。

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

intfun(int*x,intn)

{if(n==0)returnx[0];

elsereturnx[0]+fun(x+1,n-1);

}

main()

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

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

32.若有以下程序:

intf(intx,inty)

{

return(y-x)*x;

}

main()

{

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

d=f(f(3,4),f(3,5));

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

}

执行后输出的结果是【】。

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

#include<stdio.h>

main

{intk=4,m=3,p;

p=func(k,m);

printf("%d",p);

p=func(k,m);

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

func(a,b)

inta,b;

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);}

34.在C语言中,可以利用【】,将一个表达式的值转换成指定的类型。

35.下面程序的功能是将字符串a下标值为偶数的元素由小到大排序,其他元素不变,请填空。

#include<stdio.h>

main()

{chara[]="labchmfye",t;

inti,j;

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

for(j=i+2;j<9;【】)

if(【】)

{t=a[i];a[i]=a[j];a[j]=t;j++;}

puts(a);

printf("\n");

}

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

inta=5;

fun(intB)

{staticinta=10;

a+=b++;

printf("%d",A);

}

main()

{intc=20;

fun(C),

a+=C++;

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

}

37.下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其他元素不变。请填空。

#include<stdio.h>

#include<string.h>

main()

{chara[]="clanguage",t;

inti,j,k;

k=strlen(a);

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

for(j=i+2;j<=k;j+=2;)

if(【】)

{t=a[i];a[i]=a[j];a[j]=t;}

puts(a);

printf("\n");

}

38.请用位运算实现下述目标(设16位二进制数的最低位为零位):

(1)输出无符号正整数m的第i个二进制位的数值。

(2)将m的第i个二进制位置1,其余的位不变,然后输出m。

#include"stdio.h"

【】

main()

{

unsignedk,i,m=0;

scanf("%d%d",&m,&i);

k=【】;

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

k=pow(2,i);

m=【】;

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

}

39.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【】的设计来实现。

40.表示条件;10<x<100或x<0的C语言表达式是【】。

三、1.选择题(20题)41.两次运行下列的程序,如果从键盘上分别输入3和1,则输出结果是()。main(){intx;scanf("%d",&x);if(x++>2)printf("%d",x);elseprintf("%d\n",x--);}

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

42.下述关于数据库系统的叙述中,正确的是()。

A.数据库系统减少了数据冗余

B.数据库系统避免了一切冗余

C.数据库系统中数据的一致性是指数据类型一致

D.数据库系统比文件系统能管理更多的数据

43.以下定义语句中正确的是

A.inta=b=0;

B.charA=65+1,b='b';

C.floata=1,*b=&a,*c=&b;

D.doublea=0.0;b=1.1;

44.若要说明一个类型名STP,使得定义语句STP轧等价于char*s;,以下选项中正确的是()。

A.typedefSTPchar*s;

B.typedef*charSTP;

C.typedefSTP*char;

D.typedefchar*STP;

45.实体是信息世界中广泛使用的一个术语,它用于表示()。

A.有生命的事物B.无生命的事物C.实际存在的事物D.一切事物

46.用C言编写的代码程序()。

A.可立即执行B.是个源程序C.经过编译即可执行D.经过编译解释即可执行

47.下列程序的输出结果是()。#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

48.若在fopen函数中使用文件的方式是"wb+",该方式的含义是()

A.为读/写打开一个文本文件

B.为输出打开一个文本文件

C.为读/写建立一个新的文本文件

D.为读/写建立一个新的二进制文件

49.有以下函数定义:voidfun(intn,doublex){......}若以下选项中的变量都已正确定义并赋值,则对函数fun正确调用语句是______。

A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfun(n,x);

50.设有定义语句intx[6]=(2,4,6,8,5,7.),*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是

A.for(i=0;i<6;i++)printf(“%2d”,*(p++));

B.for(i=0;i<6;i++)printf(“%2d”,*(p+i));

C.for(i=0;i<6;i++)printf(“%2d”,*p++);

D.for(i=0;i<6;i++)printf(“%2d”,*(p)++);

51.若执行下述程序时,若从键盘输入6和8时,结果为main(){inta,b,s;scanf("%d%d",&a,&b);s=aif(a<b)s=b;s*=s;printf("%d",s);}

A.36B.64C.48D.以上都不对

52.有以下程序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

53.设有程序段:intk=12:while(k=1)k=k-1:则下列描述中正确的是()。

A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次

54.从一个具有n个结点的单链表中查找其值等于k的结点时,在查找成功的情况下,需平均比较______个结点

A.nB.n/2C.(n-1)/2D.(n+1)/2

55.以下程序的输出结果是()。#inClude<stdio.h>main(){inta,b,d=241;a=d/100%9;b=(-1)&&(+1);printf("%d,%d",a,b);}

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

56.下列说法正确的是

A.int(**def)[10];----def指向一个指针,该指针指向10个整型变量构成的数组

B.int*(*gh[10]);---gh指向一个指针,该指针指向10个整型变量构成的数组

C.int*(*gh[10]);---gh是一个指针,指向由10个指向整型变量的指针构成的数组

D.A,C均正确

57.有以下函数fun(char*a,char*b){while((*a!='\0')&&(*b!='\0')&&(*a==*b)){a++;b++;}return(*a-*b);}该函数的功能是______。

A.计算a和b所指字符串的长度之差

B.将b所指字符串连接到a所指字符串中

C.将b所指字符串连接到a所指字符串后面

D.比较a和b所指字符串的大小

58.有下列程序:#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序运行后,若从键盘输入(从第1列开始)123<CR>45678<CR>则输出结果是()。

A.1267B.1256C.1278D.1245

59.已定义以下函数:fun(Char*p2,char*p1){while((*p2=*p1)!='\0'){p1++;p2++;}}函数的功能是()。

A.将p1所指字符串复制到p2所指内存空间

B.将p1所指字符串的地址赋给指针p2

C.对p1和p2两个指针所指字符串进行比较

D.检查p1和p2两个指针所指字符串中是否有'\0',

60.某二叉树中度为2的结点有10个,则该二叉树中有()个叶子结点。

A.9B.10C.11D.12

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

62.

63.若变量均已正确定义并赋值,以下合法的c语言赋值语句是()。A.x---y=--5;B.x--n%2.5;C.x+n=i;D.x=5--4+1;

64.

65.

已知有如下结构体:

structsk

{inta;

floatb;

}data,*p;

若有P=&data,则对data的成员a引用正确的是()。

A.(*p).data.aB.(*p).a;C.p->data.aD.p.data.a

66.

67.

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

A.20,024,0x14

B.20,24,14

C.20,0x14,024

D.20,20,20

69.有以下程序:main{inta=1,b=3,C=5,*P;int*p1=&a,*p2=&b,*p3=&c;*p=*p1*(*p2);}执行后的输出结果是()。A.1B.2C.3D.4

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

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

71.

72.

73.(64)在单链表中,增加头结点的目的是()

A.方便运算的实现

B.使单链表至少有一个结点

C.标识表结点中首结点的位置

D.说明单链表是线性表的链式存储实现

74.设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i个元素的地址为()。

A.P+i*2B.P+(i-1)*2C.P+(i-1)D.P+i

75.设有定义:,以下不能计算出一"/Pchar型数据所占字节数的表达式是()。

76.有如下程序

#include"stdio.h"

fun(inta,intb)

{ints;

s=a*(b/4);

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

main()

{inta=16,b=10;

fun(a,b);

}

该程序的输出结果是

A.16B.32

C.40D.80

77.在数据管理技术的发展过程中,先后经历了人工管理阶段、文件系统阶段和数据库系统管理阶段。其中数据独立性最高的阶段是

A.数据库系统B.文件系统C.人工管理D.数据项管理

78.有以下程序:

程序的运行结果是()。

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

79.有以下程序:

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

A.55.B.50C.45D.60

80.下列选项中,不是一个算法的基本特征的是()。

A.完整性B.可行性C.有穷性D.拥有足够的情报

五、程序改错题(1题)81.下列给定程序中,函数fIm和funx的功能是:用二分法求方程的一个根,并要求绝对误差不超过0.001。

.例如,若给m输入一100,n输入90,则函数求得的二个根为2.000。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,定义了NxN的二维数组,并在主函数中赋值。请编写函数fun(),其功能是求出数组周边元素的平均值并将其作为函数值返回给主函数中的s。例如,若a数组中的值为0127919745238314568259141则返回主程序后s的值应为3.375。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1#include<stdio.h>2#include<conio.h>3#include<stdlib.h>4#defineN55doublefun(intw[][n])6{78}9voidmain()10{11FILE*wf;12inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,13inti,j;14doubles;15system("CLS");16printf("***Thearray***\n");17for(i=0;i<N;i++)18{for(j=0;j<N;j++)19{printf("%4d",a[i][j]);}20printf("\n");21}22s=fun(a);23printf("***TheResult***\n");24printf("Thesumis:%lf\n",s);25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%if",s);28fclose(wf);29/******************/30}

参考答案

1.B

2.A解析:局部变量在执行到它所在的程序块时产生,执行完时被摧毁,而静态局部变量的生存期将一直延长到程序运行结束,故选项A正确;全局变量的只有一种静态存储类别,故全局变量说明为static存储类,和没有说明为static存储类其生存期都是一直延长到程序运行结束,故选项B不正确:未赋初值的局部变量的初值是随机的,故选项C不正确;形参只能是一般局部变量,不能使用任何存储类说明符,故选项D不正确。所以,4个选项中选项A符合题意。

3.B解析:数据库管理系统是数据库系统的核心,是负责数据库的建立、使用和维护的软件。数据库管理系统建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过数据库管理系统。另外,数据库管理系统还承担着数据库的安全保护工作,按照数据库管理员所规定的要求,保证数据库的完整性和安全性。

4.C程序首先定义整型变量a和b,a的初值为123456。接着通过while循环,判断a的值是否为0,若不为0,则执行循环体。每次循环将a当前值的个位数字(a%10)赋给b,a自身除以10。再通过switch语句判断b的值执行对应分支语句。所以对应a的每个个位数,b的取值为6,5,4,3,2,1。当b取值为6时,执行default,输出6,接着继续执行case1,通过break退出switch。执行下一次循环,当b取值为5时,执行case5输出5。执行下一次循环,当b取值为4时,执行case4输出4,继续执行case5输出5。接着执行下一次循环,当b取值为3时,执行case3输出3,执行case4输出4,执行case5输出5;当b取值为2时,执行case2输出2,通过break退出switch;当b取值为1时,执行break,此时a的取值为0,循环终止。综上,程序输出结果为:65453452。本题答案为C选项。

5.D运算符“()”的优先级高于运算符“*”。“(*f)()”定义函数指针,f是指向函数的指针。执行语句“f=add;”,将函数add的首地址赋给指针f,所以调用函数add可以写为f。函数的返回值是整型,不是指针类型,不能用运算符,故*f(a,b);”的调用方式错误。故本题答案为D选项。

6.A函数返回值为指针变量指向的数据,该数据已被定义为整型。故本题答案为A选项。

7.C在main函数中调用了f函数使形参s指向数组a。执行“S[1]+=6”;语句,则“a[1]=8;”执行“*s=7;”语句,则“a[0]=7”;执行“s+=2;”语句,则s指向数组的第3个元素并返回s。调用后,函数返回值赋给指针P,则*P=3,因此输出的结果为7,8,3。故本题答案为C选项。

8.A解析:在printf函数常用的格式说明中,每个格式说明都必须用“%”开头,以—个格式字符作为结束,在此之间可以根据需要插入“宽度说明”、左对齐符号“-”、前导零符号“0”等。本题中用到了d和f,d代表输出符号的十进制整型数,f代表以带小数点的数学形式输出浮点数(单精度和双精度数)。对于float和double类型的实数,可以用“n1.n2”的形式来指定输出宽度(n1和n2分别代表—个整常数),其中n1指定输出数据的宽度(包括小数点),n2指定小数点后小数位的位数,由于输出格式是以紧凑格式输出,因此选项A是正确的。

9.D

10.B本题考查按位异或的用法。按位异或运算的规则是:两个运算数的相应二进制位相同,则结果为0,相异则结果为1。b=2的二进制为00000010,a=1的二进制为00000001,a=a^b一00000011,转化为十进制后为3,b=b^a=00000010^00000011=00000001,即1。

11.A当数据类型是实数时,在存储过程中,当小数部分无限长时,会存在小数部分的截断,会存在误差,所以答案选择A。

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

13.D

14.B

15.B

16.D

17.C解析:结构化程序设计是指将待开发的软件系统划分为若干个相互独立的模块,与具体的语句结构无关。Goto语句的滥用会导致程序的可读性降低。三种基本结构构成的程序依然可以解决大规模的问题,只是不利于复用。

18.B

19.D解析:改变文件位置指针函数fseek()的功能:①改变文件的位置指针;②辅助实现文件的顺序读写;③辅助实现文件的随机读写。

20.D

21.-1-1解析:if~else语句的形式:if(表达式)语句1elseif语句2else语句3它的功能是:若表达式的值为真,执行语句1,并跳过其他语句,执行ifelse语句的下一条语句,若表达式的值为假,跳过语句1,执行语句2,依次往下判断;a=1,b=2,条件a>b不成立,继续判断a==b,仍不成立,则执行c=-1,输出-1。

22.a[i][j]+b[i][j]a[i][j]+b[i][j]解析:求两个矩阵的和只要将对应元素相加即可。

23.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本题考查了函数的存储分类的概念。如果没有特别说明,函数的存储范围是从定义函数的位置到文件的结尾,如果其他文件想使用这个函数,需要用ginclude文件包含命令将定义函数的文件包含进来。

24.strudctSTRUstrudctSTRU解析:结构件类型是构造数据类型,是用户自己定义的一种类型。

结构体类型的定义:

struct结构体类型名

{

成员项表;

};

定义结构体变量的的形式为:

struct结构体类型名变量1,变量2,...?

其中变量包括;一般变量、指针变量、数组变量等。

25.输出结果输出结果解析:注意:测试的基本方法和步骤。

26.循环链表循环链表解析:在链表的运算过程中,采用链接方式即循环链表的结构把空表与非空表的运算统一起来。循环链表具有两个特点:①在循环链表中增加了一个表头结点,其数据域为任意或根据需要来设置,指针域指向线性表的第一个元素的结点。循环链表的头指针指向表头结点。②循环链表中最后一个结点的指针不是空,而是指向表头结点。

27.3131解析:在函数调用时,形参值和改变,不会改变实参的值。

28.x[i][i]x[i-1][j-1]+x[i-1]或x[i-1][j]+x[i-1][j-1]x[i][i]\r\nx[i-1][j-1]+x[i-1]或x[i-1][j]+x[i-1][j-1]解析:本题考核的知识点是函数与算法结合在一起的应用。在程序中用两重循环。在第一层循环中将每行的第0列赋值为1,对角线上的元素赋值为1显然在第一个空中应该填入对角线上的元素即x[i][i]在第2重循环中给每行其他元素赋值,而在每行中除了第0列和对角线的元素外其他元素为其对应的上一行中同列和同列的前一列的元素相加,所以在第二个空中应该填入x[i-1][j-1]+x[i-1][j]。

29.一对多或1:N一对多或1:N解析:两个实体集间的联系实际上是实体集间的函数关系,这种函数关系可以有三种,即一对一(1:1)的联系、一对多(1:N)或多对一(N:1)的联系和多对多(N:N)的联系。

30.11解析:字符空格的ASCII码不为0,所以本题中表达式\ue008!c\ue009的值为0,b=0&&1的结果显然为0。

31.1010解析:题目中的fun()函数直接调用了自身,所以它是递归函数。函数中只有一条if语句,意思是:若n为0,则返回x所指内容(x[0]等价于*x),否则返回x所指内容加上fun(x+1,n-1)。即,当n>0时,fun(x,n)=x[0]+fun(x+1,n-1)=x[0]+x[1]+fun(x+2,n-2)=…=x[0]+x[1]+…+x[n];当n=0时,fun(x,n)=x[0];当n<0时,函数将无限循环递归调用下去,因为n-1下去永远也不会等于0。所以本题中fun(a,3)=a[0]+a[1]+a[2]+a[3]=12+3+4=10。故应该填10。

32.99解析:在主函数中函数f(f(3,4),f(3,5))的返回值赋给do函数的第一个参数为f(3,4)的返回值,函数f(3,4)返回值为(4-3)*3=3,f(3,5)返回值为(5-3)*3=6,那么函数f(f(3,4),f(3,5))等价于函数f(3,6)其返回值为(6-3)*3=9。因此d被赋值为9,所以输出9。

33.10211021解析:此题主要考查了变量和函数的存储类别。函数的存储范围是从定义它的位置到文件结束为止,如果想在函数定义之前使用函数,需要先对函数进行声明。静态局部变量的生存期为整个程序的运行期间,作用域却为定义它的函数或局部范围内。

34.强制类型转换强制类型转换

35.j++a[i]>a[j]或a[j]<a[i]j++\r\na[i]>a[j]或a[j]<a[i]解析:题目要求排序的元素是下标值为偶数的元素,外循环循环4次,i的值分别为0、2、4、6,所以内循环也循环4次,i的值就应为2、4、6、8,在循环体中已经有了对j加1的操作,因此for后括号中的语句应再对j加1,保证下标为偶数。if语句的功能是如果后一个数比前一个数小则交换位置。

36.30253025解析:本题考核的知识点是变量的存储属性和算术运算的应用。本题涉及了自动变量、静态变量和外部变量。外部变量是定义在所有函数之外的变量,本题中inta=5定义了一个外部变量a,它是一个全局变量,即作用域是从定义的位置开始到本文件的结束;静态变量的存储空间在程序的整个运行期间是固定的(static),本题函数fun()中staticinta=10定义个一个静态变量a,此静态变量a是个静态的局部变量,即它的值只能在本函数中使用;自动变量是C程序中使用最多的一种变量,它的建立和撤消都是由系统在程序执行过程中自动进行的,auto是自动变量的存储类别标识符,如果省略auto,系统隐含认为此变量为auto,本题中main()中intc=20定义了一个自动变量c,此自动变量c是个静态的局部变量.算术运算中a+=b++相当于a=a+b,b=b+1.所以,在第一个ptine('%d',a)中a=a+b=10+20=30,第二个printf('%d',a)中a=a+c=5+20=25,即输出3025。

37.a[i]>a[j]a[i]>a[j]解析:本题中的嵌套的循环结构用在了数组元素的排序上。本题需要注意的一点是:由于题目只要求将下标值为偶数的元素从小到大排序,所以内外层for循环的条件变量变更条件都是+=2。最后通过条件a[i]>a[j]对元素大小进行判断并交换。

38.#include"math.h"m>>i&1m|k

39.测试实例测试实例解析:进行软件测试时,应精心设计测试实例和选择测试数据,以对系统进行全面测试。

40.(x>10&&x<100)||x<0

41.A解析:本题考查ifelse语句。首先scanf函数通过键盘读入x的值。当x=3时,第一个if语句,先判断条件,取x的值3和2比较,然后将x的值加1,发现条件成立,执行下列的printf语句,输出x的值4。当x=1时,第一个if语句,先判断条件,取x的值1和2比较,然后将x的值加1(x的值变为2),发现条件不成立,执行下列的else语句,先输出x的值2,再将x的值减1。

42.A解析:数据库是一个通用化的、综合性的数据集合,它可以为各种用户所共享,具有最小的冗余度和较高的数据与程序的独立性,而且能并发地为多个应用服务,同时具有安全性和完整性。即数据库系统减少了数据冗余,但不能避免一切冗余。所以选项A正确,选项B错误。在数据库管理阶段中,数据是结构化的,面向系统,数据冗余度小,从而节省了数据的存储空间,也减少了对数据的存取时间,提高了访问效率,避免了数据的不一致性。数据的不一致性,是指对数据的存取方式,选项C错误。数据库系统比文件系统能管理更多的数据,并非是数据库系统的特点,选项D错误。本题正确答案是A。

43.B解析:本题考查变量的定义方法。如果要一次进行多个变量的定义,则在它们之间要用逗号隔开,因此选项A)和D)错误。在选项C)中,变量c是一个浮点型指针,它只能指向一个浮点型数据,不能指向指针变量b,故选项C)错误。

44.D解析:指针类型的自定义的形式如下:typedef类型说明符*用户类型名。不难看出只有选项D是正确的定义形式。所以,D选项为所选。

45.C解析:实体是客观存在且可以相互区别的事物。实体可以是具体的对象,如一个学生,也可以是一个抽象的事件,如一次出门旅游等。因此,实体既可以是有生命的事物,也可以是无生命的事物,但它必须是客观存在的,而且可以相互区别。

46.B解析:C语言一种高级语言,C语言源程序经过C语言编译程序编译之后,生成一个后缀为.obj的二进制文件(称为目标文件),最后还要由称为“连接程序”(Link)的软件,把此.obj文件与C语言提供的各种库函数连接在一起,生成一个后缀.exe的可执行文件。显然C语言不能立即执行,故选项A错误;根据以上定义,选项C和选项D错误,所以,4个选项中选项B符合题意。

47.C解析:本题考查if语句.当执行到第一个满足(i*i>=20)&&(i*i<=100)这个条件的i出现时,通过break语句跳出循环,执行下列的printf语句。

48.D

49.C解析:函数调用的一般形式为:函数名(实参表列);,实参与形参的个数应相等,类型应一致,在调用函数时,不要指定其返回类型,对于返回类型为void的函数,不能作为赋值表达式的组成部分,所以选C。

50.D解析:本题考核的知识点是通过指针引用数组的元素。本题中首先定义了一个一维数组并初始化,接着定义了一个指针变量p指向数组x。因此可以通过指针p的下移,即每次加1引用数组x中的元素,来指向数组中的每个元素,这样循环6次即可引用数组的每个元素。选项A、B和选项C满足要求,而在选项D中表达式为(*p)++,该表达式是先取*p的值然后将其值加1,而没有将指针下移一位,故选项D不正确。所以,4个选项中选项D符合题意。

51.B解析:本题中a的值为6,b的值为8,最后s的值为8,s*=s等价于s=s*s。

52.B解析:本题是考查手工模拟执行程序的能力。a初值是1,循环开始时b值为1,由于a>=8为假,不执行break,但a%2==1为真,执行a+=5,a值变为6,再执行continue跳过不执行a-=3语句,而立即开始下一次循环。这时b值为2,由于a值为6,a>=8仍为假,不执行break,但a%2==1为假,不执行复合语句“{a+=5;continue;}”而执行a-=3,a值变为3。再开始下一次循环,这时b值为3。由于a值为3,a>=8仍为假,不执行break,但a%2==1为真,执行a+=5,a值变为8,再执行continue跳过不执行a-=3语句,而立即开始下一次循环。这时b值为4。由于a值为8,a>=8为真,执行break,停止for循环。此时输出的b值应为4。

53.C本题考查while,while循环表达式k-1是个赋值表达式而不是逻辑表达式,k的初值为l2不符合循环条件,所以循环体语句一次也不执行。

54.D解析:在n个结点的单链表中,查找第i个结点需要比较关键词的次数是i,所以,在查找成功的情况下,需平均比较的结点个数为(1+2+…+n)/n,即(n+1)/2。

55.B解析:变量a、b和d被定义为整型,所以d/100的值为2,2%9的值为2,则a=2。运算符&&表达式的值为非零值则整个逻辑表达式的值为真,即b=1。所以,选项B正确。

56.Dint*(*gh[10]);---gh是一个指针,指向由10个指向整型变量的指针构成的数组,int(**def)[10];---def指向一个指针,该指针指向10个整型变量构成的数组。

57.D解析:本题的函数fun的最后一个语句是“return(*a-*b);”,也就是返回指针a所指单元的值与指针b所指单元的值的差。显然这不可能是计算a和b所指字符串的长度之差,因此选项A的说法是错误的。由于函数中并没有出现。a=*b的赋值操作,所以选项B的连接字符串的说法也是错误的。同理,由于没有*a现*a=*b的赋值操作,所以选项C的复制字符串的说法也是错误的。排除了三个选项后,就可以断定正确选项是D。

58.D解析:当用scanf函数从键盘输入数据时,每行数据的末尾按下回车键(Enter键)之前,可以任意修改。但按下回车键putchar(c1)(Enter键)之后,scanf函数即接受了这一行数据,不能再回去修改。所以本题中,当输入123<CR>时,变量c1、c2、c3的值分别为1、2、3,当输入45678<CR>时,变量c5、c6的值4和5。所以用输出函数putchar(c1)输出1,putchar(c2)输出2,printf('%c%c\\n',c5,c6)输出45。所以选项D)为正确答案。

59.A解析:fun()函数中声明了两个字符串指针作为形参,在其函数体中用了一个while循环,首先while括号内表达式*p2=*p1是将p1所指的内容赋值到p2所指的存储空间中,然后在判断是否为'\\0',表达式的值为真时,执行循环体,指针p1和p2分别下移一位,当p1指向字符'\\n'时,表达式的值为假,循环结束,故此函数的功能是将p1所指字符串复制到p2所指内存空间中。所以,4个选项中选项A符合题意。

60.CC)【解析】根据二叉树的性质3:对任何一棵=叉树,度为0的结点(即叶子结点)总是比度为2的结点多…+个。

61.A第一次循环返回5+5为l0,第二次循环返回l4+14为28,所以选择A)。

62.C

63.A%取余操作数只能是整数,x+n和数值5不能作为赋值的左值,NC2B)、C)、D)错误。

64.A

65.B

\n本题主要考查结构指针:P=&data,访问结构体的成员。它可以通过结构变量访问,即data,可以用等价的指针形式:(*p).a和P->a来访问结构体变量中的成员。

\n

66.D

67.D

68.B本题的考查点是不同格式的数据输出。prinff函数对不同类型的数据用不同的格式字符,”%d”是以带符号的十进制形式输出整数(正数不输出符号);”%O”以八进制无符号形式输出整数(不包括前导符0);”%x”以十六进制无符号形式输出整数(不包括前导符0x)。

69.C本题中指针p1、p2、p3指向a、b、c值所存放的地址空间,然后再将指针变量*p1、*p2中值的乘积赋给指针变量*P,即赋给变量c,输出c的值3。

70.C

71.C

72.A

73.A

74.B

75.A根据题目中的定义可以知道sizeof(p),计算的是数组p中所有元素所占用的字节数,而不是char型数据所占字节数。

76.B题目给出的程序分为两个部分:主函数main和函数fun。main函数给出了整型变量a,b的初始值,并将整型变量a,b作为fun的实参。fun函数的功能是计算s的值并输出。对于整型变量,运算符“/”的作用是求出两个数除法所得商的整数部分。s=a*(b/4),a的初始值为16,b的初始值为10,b/4的结果为2,a*2得32。

77.A本题考查数据库中的数据管理技术相关知识。

数据管理技术的发展大体可以归为三个阶段:人工管理、文件系统和数据库管理系统。

人工管理阶段:计算机主要用于科学计算。外部存储器只有磁带、卡片和纸带等还没有磁盘等直接存取存储设备。软件只有汇编语言,尚无数据管理方面的软件。数据处理方式基本是批处理。这个阶段有几个特点:数据不保存;应用程序中包含自己要用到的全部

温馨提示

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

评论

0/150

提交评论