2022-2023年湖北省孝感市全国计算机等级考试C语言程序设计真题(含答案)_第1页
2022-2023年湖北省孝感市全国计算机等级考试C语言程序设计真题(含答案)_第2页
2022-2023年湖北省孝感市全国计算机等级考试C语言程序设计真题(含答案)_第3页
2022-2023年湖北省孝感市全国计算机等级考试C语言程序设计真题(含答案)_第4页
2022-2023年湖北省孝感市全国计算机等级考试C语言程序设计真题(含答案)_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

2022-2023年湖北省孝感市全国计算机等级考试C语言程序设计真题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有以下程序:#include<stdio.h>#include<stdlib.h>main{int*a,*b,*C;a=b=c=(int*)malloc(sizeof(int));*a=1;*b=2,*c=3;a=b:printf("%d,%d,%d\n",*a,*b,*c);}程序运行后的输出结果是()。A.3,3,3B.2,2,3C.1,2,3D.1,1,3

2.下列程序的输出结果是()。#include<stdio.h>main{inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=1;case1;case2:a+=2;default:a+=3;}}printf("%d",a);}A.19B.1C.6D.8

3.有以下程序:voidsum(int*a){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=1;i>0;i--)sum(&aa[i]);print("%d\n",aa[0]);}程序运行后的输出结果是______。

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

4.设主串T='aabaababaabaa',子串P:'abab',则简单模式匹配算法中直至匹配成功,单个字符比较的次数为()。

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

5.以下函数调用语句中含有实参个数为().func((exp1,exp2),(exp3,exp4,exp5));

A.1个B.2个C.4个D.5个

6.甲乙两个聪明人上街,捡到一张10块钱的购物卡,两人就想出一个办法来分配这张卡。两个分别将自己出的价格写在纸上,然后看谁出的价高就给谁,并且那个出价高的人要把出的钱给对方。现在甲有6块钱,乙有8块钱,甲乙双方都知道对方当前有多少钱并且都希望自己收益高于对方。问最后谁获得的钱多()

A.甲多B.乙多C.一样多D.有可能出现有人赔钱的情况

7.有以下程序main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序运行后的输出结果是______。A.2,3,3B.2,3,2C.2,3,1D.2,2,1

8.以下程序的输出结果是()。voidprt(int*m.intn){inti;for(i=0;i<n;i++)m[i]++;)main{inta[]={1,2,3,4,5),i;prt(a,5);for(i=0;i<5;i++)printf(“%d,”,a[i]);)A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7D.2,3,4,5,1

9.有如下程序#include<stdio.h>main(){FILE*fpl;fpl=fopen("f1.txt","w");fprintf(fp1,"abc");fclose(fp1);}若文本文件f1.txt中原有内容为:good,则运行以上程序后文件f1.txt中的内容为

A.goodabcB.abcdC.abcD.abcgood

