2022-2023年浙江省衢州市全国计算机等级考试C语言程序设计_第1页
2022-2023年浙江省衢州市全国计算机等级考试C语言程序设计_第2页
2022-2023年浙江省衢州市全国计算机等级考试C语言程序设计_第3页
2022-2023年浙江省衢州市全国计算机等级考试C语言程序设计_第4页
2022-2023年浙江省衢州市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩119页未读 继续免费阅读

下载本文档

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

文档简介

2022-2023年浙江省衢州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若要求从键盘读入含有空格字符的字符串,应使用函数A.getc()B.gets()C.getchar()D.scanf()

2.高度为h的满二叉树的结点数是________个。

A.log2h+1B.2h+1C.2h-1D.2h-1

3.对长度为n的无序线性表进行顺序查找,则查找成功、不成功时的平均数据比较次数分别为()。

A.n/2,nB.n+1/2,n-1C.n+1/2,nD.n-1/2,n-1

4.下列关于C语言文件的叙述中正确的是()。

A.文件由一系列数据依次排列组成,只能构成二进制文件

B.文件由结构序列组成,可以构成二进制文件或文本文件

C.文件由数据序列组成,可以构成二进制文件或文本文件

D.文件由字符序列组成,其类型只能是文本文件

5.有以下程序:

程序的运行结果是()。

A.0987654321

B.4321098765

C.5678901234

D.0987651234

6.设有定义:charc[]=“Cc”;FILE*fp;且fp指向以“w”的方式成功打开的文件,若要将c中的两个字符写入文件,且每个字符占一行,则下面的选项中正确的是()。

A.fprintf(fp,“%c\n%c\n”,c[0],c[1]);

B.fprintf(fp,“%c\r\n%c\r\n”,c[0],c[1]);

C.fprintf(fp,“%c%c”,c[0],c[1]);

D.fprintf(fp,“%s\n”,c);

7.人们提出了用______的原理来设计软件,这就是软件工程学诞生的基础。

A.计算机科学B.数学C.工程学D.运筹学

8.以下程序的输出结果是______。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

9.下面程序的输出结果是

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

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

A.0B.1C.10D.9

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

A.a是实型变量,C允许进行赋值a=10,但不可以这样说:实型变量中允许存放整型值

B.在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式

C.执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0

D.已有a=3,b=5,当执行了表达式a=b,b=a之后,使a中的值为5,b中的值为3

11.交换两个变量的值,不允许用临时变量,应该使用下列()位运算符。

A.&.B.^C.||D.~

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

A.continue语句的作用是使程序的执行流程跳出包含它的所有循环

B.break语句只能用在循环体内和switch语句体内

C.在循环体内使用break语句和continue语句的作用相同

D.break语句只能用于switch语句体中

13.有以下程序

#include<stdio.h>

main()

{ints;

scanf(“%d”,&s);

while(s>0)

{switch(s)

{case1;printf(“%d”,s+5);

case2:printf(“%d”,s+4);break;

case3:printf(“%d”。s+3);

default:printf(“%d”,s+1);break;

}

seanf(“%d”,&s);

}

}

运行时,若输入12345O<回车>,则输出结果是A.6566456B.66656C.66666D.6666656

14.设有定义“inta=1,b=2,c=3;”,以下语句中执行效果与其他3个不同的是()。A.if(a>b)c=a,a=b,b=c;

B.if(a>b){c=a,a=b,b=c;}

C.if(a>b)c=a;a=b;b=c;

D.if(a>b){c=a;a=b;;b=c;}

15.设一组初始记录关键字序列为(Q,H,C,Y,P,A,M,S,R,D,F,X),则按字母升序的第一趟冒泡排序结束后的结果是()

A.F,H,C,D,P,A,M,Q,R,S,Y,X

B.P,A,C,S,Q,D,F,X,R,H,M,Y

C.A,D,C,R,F,Q,M,S,Y,P,H,X

D.H,C,Q,P,A,M,S,R,D,F,X,Y

16.对包含N个元素的散列表进行检索,平均检索长度________

A.为o(log2N)B.为o(N)C.不直接依赖于ND.上述三者都不是

17.

18.有以下程序:#include<stdio.h>voidfun(intn){if(n/2)fun(n/2);printf(“%d”,n%2);}main(){fun(10);printf(“\n”);}程序运行后的输出结果是()。

A.0101B.1000C.1100D.1010

19.在含有n个项点有e条边的无向图的邻接矩阵中,零元素的个数为________。

A.eB.2e9C.n2-eD.n2-2e

20.树最适合用来表示()。

A.有序数据元素B.无序数据元素C.元素之间具有分层次关系的数据D.元素间无联系的数据

二、2.填空题(20题)21.耦合和内聚是评价模块独立性的两个主要标准,其中______反映了模块内各成分之间的联系。

22.以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:

2223445666677899101010

删除后,数组中的内容应该是:

2345678910。

请填空。

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

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

if(a[j-1]【】a[i])

a[j++]=a[i];

【】;

}

main()

{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;

printf("Theoriginaldata:\n");

for(i=0;i<n;i++)printf("%3d",a[i]);

n=fun(a,n);

printf("\nThedataafterdeleted:\n");

for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");

}

23.下列程序的输出结果是______。

#include<stdio.h>

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=1,b=8,c=7,d=9;

t(a,b,c,d);

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

}

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

#include<stdio.h>

main()

{chars[20];

scanf("%s",s);

printf("%s",s);

}

运行程序,输入HOWAREYOU。

25.在结构化分析使用的数据流图(DFD)中,利用【】对其中的图形元素进行确切解释。