10.以下程序的输出结果是______。charcchar(charch){if(ch>='A'&&ch<='z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%s\n",s);}

A.abe+ABC=DEFdef

B.abc+abe=defdef

C.abcaABCDEFdef

D.abcabcdefdef

11.在下列几种排序方法中,空间复杂度最高的是()

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

12.设有如下定义和语句:FILE*fp;intdata[10],i,n;fp=fopen(“abc.txt”,“r”);文本文件abc.txt中的数据为58192765190,其中第1个数据代表的是它后面数据的个数。若文件已正确打开,则以下程序段中能将文件的最后5个数据依次正确读入数组data[0]~data[4]中的是()。

A.fscanf(fp,“%d”,&n);for(i=0;i<n;i++)fscanf(fp,“%d”,&data[i]);

B.i=0;while(!feof(fp)){fscanf(fp,“%d”,&data[i]);i++;}

C.for(i=0;!feof(fp);i++)fscanf(fp,“%d”,&data[i]);

D.i=0;fscanf(fp,“%d”,&n);i++;while(!feof(fp)){fscanf(fp,“%d”,&data[i]);i++;}

13.数据库是______的集合,它具有统一的结构形式并存放于统一的存储介质内,可被各个应用程序所共享。

A.视图B.消息C.数据D.关系

14.有以下程序(函数fun只对下标为偶数的元素进行操作):#include<stdio.h>voidfun(int*n){inti,j,k,t;for(i=0;i<n-1;i+=2){k=i;for(j=i;j<n;j+=2)if(a[j]>a[k])k=j;t[a[i];a[i]=a[k];a[k]=t;}}main{intaa[lO]=[1,2,3,4,5,6,7],a;fun(aa,7);for(i=0;i<7;i++)printf("%d,",aa[i]);printf("n");}程序运行后的输出结果是()。A.7,2,5,4,3,6,1,

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

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

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

15.有以下程序:#include<stdio.h>main{intx=4,y;do{y=x;if(!y)printf(“x”);elseprintf(“y”):x--;}while(x);}程序的输出结果是()。A.xyyxB.yyyyC.yyxxD.yxyx

16.

17.有以下程序:main(){char*p[10]={"abc","aabdfg","dcdbe","abbcf',"cd"};printf("%d\n",strlen(p[4]));}执行后的输出结果是______。

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

18.下列程序段的时间复杂度为()。A.O(i+j)B.O(n)C.O(n2)D.O(i*j)

19.若有下列定义(设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

20.一个队列的入队序列是1,2,3,4,则队列的输出序列是()。

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

二、2.填空题(20题)21.问题处理方案的正确而完整的描述称为______。

22.若x、y和z均是int型变量,则执行下面表达式后的x值为【】。

x=(y=4)+(z=3)

23.下面程序的运行结果是______。

main()

{inti=0,j=10,k=2,s=0;

{i+=k;

if(i>j)

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

break;}

s+=i;}}

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

#include<stdio.h>

inta=5;

fun(intb)

{staticinta=10;

a+=b++;

printf("%d",a);

}

main()

{intc=20;

fun(c);

a+=c++;

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

}

25.以下程序的功能是:利用指针指向三个整型变量,并通过指针运算找出三个数中的最大值,输出到屏幕上。请填空。

main()

{intx,y,z,max,*px,*py,*pz,*pmax;

scanf("%d%d%d",&x,&y,&z);

px=&x;py=&y;pz=&z;pmax=&max;

【】;

if(*pmax<*py)*pmax=*py;

if(*pmax<*pz)*pmax=*pz;

printf("max=%d\n",max);}

26.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。

27.【】是数据库设计的核心。

28.如下图所示的二叉树后序遍历序列是【】。

29.若有定义inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},则初始化后,a[1][1]得到的初值是______。

30.有以下程序

main()

{intn=0,m=1,x=2;

if(!n)x-=1;

if(m)x-=2;

if(x)x-=3;

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

}

执行后输出结果是【】。

31.在计算机软件系统的体系结构中,数据库管理系统位于用户和【】之间。

32.若有下列定义和语句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

则输出结果为______。

33.以下函数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];}}

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

35.以下程序的运行结果是()。#defineA4#defineB(x)A*x/2main(){floatc,a=8.0;c=B(A;printf("%f\n",C);}

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

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

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

}

37.已有定义如下:

structnode

{intdata;

structnode*next;

}*p;

以下语句调用malloc函数,使指针p指向一个具有structnode类型的动态存储空间。请填空。

p=(structnode*)malloc(【】);

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

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

#inelude<stdio.h>

intf(inta[],intn)

{if(n>1)returna[0]+f(&a[1],n-1);

elsereturna[0];

}

main()

{intaa[3]={1,2,3},s;

s=f(&aa[0],3);printf("%d\n",s);

}

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

fun(intx,inty,intz)

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

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

}