26.下列程序的输出结果是______。

longfun5(intn)

(longs;

if((n==l)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

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

27.已有文本文件test.txt,其中的内容为:Hello,everyone!。以下程序中,文件test.txt已正确为“读”而打开,由文件指针fr指向该文件,则程序的输出结果是【】。

#include<stdio.h>

main()

{

FILE*fr;charstr[40];

fgets(str,5,fr);

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

fclose(fr);

}

28.有以下程序#include<stdio.h>typedefstruct{intnum;doubles;}REC;voidfunl(REC*x){x->num=23;x->s=88.5;}voidmain(){RECa={16,90.0};fun1(&A);printf("%d\n",a.num);}程序运行后的输出结果是()。

29.数据库技术的主要特点为数据的集成性、数据的高【】和低冗余性、数据独立性和数据统一管理与控。

30.结构化程序设计的3种基本结构分别是顺序、选择和______。

31.若要使指针p指向一个double类型的动态存储单元,请填空。

p=【】malloc(sizeof(double));

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

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

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

#include<stdio.h>

main()

{inta,b,c,n;

a=2;b=0;c=1;n=1;

while(n<=3)

{c=c*a;b=b+c;++n;}

printf("b=%d",B);

}

34.以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

请填空。

#include"math.h"

doublefun(doublex){return(x*x-2*x+6);}

main()

{doublex,y1,y2;

printf("Enterx:");scanf("%lf",&x);

y1=fun(【】);

y2=fun(【】);

printf("y1=%lf,y2=%lf\n",y1,y2);

}

35.当数据的物理结构(存储结构)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【】。

36.对于长度为n的顺序存储的线性表,当随机插入和删除—个元素时,需平均移动元素的个数为【】。

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

#definePOW(r)(r)*(r)

main()

{intx=3,y=2,t;

t=POW(x+y);

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

}

38.数据库系统其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。

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

strcen(chara[],charb[])

{intnum=0,n=0;

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

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

return(num);

}

40.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是

【】。

#include<stdio.h>

main()

{chara,b;

a=getchar();scanf("%d",&b);

a=a-'A'+'0';b=b*2;

printf("%c%c\n",a,b);

}

三、1.选择题(20题)41.十进制数124转换成二进制数是()

A.111l010B.1111100C.1011111D.1111011

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

A.chara='A'b='B';

B.floata=b=10.0;

C.inta=10,*b=&a;

D.float*a,b=&a;

43.设有数组定义:chararray[]="China";则数组array所占的空间为()

A.4个字节B.5个字节C.6个字节D.7个字节

44.若定义了以下函数:voidf(…){…*p=(double*)malloc(10*sizeof(double));…}p是该函数的形参,要求通过p把动态分配存储单位的地址传回主调函数,则形参p的正确定义应当是()

A.double*pB.float**pC.double**pD.float*p

45.若执行下面的程序时,从键盘上输入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

46.以下各组选项中,均能正确定义二维实型数组a的选项是()

A.floata[3][4];floata[][4];floata[3][]={{1},{0}};

B.floata(3,4);floata[3][4];floata[][]={{0},{0}};

C.floata[3][4]staticfloata[][4]={{0},{0}};

D.floata[3][4];floata[3][];

47.下面函数的功能是char*fun(char*strl,char*str2){while((*strl)&&(*str2++=*strl++));returnstr2;}

A.求字符串的长度

B.比较两个字符串的大小

C.将字符串str1复制到字符串str2中

D.将字符串str1接续到字符串str2中

48.设有以下语句

typedefstructS

{intg;charh;}T;

则下面叙述中正确的是()A.可用S定义结构体变量B.可以用T定义结构体变量C.S是struct类型的变量D.T是structS类型的变量

49.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是______。

A.pb=&x;B.pb=x;C.*pb=&x;D.*pb=*x

50.下列程序输出的结果是()。main(){inta;a=-4+4*5-6;printf(“%d”,a);a=4+4%5-6;printf(“%d”,a);a=-3+4%6/5;printf(“%d”,a);a=(7+6)%5/2;printf(“%d”,a);}

A.102-31B.10-221C.11-221D.10221

51.下列程序的输出结果是()。#include<stdio.h>main(){inta=2,b=3,p;p=f(a,b);printf("%d",p);}intf(a,b){intc;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;return(c);}

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

52.已知下面的程序段,正确的判断是______。#defineA3#defineB(A)((A+1)*a)inta=3;......X=3*(A+B(7));

A.程序错误,不允许嵌套定义B.X=93C.X=81D.程序错误,宏定义不允许有参数

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

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

54.下列叙述中,不属于测试的特征的是

A.测试的挑剔性B.完全测试的不可能性C.测试的可靠性D.测试的经济性

55.有以下程序段:intk=0;while(k=1)k++;while循环执行的次数是______。

A.无限次B.有语法错,不能执行C.一次也不执行D.执行1次

56.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为()。

A.GEDHFBCAB.DGEBHFCAC.ABCDEFGHD.ACBFEDHG

57.下列不正确的转义字符是()。

A.'\\'B.'t'C.'\n'D.'088'

58.有以下程序main(){chara,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c\n",a,b,c,d);}若运行时从键盘上输入:6,5,65,66<回车>。则输出结果是

A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,6

59.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

60.下述程序文件输出的结果是______。#inelude<stdio.h>voidmain(){FILE*fp=fopen("TEST","wb");fprintf(fp,"%d5.of%c%d",58,76273.0,'-',2278);fclose(fp);}

A.5876273-2278

B.5876273.000000-2278

C.5876273-2278

D.因文件为二进制文件而不可读

四、选择题(20题)61.(63)线性表的顺序存储结构和线性表的链式存储结构分别是______。

A.顺序存取的存储结构、顺序存取的存储结

B.随机存取的存储结构、顺序存取的存储结构

C.随机存取的存储结构、随机存取的存储结

D.任意存取的存储结构、任意存取的存储结构

62.有如下程序段

#include"stdio.h"

typedefstructaa

{inta;

structaa*next;

}M;

voidset(M*k,inti,int*b)

{intj,d=0;

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

{k[j-1].next=&k[j];

k[j-1].a=b[d++];

}

k[j].a=b[d];

}

main()

{Mk[5],*p;

intd[5]={23,34,45,56,67};

set(k,5,d);

p=k+1;

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

}

要输出45,则在下画线处应填入的选项是

A.p->next->aB.++p->a

C.(*p).a++D.p++->a

63.

64.

65.有以下程序当执行程序时,按下列方式输入数据(从第l列开始,<CR>代表回车,注意;回车也是--+qz符)12<CR>34<CR>则输出结果是()。

A.123B.12C.1234D.1234

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

A.a是实型变量,C允许进行赋值a=10,但不可以这样说:实型变量中允许存放整型值

B.在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式

C.执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0

D.已有a=3,b=5,当执行了表达式a=b,b=a之后,使a中的值为5,b中的值为3

67.

则下面对m数组元素的引用中错误的是()。

A.

B.

C.

D.

68.

有以下程序:

#include<stdio.h>

main

{intx=4,y;

do

{y=x;

if(!y)printf("x");

else

printf("y"):

x--;

}while(x);

}

程序的输出结果是()。

A.xyyxB.yyyyC.yyxxD.yxyx

69.

70.设有以下语句:inta=1,b=2,c;c=a^(b<<2);执行后,c的值为()。A.6B.7C.8D.9

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

A.3,5,3,5B.3,5,5,3C.5,3,3,5D.5,3,5,3

72.第

15

以下程序的输出结果是

main()

{inta=21,b=11;

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

}

A.30B.31C.32D.33

73.

74.当把以下四个表达式用做if语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是()。

A.k%2B.k%2==1C.(K%2)!=0D.!k%2==1

75.

76.

77.有三个关系R、S和T如下:

则由关系R和S得到关系T的操作是()。

A.自然连接B.交C.除D.并

78.设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是()。

A.n=(n*100+0.5)/100.0

B.m=n*100+0.5,n=m/100.0

C.n=n*100+0.5/100.0

D.n=(n/100+0.5)*100.0

79.下列程序的运行结果是()。main(){intx=1,y=3,a=0;while(x++!=(y-=1)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}

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

80.若有定义:inta,h;通过语句:scanf(”%d;%d”,&a,&B.;,能把整数3赋给变量a,5赋给变量b的输入数据是()。

A.35B.3,5C.3;5D.35

五、程序改错题(1题)81.已知一个数列从0项开始的前3项为0,0,1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数proc的功能是:计算并输出该数列前n项的和sum。n的值通过形参传人。例如,当n=20时,程序的输出结果应为42762.000000。

请修改程序中的错误,使它能得到正确结果。

注意:不要改动maiil函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

doubleproc(intn)

{

doublesum,s0,s1,s2,s;

intk;

sum=1.0;

if(n<=2)

sum=0.0;

s0=0.0;

s1=0.0;

s2=1.0;

//****found****

for(k=4;k<n;k++)

}

{

s=s0+s1+s2;

sum+=S:

s0=s1;

s1=s2;

//****found****

s2=s;

returnsum;

}

voidmain

{

intn;

system("CLS");

printf("InputN=");

scanf("%d",&nJ;

printf("%f\n",proc(n));

}

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是根据以下公式求P的值,结果由函数值返回。m与n为两个正整数且要求m>n。例如:m=12,n=8时,运行结果为495.000000。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

参考答案

1.Bscanf(\u3000)语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所以用scanf(\u3000)函数不能输入空格;getehar(\u3000)函数用于输入字符,其调用形式为:ch=getelaar(\u3000),getehar(\u3000)函数从终端读入一个字符作为函数值,把读入的字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入Enter键时,读入才开始执行。gets(\u3000)函数的凋用形式为:gets(str_adr),其中stradr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。9ets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc(\u3000)函数的调用形式为:ch=getc(pf)其中pf是文件指针。函数的功能是从pf指定的文件中读入一个字符,并把它作为函数值返回。

2.C

3.C

4.C文件由数据序列组成,可以构成二进制文件或文本文件。故本题答案为C选项。

5.C函数fun(int*s,intn1,intn2)的功能是对数组s中的元素进行首尾互相调换。所以在主函数中,当fun(a,0,3)执行完后,数组a[12]={4,3,2,1,5,6,7,8,9,0};再执行fun(a,4,9),数组a[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,1,2,3,4}。所以正确答案为c)。

6.A要写入字符数据,需要使用格式字符%c,选项D错误;换行符需要使用‘\\n’,而不是‘\\r\\n’,选项B错误;选项C中未使用换行符,不满足题意。故本题答案为A选项。

7.C

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

9.C解析:此题考查了指针引用一维数组元素的方法。*p+9因为运算符'*'的优先级高于'+',所以输出结果为p指向的元素1,然后加9,值为10。

10.AC语言中语法上规定实型变量是不能存放整型类型的数据的,整型数据也不能存放实型数据。是为了避免类型转换之间可能会发生的错误。

11.B按逻辑位运算特点:①用按位与运算将特定位清为0或保留特定位;②用按位或运算将特定的位置为1;③用按位异或运算将某个变量的特定位翻转或交换两个变量的值。

12.Bcontinue语句的作用是跳过循环体中剩余的语句而进行下一次循环,所以A选项错误。break语句的作用是终止正在执行的switch语句体,跳出switch语句体或者强制终止当前循环,从当前执行的循环中跳出,所以C、D选项错误。故本题答案为B选项。

13.A

14.C因为变量“a=1,b=2”,所以表达式“a>b”不成立。选项A、B和D相当于一条语句,选项A是逗号表达式,选项B和选项D是复合语句,所以都没有执行。选项C中,语句“c=a;”不执行,语句“a=b;b=c;”执行。故本题答案为C选项。

15.D

16.C

17.A

18.D函数fun的作用是求一个十进制数的二进制数。通过辗转相除法获取这个整数的二进制数。因此(10)10=(1010)2。故本题答案为D选项。

19.D

20.C

21.内聚内聚

22.!=returnj!=,returnj解析:本题程序的流程是:让i,j都从1开始,其中j用于控制删除后剩下的数中的下标,i用于搜索原数组中的元素。j始终是新数组已有元素中最后一个元素的下一个元素的下标,所以if()中的条件是a[j-1]!=a[i],其中a[j-1]就是新数组中的最后一个元素,若条件成立则表示出现了不同的值,所以a[i]要留到新数组中。注本题中i、j的初值都要从1开始,该算法只能用于数组已排序的题目中。

23.7979解析:因为在调用子函数时进行的是数值传递,调用子函数并不能改变实参的值,所以经过调用子函数,c、d的值并没有发生变化还是原来的值。

24.HOWHOW解析:在scanf()函数中,使用空格作为分隔符,如果输入含有空格的字符中,则不能使用scanf()数,所以本题中输入空格就返回了'\\0\\,s数组也就确定了,后面的输入就不再读入数组s中。

25.数据字典或DD数据字典或DD解析:数据流图用来对系统的功能需求进行建模,它可以用少数几种符号综合地反映出信息在系统中的流动、处理和存储情况。数据词典(DataDictionary,DD)用于对数据流图中出现的所有成分给出定义,它使数据流图上的数据流名字、加工名字和数据存储名字具有确切的解释。

26.99解析:考查ifelse语句,n==4不满足条件,所以fun5(4)=4+fun5(3),n==3也不满足条件,fun5(3)=3+fun5(2),n==2满足条件fun5(2)=2,故x=4+3+2=9。

27.HellHell解析:该函数有3个参数,第三个参数是文件指针指向要读取数据的文件,第二个参数是一个整数(假设为n),表示从文件中读取n-1个字符并在其后加一个'\\0',第一个参数为存放读取的字符串的内存区的起始地址,读取的数据保存在其中。可见本题的输出结果为Hell。

28.23

29.共享性共享性解析:数据库技术的主要特点有以下几个方面:数据的集成性,数据的高共享性与低冗余性,数据的独立性,数据统一管理与控制。

30.重复(循环)重复(循环)解析:结构化程序设计包括3种基本的结构:顺序结构、选择结构和重复结构(循环结构),利用这3种结构就足以表达出各种其他形式结构的程序设计方法。其中利用循环结构,可以简化大量的程序执行。

31.(double*)(double*)解析:一般用malloc函数为变量分配存储单元时,要在前面用强制类型转换符说明该存储单元中数据的类型。本题要为指向双精度浮点型数据的指针变量p分配存储单元,因此用(double*)说明。

32.33解析:C语言的语法规定:else子句总是与前面最近的不带else的if相结合。因为x不大于y,所以执行printf('%d\\n',z);语句。

33.b=14b=14解析:分析程序可知,n的初始值为1,因此,while(n<=3)循环3次。第1次:c=c*a=2:b=b+c=2;n=2。第2次:c=c*a=4;b=-b+c=6;n=3。第3次;c=c*a=8:b=b+c=14。当n=4时,判断条件不满足,退出循环。

34.x+8sin(x)x+8,sin(x)解析:考查考生对函数调用相关知识的了解。用x+8代替函数fun(doublex)中形式参数x;用sin(x)代替函数fun(doublex)中形式参数x。

35.物理独立性数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据独立性一般分为物理独立性与逻辑独立性两级。

36.n/2n/2解析:删除—个元素,平均移动的元素个数为(n-1+n-2+…+0)/n=(n-1)/2;插入一个元素,平均移动元素个数为(n+n-1+n-2+…+1)/n=(n+1)/2:所以总体平均移动元素个数为n/2。

37.2525解析:本题考查带参数的宏的定义及相关运算。运算过程为:t=POW(x+y)=(2+3)*(2+3)=25。

38.外模式外模式解析:数据库系统的三级模式分别是内模式、概念模式和外模式。其中,物理模式给出了数据库的物理存储结构和存取方法;概念模式是数据库系统中全局数据逻辑结构的描述;外模式是用户的数据视图,也就是用户所见到的数据模式。

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

40.1B1B解析:从键盘输入后,a='B',b=33,之后进行运算,a='B'-'A'+'0'='1';b=33*2=66。C语言规定,整型和字符型可以相互转换,已知字符A的ASCII码值为65,所以字符B的ASCII码值为66,所以b='B',最后以字符形式输出a和b,所以输出为1B。

41.B

42.C解析:选项A中定义两个变量a和b,并赋初值,C语言中可以同时定义多个变量,但变量之间必须用“,”隔开,显然,选项A中少了一个逗号“,”,故选项A不正确;选项B中定义变量时用了连续的赋值语句,这在定义变量是不正确的,故选项B不正确,选项D定义一个指针,然后定义了一个变量并让这个变量的初值为该指针变量,显然这这时的指针变量还没初始化就被赋值给变量,是不对的,故选项D不正确,所以,4个选项中选项C符合题意。

43.C解析:在给数组赋值时,可以用一个字符串作为初值,这种方法直观、方便,而且符合人们的习惯。数组array的长度不是5,而是6,这点必须要注意。因为字符串常量的最后由系统加上一个'\\0',因此,上面的初始化与下面的等价:

Chararray[]={'C','h','i','n','a','\\0'};

44.C

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

46.C

47.C解析:while语句的一般形式为:while(表达式)语句;其中表达式是循环条件,语句为循环体,while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。本题中逻辑与符号连接的表达式值为真,*str2++=*strl++语句是将strl的内容逐个复制到str2字符串。

48.B解析:结构体类型的定义格式为:

strcut结构体名

{成员说明列表};

结构体变量的定义有3种形式:第一种:定义结构体型的同时定义结构体变量如:strcut结构体名{成员说明列表}变量;第二种先定义一个结构体类型,然后使用该类型来定义结构体变量,如:strcutstudent{成员说明列表):student变量;第三种:定义一个无名称的结构体类型的同时定义结构体变量,如:Strctstudent{成员说明列表}变量。和上面三种情况比较我们不难得知只有选项B是正确的。所以,4个选项中选项B符合题意。

49.A解析:选项A将变量x的地址赋绐指针变量pb,使pb指向x‘选项B是烙x的值当作地址赋给指针pb,pb指向一个地址等于x值的内存单元;选项c将x的地址赋给指针pb指向的地址等于x的内存单元。

50.A解析:本题考查%和/运算符的使用。如果两个数不能整除,只取结果的整数部分,小数部分全部舍去。运算符“%”要求两个运算对象都为整型,其结果是整数除法的余数。表达式:a=-4+4*5-6=4+20-6=10:表达式:a=4+4%5-6=4+4-6=2;表达式:a=-3+4%6/5=-3+0=-3:表达式:a=(7+6)%5/2=13%5/2=1。

51.A解析:本题考查ifelse语句。在intf(a,b)中:第一个if语句,先判断条件,发现a>b条件不成立,则执行与其配对的else语句;第二个if语句,先判断条件,发现a==b条件不成立,则执行与其配对的else语句,c=-1。

52.C解析:本题的宏定义是合法的,宏定义展开为3*(3+((A+1)*a))=3*(3+((7+1)*3))=81。

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

54.C解析:软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。它有3个方面的重要特征,即测试的挑剔性、完全测试的不可能性及测试的经济性。其中没有测试的可靠性这一说法。注意:软件测试与软件调试的概念,以及相应的方法。

55.A解析:注意本题有个陷阱,马虎的考生将纷纷落马。本来、while中的表达式应为k==1,而本题却为k=1,是赋值表达式而不是逻辑表达式。因此,编译器将其值一直认为是1,因此表达式一直为真,陷入无限次的循环。

56.B遍历是按照一定规则对树中全部结点逐一访问的方法。二叉树可由根结点、左子树和右子树三个部分组成。根据对根结点访问的先后顺序,可将遍历方法分为先序遍历、中序遍历和后序遍历三种。先序遍历首先访问根结点,再先序遍历左子树,最后先序遍历右子树,可见遍历是一个递归的过程。求树的遍历这种问题的关键在于认清每棵子树的根结点的访问顺序。题目给出了一棵树的先序遍历和中序遍历的结点顺序,先序遍历的第一个结点为整棵树的根结点,即根结点为A,而在中序遍历的顺序中,结点A的前面还有DBGE四个结点,表示这四个结点构成以A为结点的二叉树的左子树,同理,中序遍历中A结点后面的CHF三个结点构成以A为结点的二叉树的右子树。于是原来的对一棵二叉树的分析变为对该二叉树的左右子树的分析。以左子树为例,左子树结点的先序遍历为BDEG,中序遍历为DBGE,该子树的根结点为B,B结点的左子树为一个结点D,右子树为以E为根结点,结点G是E的左孩子。同理,可对CHF三个结点进行分析。

最后得到整棵树的结构后,按照后序遍历写出所有结点的顺序:DGEBHFCA。

57.D解析:'\\\\'是反斜线转义字符:'\\t'是水平跳格转义字符;'\\n'饭是换行转义字符;C语言中没有规定'088'为转义字符。

58.A解析:主函数中首先定义了4个字符变量a、b、cd,然后通过scanf()函数输入a、b、c、d输入中a和b是按字符格式c输入的,c和d是按整型符号d输入的。在看下面的printf()函数中,要求a、b、c、d都按字符输出,故a和b原样输出为6、5,c和d将把与其ASCII码对应的字符输出,65和66的ASCII码对应字符A和B,故最后的输出为6,5,A,B。所以,4个选项中选项A符合愿意。

59.B解析:在C语言的数组元素的引用方法,我们在前面已经讲过了,比如数组元素a[0],可以用表达式*(p+0),即*p来引用,对于数组元素a[1],可以用表达式*(p+1)来引用,在这里,p+1的值就是数组元素a[1]的地址,对此地址使用“间接访问运算符”:*(p+1)就代表存储单元a[1],注意:一对圆括号不可少。同样,对于数组元素a[2],则可以用表达式。(p+2)来引用…,对于数组元素a[9],可以用表达式,(p+9)来引用。因此,当指针变量p指向a数组的起始地址时,若0≤i<10,则数组元素a[i]可以用*(p+i)来表示。

60.C解析:fprintf函数工作时,多个数据间不会自动加分隔符,选项A错误;浮点数的搞出格式是“%5.0f”表明其小数部分输出0位,即没有输出,所以选项B也是错误的。

61.B

62.A在本题中,程序首先定义了一个结构体,结构体中有两个成员变量,一个是整型,另一个是指向该结构体的指针。然后程序定义了一无返回值的函数set,该函数带有三个参数,第一个是结构体指针变量k,第二个是整型变量i,第三个是整型指针变量b。在函数体中,首先定义了两个整型变量,然后执行for循环,从循环变量的初始值及循环结束条件我们可以知道,循环执行的次数与形参变量i有关,从循环体中我们可以看出,该循环是将结构体数组中的前一个结构体的指针成员指向后一个结构体的首地址,并用数组b中的值给结构体的成员变量a赋值。

在主函数中,定义了一个大小为5的结构体数组k和一个结构体指针p,然后定义了一个数组d,并给数组d进行了初始化操作,然后调用函数set,实参分别为结构体数组k、5和数组d,结合上面我们对set函数的分析可以知道,此时执行set的for循环,可以是结构体数组中各结构体变量的指针成员next指向下一个结构体变量,并将该结构体变量的成员a赋值为数组d的与之位置相对应的值,如结构体数组中第一个结构体变量的a被赋值为数组d中的第一个元素值,即23。那么函数调用后,结构体数组各元素的成员a的值分别为23、34、45、56、67。

函数调用后,运行p=k+1;语句,该语句的作用是使结构体指针变量p执行结构体数组k的第二个元素,然后执行输出语句,本题要填的空就在输出语句中,根据题目要求,要输出一个45的值,当然,用数组d输出这么一个结果很简单,为d[2],但选项中并没有这项,而是需要我们从结构体数组中输出这个值,从上面的分析我们知道,该值对应结构体数组第三个元素的成员,而当前的p执行第二个元素,从四个选项来分析,只有A选项能完成输出45的任务。

B选项中的++p->a由于运算符优先级问题,首先运行p->a,输出的是34,然后加1,即输出35。

C选项中的(*p).a++等于((*p).a)++,这样的结果是34++,最后的输出结果是34。

D选项中的p++->a等价于(p++)->a,显然是输出第二个结构体的a成员值,即34。

63.B

64.B

65.A按照从键盘输入的数据可以判断字符1赋给了变量a,字符2赋给了变量b,字符<cR>即回车赋给了变量e,字符3赋给了变量d。因此打印输出的结果为选项A)。

66.AC语言中语法上规定实型变量是不能存放整型类型的数据的,整型数据也不能存放实型数据。是为了避免类型转换之间可能会发生的错误。

67.C数组m下标从0到4计算,共5个元素,选项c)中m[0]=5,则m[m[0]]为m[5],超出了数组m的下标范围。因此正确答案为C)。

68.C

\n本题考查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正确。

\n

69.B

70.D本题考查两个知识点,按位异或左移把b左移2位化成二进制c=a(b<<2)=a^(000010<<2)=a^001000=0000001^O01000=9,故选择D。

71.Af函数交换局部变量a和b指针变量里的值,main调用并不改变参数的值,所以答案选择A)。

72.A本题主要考查逗号运算符。在本题的程序中,首先定义两个整型变量a和b,并分别赋初值为21和11,然后用输出语句对由a和b组成的表达式进行输出。输出语句的输出格式表明只输出一个数据,但在后面的输出列表中则有两个待输出的表达式。

--a+b,--b+a的运算顺序是首先运算--a+b,然后由于--和+运算符的优先级高于逗号运算符,因此,运算--b+a,最后执行逗号运算符。

运算--a+b的结果为31,但此时变量a的值变为了20,然后运算--b+a得到的结果为30,根据逗号运算符的特点,逗号运算符的结果为最后一个表达式的结果,因此,最后输出的30,本题正确的答案选A。

73.C

74.D本题主要考查if语句的条件表达式。在本题的四个选项中给出了四个不同的条件表达式,题目要求找出其中一个意思与其他三个不同的表达式。

选项A的表达式k%2的功能是对变量k进行取余运算,如果运算结果为假,表示变量k能被2整除,如果运算结果为真,表示k不能被2整除。

选项B的表达式k%2==1的功能是对变量k进行取余运算,并判断结果等于1,如果运算结果为假,表示k%2的运算结果为0,即k能被2整除;如果运算结果为真,表示k%2的运算结果为1,即k不能被2整除。

选项C的表达式(k%2)!=0的功能是对变量k进行取余运算,并判断结果不等于0,如果运算结果为假,表示k%2的运算结果0,即k能被2整除;如果运算结果为真,表示k%2的运算结果为1,即k不能被2整除。

选项D的表达式!k%2==1等价于(!k)%2==1,其功能是先对变量k进行逻辑非运算,然后将运算结果对2进行取余运算,再判断其结果是否等于1。这与前面三个选项的意思完全不同,因此本题的正确答案选D。

75.D\r\n

76.C

77.C

78.B本题要求选项中的表达式能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算。

在选项A中,n=(n*100+0.5)/100.0表示先将n后的前两位小数变成整数,然后对其第三位小数进行加0.5操作,这个操作其实是第三位小数在进行四舍五入运算时只有入,而没有舍运算。因此,本选项不能实现题目的要求。

在选项B中,m=n*100+0.5,n=m/100.0表示先将n后的前两位小数变成整数,然后对第三位小数进行加0.5操作,并将最后的运算结果赋值给一个整型变量m,这是数据的强制转换,它对小数部分的处理是直接舍弃,而在对第三位小数进行加0.5操作时,其实就是对第三位进行四舍五入运算。因此选项能实现题目的要求,是正确的答案。

在选项C中,根据运算符的优先级我们知道,先运算n*100,再运算0.5/100.0,最后将结果相加,与题目要求相差比较远。

在选项D中,n=(n/100+0.5)*100.0表示先除100,这不是对小数部分进行四舍五入运算,而是对整数部分进行四舍五入运算,与题目要求不一致。

79.D解析:本题考查while循环。第一次循环,先拿x的值和(y-1)比较,此时x=1,y-1=2,循环条件成立,比较完将x的值加1,此时x=2,进入循环,a=a+1=1,判断if语句的控制条件是否成立,y<x不成立,接着执行下一次循环。第二次循环,先拿x的值和(y-1)比较,此时x=2,y-1=1,循环条件成立,比较完将x的值加1,此时x=3,进入循环,a=a+1=2,判断if语句的控制条件是否成立,y<x成立,执行break语句退出循环。

80.C输入数据的格式必须与seanf()的格式控制串完全匹配,所以输入时必须在3和5之间输入“;”。

81.\n\t(1)错误:for(k=4;k<n;k++)

\n正确:for(k=4;k<=11;k++)

\n(2)错误:s2=S;

\n正确:s2=s;)

\n【解析】题目中要求计算数列前n项的和,包括第n项,因此“for(k=4;k<n;k++)”中的“k<n”应改为“k<=n”;根据C语言的语法规则,for循环体中的多条语句必须在大括号“{”和“}”之间,因此,要在语句s2=s;后加上)。\n

82.1floatfun(intm,fintn){Floatp1=1,p2=1,p3=1;inti;for(i=1;i<=m;i++)pi*=i;for(i=l;i<=n;i++)p2*=i;for(i=l;i<=(m-n);i++)p3*=i;returnpi/(p2*p3);本题考查循环的使用。通过3个for循环分别计算阶乘。其中p1=m!,p2=n!,p3=(m-n)!。2022-2023年浙江省衢州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若要求从键盘读入含有空格字符的字符串,应使用函数A.getc()B.gets()C.getchar()D.scanf()

2.高度为h的满二叉树的结点数是________个。

A.log2h+1B.2h+1C.2h-1D.2h-1

3.对长度为n的无序线性表进行顺序查找,则查找成功、不成功时的平均数据比较次数分别为()。

A.n/2,nB.n+1/2,n-1C.n+1/2,nD.n-1/2,n-1

4.下列关于C语言文件的叙述中正确的是()。

A.文件由一系列数据依次排列组成,只能构成二进制文件

B.文件由结构序列组成,可以构成二进制文件或文本文件

C.文件由数据序列组成,可以构成二进制文件或文本文件

D.文件由字符序列组成,其类型只能是文本文件

5.有以下程序:

程序的运行结果是()。

A.0987654321

B.4321098765

C.5678901234

D.0987651234

6.设有定义:charc[]=“Cc”;FILE*fp;且fp指向以“w”的方式成功打开的文件,若要将c中的两个字符写入文件,且每个字符占一行,则下面的选项中正确的是()。

A.fprintf(fp,“%c\n%c\n”,c[0],c[1]);

B.fprintf(fp,“%c\r\n%c\r\n”,c[0],c[1]);

C.fprintf(fp,“%c%c”,c[0],c[1]);

D.fprintf(fp,“%s\n”,c);

7.人们提出了用______的原理来设计软件,这就是软件工程学诞生的基础。

A.计算机科学B.数学C.工程学D.运筹学

8.以下程序的输出结果是______。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

9.下面程序的输出结果是

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

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

A.0B.1C.10D.9

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

A.a是实型变量,C允许进行赋值a=10,但不可以这样说:实型变量中允许存放整型值

B.在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式

C.执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0

D.已有a=3,b=5,当执行了表达式a=b,b=a之后,使a中的值为5,b中的值为3

11.交换两个变量的值,不允许用临时变量,应该使用下列()位运算符。

A.&.B.^C.||D.~

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

A.continue语句的作用是使程序的执行流程跳出包含它的所有循环

B.break语句只能用在循环体内和switch语句体内

C.在循环体内使用break语句和continue语句的作用相同

D.break语句只能用于switch语句体中

13.有以下程序

#include<stdio.h>

main()

{ints;

scanf(“%d”,&s);

while(s>0)

{switch(s)

{case1;printf(“%d”,s+5);

case2:printf(“%d”,s+4);break;

case3:printf(“%d”。s+3);

default:printf(“%d”,s+1);break;

}

seanf(“%d”,&s);

}

}

运行时,若输入12345O<回车>,则输出结果是A.6566456B.66656C.66666D.6666656

14.设有定义“inta=1,b=2,c=3;”,以下语句中执行效果与其他3个不同的是()。A.if(a>b)c=a,a=b,b=c;

B.if(a>b){c=a,a=b,b=c;}

C.if(a>b)c=a;a=b;b=c;

D.if(a>b){c=a;a=b;;b=c;}

15.设一组初始记录关键字序列为(Q,H,C,Y,P,A,M,S,R,D,F,X),则按字母升序的第一趟冒泡排序结束后的结果是()

A.F,H,C,D,P,A,M,Q,R,S,Y,X

B.P,A,C,S,Q,D,F,X,R,H,M,Y

C.A,D,C,R,F,Q,M,S,Y,P,H,X

D.H,C,Q,P,A,M,S,R,D,F,X,Y

16.对包含N个元素的散列表进行检索,平均检索长度________

A.为o(log2N)B.为o(N)C.不直接依赖于ND.上述三者都不是

17.

18.有以下程序:#include<stdio.h>voidfun(intn){if(n/2)fun(n/2);printf(“%d”,n%2);}main(){fun(10);printf(“\n”);}程序运行后的输出结果是()。

A.0101B.1000C.1100D.1010

19.在含有n个项点有e条边的无向图的邻接矩阵中,零元素的个数为________。

A.eB.2e9C.n2-eD.n2-2e

20.树最适合用来表示()。

A.有序数据元素B.无序数据元素C.元素之间具有分层次关系的数据D.元素间无联系的数据

二、2.填空题(20题)21.耦合和内聚是评价模块独立性的两个主要标准,其中______反映了模块内各成分之间的联系。

22.以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:

2223445666677899101010

删除后,数组中的内容应该是:

2345678910。

请填空。

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

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

if(a[j-1]【】a[i])

a[j++]=a[i];

【】;

}