三、1.选择题(20题)41.有以下程序main(){intk=5,n=0;while(k>0){switch(k){default:break;case1:n+=k;case2:case3:n+=k;}k--;}printf("%d\n",n);程序运行后的输出结果是

A.0B.4C.6D.7

42.以下程序的输出结果是______。main(){inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d\n",s);}

A.18B.19C.20D.21

43.下列选项中,不属于模块间耦合的是()。A.数据耦合B.标记耦合C.异构耦合D.公共耦合

44.有以下程序:matin(){char*s[]={"one","two","three"},*p;p=s[1];printf("%c,%s\n",*(p+1),s[o]);}执行后的输出结果是______。

A.n,twoB.t,oneC.w,oneD.o,two

45.在16位编译系统上,若有定义inta[]={10,20,30},*p=&a;,当执行p++后,下列说法错误的是()。

A.p向高地址移了一个字节B.p向高地址移了一个存储单元C.p向高地址移了两个字节D.p与a+1等价

46.数据库技术的根本目标是要解决数据的()。

A.存储问题B.共享问题C.安全问题D.保护问题

47.有以下程序:voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}main(){charstr1[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",str1);}程序运行后的输出结果是()。

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

48.以下不能定义为用户标识符是

A.MainB._0C._intD.sizeof

49.可在C程序中用作用户标识符的一组标识符是A.and2007

B.Date_y-m-d

C.HiDr.Tom

D.caseBigl

50.变量p为指针变量,若p=&a,下列说法不正确的有______。

A.&*p==&aB.*&a==aC.(*p)++==a++D.*(p++)==a++

51.已经定义ch为字符型变量,以下赋值表达式中错误的是______。

A.ch='\'B.ch=62+3C.ch=NULLD.ch='\xaa'

52.有程序段:int*p,a,b=1;p=&a;*p=10;a=*p+b;执行该程序段后,a的值是()

A.12B.11C.10D.编译出错

53.数据独立性是数据库技术的重要特点之一。所谓数据独立性是指()

A.数据与程序独立存放

B.不同的数据被存放在不同的文件中

C.不同的数据只能被对应的应用程序所使用

D.以上三种说法都不对

54.有如下程序

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

55.有以下程序main(){inta=15,b=21,m=0;switCh(a%3){case0:m++;break;case1:m++;switch(b%2){default:m++;case0:m++;break;}}printf("%d\n",m);程序运行后的输出结果是

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

56.以下对结构体类型变量td的定义中,错误的是______。

A.typedefstructaa{intn;floatm;}AA;AAtd;

B.structaa{intn;floatm;}td;structaatd;

C.struct{intn;floatm;}aa;

D.struct{intn;floatm;}td;structaatd;

57.设有intx=11:表达式(x++*1/3)的值是()。

A.3B.4C.11D.12

58.以下只有使用时才为该类型变量分配内存的存储类型说明是()

A.auto和static

B.auto和register

C.register和static

D.extern和register

59.下面语句的输出结果是______。printf("/od\n",strlen("\t\"\065\xff\n"))

A.14B.8C.5D.输出项不合法,无正常输出

60.有以下定义

#include<stdio.h>

chara[10],*b=a;

不能给a数组输入字符串的语句是

A.gets(A)B.gets(a[0]);C.gets(&a[0]);D.gets(B);

四、选择题(20题)61.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是main(){int*p,*q,a,b;p=&a;printf("inputa:");scanf("%d",*p);}

A.*p表示的是指针变量p的地址

B.*p表示的是变量a的值,而不是变量a的地址

C.*p表示的是指针变量p的值

D.*p只能用来说明p是一个指针变量

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

A.abe,a23B.abe,123C.123,abeD.321,cba

63.要求以下程序的功能是计算:s=1+1/2+1/3+…+1/100。

程序运行后输出结果错误,导致错误结果的程序行是()。

A.s=1.0;

B.

C.S=S+1/n;

D.

64.下列叙述中正确的是()。A.数据库系统可以解决数据冗余和数据独立性问题,而文件系统不能

B.数据库系统能够管理各种类型的文件,而文件系统只能管理程序文件

C.数据库系统可以管理庞大的数据量,而文件系统管理的数据量较少

D.数据库系统独立性较差,而文件系统独立性较好

65.

66.

67.有以下程序

#include<stdio.h>

#defineN4

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

{inti;

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

b[i]=a[i][i];

}

main()

{intx[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;

fun(x,y);

for(i=0;i<N;i++)printf("%d,",y[i]);

printf("\n");

}

程序的运行结果是

A.l,2,3,4,

B.1,0,7,0,

C.1,4,5,9,

D.3,4,8,10,

68.程序调试的任务是()。

A.设计测试用例B.验证程序的正确性C.发现程序中的错误D.诊断和改正程序中的错误

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

A.可以通过typedef增加新的类型

B.可以用typedef将已存在的类型用一个新的名字来代表

C.用typedef定义新的类型名后,原有类型名仍有效

D.用typedef可以为各种类型起别名,但不能为变量起别名

70.

71.若有以下语句

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

A.每个C语言程序文件中都必须要有一个main(.函数

B.在c语言程序中main(.函数的位置是固定的

C.c语言程序中所有函数之间都可以相互调用,与函数所在位置无关

D.在c语言程序的函数中不能定义另一个函数

73.有如下程序:main(){intx=23;do{printf(”%d”,x--);}while(!x);}该程序的执行结果是()。A.321B.23C.不输出任何内容D.陷入死循环

74.

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

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

76.

77.有以下程序:

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

A.PrphsbnB.ProhsbnC.ProgsbnD.Program

78.有以下程序

#include<stdio.h>

voidfun(ints[])

{staticintj=0;

do

s[j]+=s[j+1];

while(++j<2);

}

main()

{

intk,a[10]={1,2,3,4,5};

for(k=1;k<3;k++)fun(a);

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

printf("%d",a[k]);

}

程序的运行结果是

A.34756B.23445

C.35745D.12345

79.若变量c为char类型,能正确判断出c为小写字母的表达式是_______。A.′a′<=c<=′z′

B.(c>=′a′)||(c<=′z′)

C.(′a′=C)

D.(c>=′a′)&&(c<=′z′)

80.以下选项中正确的定义语句是()。

A.doublea;b;B.doublea=b=7;C.doublea=7,b=7;D.double,a,b;

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:传人一个整数n,计算如下公式的值。t=1/2-1/3-…-1/n例如,若输入3,则应输出0.166667。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.…请编写函数。fun能是:判断形参n中的正整数是几位数(输入数据的位数不超过4位),并将结果通过函数值返回。例如:若输入的数据为l23,则输出结果为:输入的数字是3位。注意:部分源程序存在PROGl.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所缩写的若干语句。试题程序:

参考答案

1.A本题中,首先创建一个动态内存,然后将地址分别存入指针a、b、c中,即a、b、c都指向相同.的变量。分别给a、b、c所指的变量赋值,最终a、b、c所指的变量中的值为3,最后打印a、b、c所指的变量

2.A本题考查switch语句。当i一1时,执行case1,因为没有遇到break语句,所以依次往下运行,“a=a+2=2,a=a+3=5”;当i=2时,执行case2,因为没有遇到break语句,所以依次往下执行,“a=a+2=7,a=a+3=10”;当i=3时,执行case3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a—a+2—13,a—a+3一l6:当i=4时,执行default,a=a+3=19,结束循环。

3.D解析:C语言觌定,实参变量对形参变量的数据传递是“值传递”,只由实参传给形参,而不能由形参传回来给实参。函数调用结束后,形参单元被释放,实参单元仍保留并维持原值。本题要求输出aa[0]的值,结果应为1。

4.A

5.B

6.C

7.C解析:x++:表示在使用x之后,使x的值加1;y++:表示在使用y之后,使y的值加1;++y:表示在使用y之前,使\u3000y的值加1。此题中执行z=x++,是将x的值先赋给z,所以z=1,接下来x自行加1,其结果为2:执行y++后,y=2,执行++后,y=3;故答案选C。

8.B函数调用时,prt函数的作用是为使m数组中的数自增1,因此数组下标从0开始,每个元素都自加1。

9.C解析:主函数中定义了一个文件指针fp1,然后通过fopen()函数,以写的方式打开文件“fl.txt”,并让指针fp1指向它,接着调用fpfintf()函数将“abc”写到文件fp1所指的文件里,由于开始fp1指向文件的“fl.txt”的开始位置,因此“abc”将把文件“fl.txt”里原来的内容“good”覆盖掉,故文件“fl.txt”里最后的内容为“abc”。

10.B解析:字符数组元素作函数参数是单向的值传递。函数cchar的功能是将大写字母转换为小写字母。主函数中while循环语句的条件是判断指针p当前指向的字符是否为空,若不为空,则调用函数cchar,即主函数中通过循环语句将字符串'ABC+abc=defDEF'中的大写字母全部转换为小写字母,因此printf的输出结果为选项B。

11.A

12.A由题意可知,文件abc.txt中存放了6个整数。其中第1个表示后续数据的个数。要将最后5个数据读入数组data中,需要读取数据的个数为5,所以首先调用fscanf函数,将5读入整型变量n中;接着通过for循环,i分别取值0~n-1,调用fscanf函数将n个整数读入data[0]~data[n-1]中。故本题答案为A选项。

13.C解析:数据库是数据的集合,其中的数据是按数据所提供的数据模式存放的,它能构造复杂的数据结构,以建立数据之间的内在联系与复杂的关系-故答案为C。

14.A对下标为偶数的元素进行降序排序,下标为奇数元素保持不变。

15.B本题考查do-while语句和if…else语句。do-while语句的功能是先执行循环体再判断条件,所以,先判断if语句的条件,y=-4,!y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将x的值减1,x=3,条件不成立,执行下面的else语句,输出Y,然后将X的值减1,x=2,满足while循环条件,继续循环。第三次循环:先判断if语句的条件,y=2,!y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将X的值减1,x=l,满足while循环条件,继续循环。第四次循环:先判断if语句的条件,y=-1,!y为逻辑0,条件不成立,执行下面的else语句,输出Y,然后将x的值减1,x=0,不满足while循环条件,结束循环。所以B正确。

16.C

17.A解析:本题中p[4]='cd',所以strlen(p[4])=2。

18.C

19.B本题考查函数的输出格式。在printf函数,格式说明符中有两个“%”说明;将第1个%后面的字符原样输出,并不输出其对应r的变量值。

20.C

21.算法或程序或流程图算法或程序或流程图解析:算法是问题处理方案正确而完整的描述。

22.77解析:x=(y=4)+(z=3)等价于y=4,z=3,x=y+z=4+3=7。

23.

24.30253025解析:本题定义了一个fun函数,其中有语句a+=b++,b先使用,后自增,所以a=a+b。主函数中的c=20带入到fun函数中,a的值变为30,执行fun函数中的printf,输出30(注意输出函数中%d后有空格),函数调用结束,且返回main函数,此时a=5,c=20,执行a+=c++,即a=a+c,此时a值为25。

25.*pmax=*px*pmax=*px解析:首先将变量x的值放到max中,然后依次和变量y、z进行比较。若有比max大的数,将该数存放到max中,这样最后在max中的值就是x、y、z中的最大值。

26.线性结构线性结构解析:数据的逻辑结构是指数据元素之间的逻辑关系,分为线性结构和非线性结构。常见的线性结构有线性表、栈和队列等,常见的非线性结构有树、二叉树等。

27.数据模型数据模型

28.GDBHIEFCAGDBHIEFCA解析:后序遍历二叉树的顺序为:后序遍历左子树→后序遍历右子树→访问根结点。按照定义,后序遍历序列是GDBHIEFCA。

29.00解析:二维数组可以看成是按矩阵形式排列的,题目中给二维数组赋初值是按行分段赋值的,a[4][4]可以分解为4个一维数组,其数组名分别为a[0]、a[1]、a[2]、a[3],这4个一维数组都有4个元素,a[0]的元素为a[0][0]、a[0][1]、a[0][2]、a[0][3]。

30.-4-4解析:if…else构造了一种二路分支选择,是一种最基本的选择结构,if(条件)S1(if分结构)elseS2(else分结构),它的工作过程是:先对条件表达式进行判断,若为真(成立,值为非零),就执行if分结构(S1);否则(不成立,值为0),就执行else分结构(S2)。本题中,n=0,可以判断(!n)为真,执行x=x-1=2-1=1;m=1,可以判断(m)为真,执行x=x-2=1-2=-1进而可以判断(x)为真,执行x=x-3=-1-3=-4。

31.操作系统或OS操作系统或OS解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务。位于用户和操作系统之间。

32.44解析:strcpy(s1,s2)函数的作用是将字符串s2中的内容拷贝到字符串s1中的内容覆盖。strlen()函数是求字符串的长度。本题实际上是要求s2字符串的长度,即是4。

33.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列。

34.内聚内聚

35.16.0

36.252137252137解析:本题中先定义了整型变量a、b和c,然后分别给赋值a为25,b为八进制的025,c为十六进制0x25。然后调用pruntf()函数将a、b和c分别用十进制输出,且中间用空格隔开,八进制025转换为十进制的值为21,十六进制的0x25转换为十进制的值为37,故最后的输出结果为252137。

37.sizeof(structnode)或4sizeof(structnode)或4解析:malloc(sizeof(struetnode))的作用是开辟一个长度为sizeof(struetnode)的内存区。(structnode*)的作用是使malloc返回的指针转换为指向structnode类型数据的指针。

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

39.66解析:已知aa[3]={1,2,3},n=3,调用函数f,n>1成立,执行a[0]+f(&a[1],n-1);即1+f(&a[1],2),递归调用函数f,将a[1]的地址作为参数传给数组a,使数组a的首地址变为&a[1],数组中的元素只有2,3;2传给n,这时n=2,n>1仍然成立,继续调用a[0]+f(&a[1],n-1);即执行1+2+f(&a[1],1),因为上次递归调用函数f后数组中的元素为2,3,所以此次的a[1]为3,调用后的a[0]为3。所以最后结果为1+2+3=6。

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

41.D解析:本题考查的是switch语句。switch语句中的case或default只是一种入口标号,它并不形成一种子句的概念。当满足其中某个标号的条件而进入switch语句中时,如果没碰到break语句,将一直执行到switch语句的结尾。题目中使用了一个while循环使k从5递减到1,当k=5或4的时候从default标号进入switch,碰到break;语句立即跳出,没有改变n:当k=3时,执行了一次n+=k;;k=2时,也执行了一次n+=k;k=1时,执行了两次n+=k;所以最终n的值为3+2+1+1=7。故应该选择D。

42.A解析:本题首先定义了一个数组并附初值,然后通过两个for循环计算3、4、5、6的累加值,并用s保存。

43.C解析:模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从弱到强,可以将其分成5级,分别是:数据耦合、同构耦合、控制耦合、公用耦合和内容耦合。选项C),没有这种耦合方式。注意:评价模块独立性的主要标准,以及对它们的定义和分类。

44.C解析:程序定义了一个指针数组s和一个字符型指针变量p。s有3个元素,其中s[0]指向字符串'one,s[1]指向字符串'two',s[2]指向字符串'three',执行p=s[1]后p指向字符串'two',所以*(p+1)=w。

45.A解析:*p=&a将数组a[]的首地址赋给指针p,通过对指针变量进行加上或减去一个整数可以移动指针,移动的单位为存储单元,int型变量在存储器中占两个字节。

46.B解析:数据库产生的背景就是计算机的应用范围越来越广泛,数据量急剧增加,对数据共享的要求越来越高。共享的含义是多个用户、多种语言、多个应用程序相互覆盖的使用一些公用的数据集合。在这样的背景下,为了满足多用户、多应用共,享数据的要求,就出现了数据库技术,以便对数据库进行管理。因此,数据库技术的根本目标就是解决数据的共享问题。故选项B正确。

47.B解析:本题中的函数ss()有两个参数,一个是字符型指针变量s,另一个是字符型变量t。在函数中通过一个while循环,在循环中依次取出s指向的字符串并判断它是否和t中存放的字符相同,若相等,则执行“*s=t'a'+'A';”(若是小写字母,则被转换成相应的大写字母)语句。在主函数中执行函数调用ss(str1,c),很显然是把str1数组中所有字符d变成大写字母,其他字符不变。所以4个选项中B正确。

48.D解析:本题考查的是C语言中的标识符与关键字。合法的标识符由字母,数字和下划线组成,并且第一个字符必须为字母或下划线。另外,C语言规定了一批关键字,它们在程序中都代表着固定的含义,不能另作它用,所以合法的标识符也不能是C语言的任一关键字。本题中,选项A、B、C都符合上述条件,只有选项Dsizeof是C语言中的关键字,所以,4个选项中选项D符合题意。

49.A解析:在C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下画线3种字符组成,且第一个字符必须为字母或下画线。C语言的标识符可以分为关键字、预定义标识符和用户标识符。选项B)和C)中的横线以及点都不合法,选项D)中的case为C语言关键字。

50.D解析:*p代表a,&*p等价于&a;p代表&a,*p等价于a,因而(*p)++等价于a++;但因p的值为a的内存单元地址,p++为变量a首地址后面的地址,*(p++)不再指向变量s。

51.A解析:反斜杠字符“\\”赋给字符,应该写成ch='\\\\',所以A是错误的。

52.B

53.D解析:在数据库系统中,通过系统提供的映象功能,使数据具有两方面的独立性:一是物理独立性。即由于数据的存储结构与逻辑结构之间由系统提供映象,使得当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改。二是逻辑独立性。即由于数据的局部逻辑结构(它是总体逻辑结构的一个子集,由具体的应用程序所确定,并且根据具体的需要可以作一定的修改)与总体逻辑结构之间也由系统提供映象,使得当总体逻辑结构改变时,其局部逻辑结构可以不变,从而根据局部逻辑结构编写的应用程序也可以不必修改。由此可知,选项A.B与C中的说法都是错误的。

54.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中的数值整体向左移动一位,并在空出来的个位上添一个0),再将当前p[i][j]中的字符量转换为相应的数字,然后把这个数字加到s的个位上。④注意到内层循环的循环条件p[i]\ue009[j]>\'\\0\'是指p[i][j]中的字符只要不是字符串结束标志\'\\0\'就继续循环,语句j+=2;是使下标j每次增加2,也即一个隔一个地从p[i]所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从p[0]所指向的字符串'6937'中一个隔一个地取出字符,分别是\'6\'和\'3\',然后从p[1]所指向的字符串'8254'中一个隔一个地取出字符,分别是\'8\'和\'5\',同时经过转换和相加运算后,结果s中的值应该是6385。

55.A解析:在switch语句中break语句的作用是退出分支语句,若没有break语句则一直向下执行。本题中首先计算switch后面括号里的表达式a%3,印15%3为0;执行case0:后面的语句m++;m自加1,即m为1遇到break语句;然后跳出switch语句,所以最后输出的m的值为1,所以选项A正确。

56.C解析:本题的考点是C语言结构体的定义和自定义类型typedef。对于选项A,首先用typedef将结构体自定义为AA,再用AA定义结构体变量td是正确的。对于选项B首先定义结构体类型aa,再用structaa定义结构体变量td也是正确的。选项D直接用无名结构体定义结构体变量td也是正确的。而选项C中,首先用无名结构体定义了结构体变量aa,再用结构体变量aa去定义结构体变量td是完全错误的。因此正确选项是C。

57.A解析:自增运算的优先级高于其他双目算术运算符,同级算术运算符结合性为自左向右。所以表达式(x++*1/3)等价于(x++)*1/3=11*1/3=3。

58.B

59.C解析:在C语言中,以“\\”开头的字符均为转义字符,其中“\\”后可跟1~3位八进制数或在“\\”后跟字母x及1~2位十六进制数,以此来代表一个特定的字符。

60.B解析:函数gets()的调用形式为gets(str_adr);str_adr是存放字符串的起始地址。可以是字符数组名、字符指针或字符数组元素的地址。gets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。换行符读入后,不作为字符串的内容。本题中定义一个长度为10的字符数组,和一个指针变量b,并且通过赋值让它指向数组a。gets函数的参数a[0]不能表示数组a的首地址。

61.B在本题中,题目告诉我们程序中调用scanf函数给变量a输入数值的方法是错误的,要求我们找出其错误的原因,这是一类错误原因分析题。

在本题程序中,首先定义两个整型指针变量p和q,然后定义两个整型变量a和b,让指针变量p执行变量a,接着输出提示语句“请输入a”,执行格式输入语句scanf,由于输入语句的输入列表中给出的应该是输入的地址,即存放输入数据的存储地址,但在本题的输入语句中给出的是*p,这表示一个数值,而非地址。因此,无法完成数据的输入,若要完成输入,可以将*p改为p。

根据上面的分析,我们可以知道本题程序出错的原因是*p表示的是变量a的值,而不是变量a的地址。因此本题正确答案选B。

62.A字符串是一个特殊的数组,按照数组的规则,sl应该指向的是数组的首地址,即“abc”的第一个字符的地址,s2指向的是“123”的第一个字符的地址。调用swap函数之后交换的是两个字符串的第一个字符a和’l。的内容,因此打印输出为A)。

63.C本题的考查点是查找程序运行错误的原因。主要考查运算中字符的转换。初看此题,可能不太容易发现错误,该题的运行结果是1.0000,算法错误。s=s+1/n;1/2=0,因为n为整型,所以1/n都为0。这就是导致本题出错的原因。s=s+1/n应改为s=s+1.0/n。

64.A数据管理技术的发展经历了3个阶段:

人工管理阶段、文件系统阶段和数据库系统阶段。三者各自的特点如下表所示。\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t特点\t\t\t\t\t\t\t人工管理阶段\t\t\t\t\t\t\t文件系统阶段\t\t\t\t\t\t\t数据库系统阶段\t\t\t\t\t\t\t管理者\t\t\t\t\t\t\t人\t\t\t\t\t\t\t文件系统\t\t\t\t\t\t\t数据库管理系统\t\t\t\t\t\t\t面向对象\t\t\t\t\t\t\t某个应用程序\t\t\t\t\t\t\t某个应用程序\t\t\t\t\t\t\t现实世界\t\t\t\t\t\t\t共享程度\t\t\t\t\t\t\t无共享,冗余度大\t\t\t\t\t\t\t共享性差,冗余度大\t\t\t\t\t\t\t共享性大,冗余度小\t\t\t\t\t\t\t独立性\t\t\t\t\t\t\t不独立,完全依赖于程序\t\t\t\t\t\t\t独立性差\t\t\t\t\t\t\t具有高度的物理独立性和一定的逻辑独立性\t\t\t\t\t\t\t结构化\t\t\t\t\t\t\t无结构\t\t\t\t\t\t\t记录内有结构,整体无结构\t\t\t\t\t\t\t整体结构化。用数据筷基誊述\t\t\t\t\t\t\t控制能力\t\t\t\t\t\t\t由应用程序控制\t\t\t\t\t\t\t由应用程序控制\t\t\t\t\t\t\t由DB蝰墨供数据安全性、完整性、并发控剖和恢复\t\t\t\t数据库系统可以解决

温馨提示

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

评论

0/150

提交评论