main()

{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;

printf("Theoriginaldata:\n");

for(i=0;i<n;i++)printf("%3d",a[i]);

n=fun(a,n);

printf("\nThedataafterdeleted:\n");

for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");

}

23.下列程序的输出结果是______。

#include<stdio.h>

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=1,b=8,c=7,d=9;

t(a,b,c,d);

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

}

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

#include<stdio.h>

main()

{chars[20];

scanf("%s",s);

printf("%s",s);

}

运行程序,输入HOWAREYOU。

25.在结构化分析使用的数据流图(DFD)中,利用【】对其中的图形元素进行确切解释。

26.下列程序的输出结果是______。

longfun5(intn)

(longs;

if((n==l)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

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

27.已有文本文件test.txt,其中的内容为:Hello,everyone!。以下程序中,文件test.txt已正确为“读”而打开,由文件指针fr指向该文件,则程序的输出结果是【】。

#include<stdio.h>

main()

{

FILE*fr;charstr[40];

fgets(str,5,fr);

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

fclose(fr);

}

28.有以下程序#include<stdio.h>typedefstruct{intnum;doubles;}REC;voidfunl(REC*x){x->num=23;x->s=88.5;}voidmain(){RECa={16,90.0};fun1(&A);printf("%d\n",a.num);}程序运行后的输出结果是()。

29.数据库技术的主要特点为数据的集成性、数据的高【】和低冗余性、数据独立性和数据统一管理与控。

30.结构化程序设计的3种基本结构分别是顺序、选择和______。

31.若要使指针p指向一个double类型的动态存储单元,请填空。

p=【】malloc(sizeof(double));

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

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

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

#include<stdio.h>

main()

{inta,b,c,n;

a=2;b=0;c=1;n=1;

while(n<=3)

{c=c*a;b=b+c;++n;}

printf("b=%d",B);

}

34.以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

请填空。

#include"math.h"

doublefun(doublex){return(x*x-2*x+6);}

main()

{doublex,y1,y2;

printf("Enterx:");scanf("%lf",&x);

y1=fun(【】);

y2=fun(【】);

printf("y1=%lf,y2=%lf\n",y1,y2);

}

35.当数据的物理结构(存储结构)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【】。

36.对于长度为n的顺序存储的线性表,当随机插入和删除—个元素时,需平均移动元素的个数为【】。

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

#definePOW(r)(r)*(r)

main()

{intx=3,y=2,t;

t=POW(x+y);

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

}

38.数据库系统其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。

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

strcen(chara[],charb[])

{intnum=0,n=0;

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

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

return(num);

}

40.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是

【】。

#include<stdio.h>

main()

{chara,b;

a=getchar();scanf("%d",&b);

a=a-'A'+'0';b=b*2;

printf("%c%c\n",a,b);

}

三、1.选择题(20题)41.十进制数124转换成二进制数是()

A.111l010B.1111100C.1011111D.1111011

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

A.chara='A'b='B';

B.floata=b=10.0;

C.inta=10,*b=&a;

D.float*a,b=&a;

43.设有数组定义:chararray[]="China";则数组array所占的空间为()

A.4个字节B.5个字节C.6个字节D.7个字节

44.若定义了以下函数:voidf(…){…*p=(double*)malloc(10*sizeof(double));…}p是该函数的形参,要求通过p把动态分配存储单位的地址传回主调函数,则形参p的正确定义应当是()

A.double*pB.float**pC.double**pD.float*p

45.若执行下面的程序时,从键盘上输入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

46.以下各组选项中,均能正确定义二维实型数组a的选项是()

A.floata[3][4];floata[][4];floata[3][]={{1},{0}};

B.floata(3,4);floata[3][4];floata[][]={{0},{0}};

C.floata[3][4]staticfloata[][4]={{0},{0}};

D.floata[3][4];floata[3][];

47.下面函数的功能是char*fun(char*strl,char*str2){while((*strl)&&(*str2++=*strl++));returnstr2;}

A.求字符串的长度

B.比较两个字符串的大小

C.将字符串str1复制到字符串str2中

D.将字符串str1接续到字符串str2中

48.设有以下语句

typedefstructS

{intg;charh;}T;

则下面叙述中正确的是()A.可用S定义结构体变量B.可以用

温馨提示

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

评论

0/150

提交评论