2021年安徽省池州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021年安徽省池州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021年安徽省池州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021年安徽省池州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021年安徽省池州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

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

文档简介

2021年安徽省池州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是()

A.每个元素都有一个直接前件和直接后件

B.线性表中至少要有一个元素

C.表中诸元素的排列顺序必须是由小到大或由大到小

D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件

2.

有以下程序:

main

{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,

12,},{13,14,15,16}},i,j;

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

{for(j=0;j<i;j++)printf("%4c",);

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式输出数组右上半三角

1234

678

1112

16

则在程序下划线处应填入的是()。

A.i-1B.iC.i+1D.4一i

3.下面程序的运行结果是()#include<stdio.h>#include<string.h>main(){char*a="AbcdEf",*b="aBcD"a++;b++;printf("%d\n",strcmp(a,b));}

A.0B.负数C.正数D.无确定值

4.有下列程序:intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i]:returnsum;}main(){inta[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0;s=fun(a,5)+fun(b,4);printf("%d\n",s);}程序执行后的输出结果是()。、A.45B.50C.60D.55

5.下列叙述中正确的是:()A.C语言程序总是从第一个定义的函数开始执行

B.C语言程序中,函数类型必须进行显式声明

C.C语言程序中,return语句必须放在函数的最后

D.C语言程序中,return语句中表达式的类型应该与函数的类型一致

6.若有定义“inta=1,b=2,c=3,d=4,m=2,n=2;”,则执行“(m=a>b)&&(n=c>d)”后n的值是()。

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

7.已知各变量的类型说明如下则以下不符合C语言语法的表达式是()。A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)

8.若某链表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用()存储方式最节省运算时间。

A.单链表B.双链表C.单循环链表D.带头结点的双循环链表

9.采用折半查找法查找长度为n的线性表时,每个元素的平均查找长度为()。

A.O(n2)B.O(nlog2n)C.O(n)D.O(log2n)

10.在一个被调用函数中,关于return语句使用的描述,()是错误的。

A.被调用函数中可以不用return语句

B.被调用函数中可以使用多个return语句

C.被调用函数中,如果有返回值,就一定要有return语句

D.被调用函数中,一个return语句可以返回多个值给调用函数

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

A.为了建立一个关系,首先要构造数据的逻辑关系

B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项

C.一个关系的属性名表称为关系模式

D.一个关系可以包括多个二维表

12.具有10个叶子结点的二叉树中有()个度为2的结点。

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

13.以下与数学表达式“0<x<5且x≠2”不等价的C语言逻辑表达式是()。

A.(0<x<5)&&(x!=2)

B.0<x&&x<5&&x!=2

C.x>0&&x<5&&x!=2

D.(x>0&&x<2)||(x>2&&x<5)

14.若要求从键盘读入含有空格字符的字符串,应使用函数()。

A.getcharB.getcC.getsD.scanf

15.

16.语句:“printf("%d",(a=)&&(b=-2));”的输出结果是()。

A.无输出B.结果是不确定C.-1D.1

17.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},b[6];fp=fopen(“d.dat”,“w+b”);fwrite(a,sizeof(int),6,fp);for(i=0;i<6;i++)fwrite(&a[2],sizeof(int),1,fp);rewind(fp);fseek(fp,sizeof(int)*2,SEEK_CUR);fread(b,sizeof(int),6,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,b[i]);}程序运行后的输出结果是()。

A.3,4,5,6,3,3,B.1,2,3,4,5,6,C.3,4,5,6,1,2,D.3,4,5,6,1,1,

18.若有以下定义:chara;intb;floatc;doubled;则表达式a*b+b-c值的类型为()。A.floatB.intC.charD.double

19.现有1GB数据进行排序,计算资源只有1GB内存可用,下列排序方法中最可能出现性能问题的是()

A.堆排序B.插入排序C.归并排序D.快速排序E.选择排序F.冒泡排序

20.在C语言程序中,main函数的位置()

A.必须作为第一个函数B.必须作为最后一个函数C.可以任意D.必须放在它所调用的函数之后

二、2.填空题(20题)21.函数mycmp(char*s,char*t)的功能是比较字符串s和t的大小,当s等于t时返回0,当s>t时返回正值,当s<t时返回负值。请填空。

mycmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}

return(【】);

}

22.下列程序运行时输入1234567<CR>,则输出结果是______。

#include<stdio.h>

main()

{inta=1,b;

scanf("%2d%2d",&a,&b);printf("%d%d\n",a,b);

}

23.设有以下变量定义,并已赋确定的值,

charw;intx;floaty;doubleZ;

则表达式:w*x+z-y所求得的数据类型为上【】。

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

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

25.若从键盘输入58,则以下程序的输出结果是【】。

main()

{inta;

scanf(“%d”,&A);

if(a>50)printf(“%d”,A);

if(a>40)printf(“%d”,A);

if(a>30)printf(“%d”,A);

}

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

main()

{inti,a[10];

a[0]=a[1]=1;

for(i=2;i<5;i++)

a[i]=a[i-2]+a[i-1];

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

{if(i%2==0)printf("\n");

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

}

}

27.设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。

28.\13'在内存中占1个字节,"\12"在内存中占______个字节。

29.“printf("%d\n",strlen("\t\"\023\xAB\nC"));”语句的输出结果是()。

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

31.下面函数用来求出两个整数之和,并通过形参传回两数相加之和值。请填空。

intadd(intx,inty,【】,)

{【】=x+y;}

32.Jackson方法是一种面向【】的结构化方法。

33.以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值,请填空。

voidfun(int,int,int(*)[4],int*);

main()

{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;

fun(3,4,a,b);

for(1=0;i<3;i++)printf("%4d",b[i]);

printf("\n");

}

voidfun(intm,intn,intar[][4],int*bar)

{inti,j,x;

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

{x=ar[i][0];

for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

【】=x;

}

}

34.mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。

intmystrlen(char*str)

{inti;

for(i=0;【】!='\0';i++);

return(i);}

35.若给fun函数的形参s传送字符串:"abc-6354abc",则函数的返回值是()。(字符串中包括空格)

longfun(charS[])

{longn;intsign;

for(;isspace(*s)||islower(*s);s++);

sign=(*s=='-')?-1:1;

if(*s=='+'||*s=='-')s++;

for(n=0;isdigit(*s);s++)

n=10*n+(*S-'0');

returnsign*n;

}

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

37.关系数据库管理系统能实现的专门关系运算包括选择、连接和【】。

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

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;

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

}

39.在面向对象的方法中,______描述的是具有相似属性与操作的一组对象。

40.在对文件进行操作的过程中,若要是文件位置的指针回到文件的开头,应使用的函数是【】。

三、1.选择题(20题)41.若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元int*pp=______malloc(sizeof(int));则应填入______。

A.intB.int*C.(*int)D.(int*)

42.有如下程序段int*p,a=10,b=1;p=&a;a=*p+b;执行该程序段后,a的值为______。

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

43.在C语言中,以下说法不正确的是()。

A.在C程序中,整数和实数都能被准确无误地表示出来

B.在C程序中,任何一个变量名都代表存储器中的一个位置

C.静态变量的生存期与整个程序的运行期相同

D.C语言中,任何变量都必须先声明才能进行引用

44.在下列几种排序方法中,要求内存量最大的是______。

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

45.下述关于C语言文件的操作的结论中,正确的是______。

A.对文件操作必须先关闭文件

B.对文件操作必须先打开文件

C.对文件操作顺序无要求

D.对文件操作前必须先测文件是否存在,然后再打开文件

46.下列程序的运行结果是()。#include<stdio.h>main(){intx=5,a=1,b=2,c=5,d=0;if(a<B)if(b!=3)if(!C)x=1;elseif(D)x=1;elsex=-1;printf("%d",x);}

A.-1B.0C.1D.不确定的值

47.在C语言中,表达式10!=9的值是______。

A.真B.非零值C.0D.1

48.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是______。

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

49.与十进制数200等值的十六进制数为A.A8B.A4C.C8D.C4

50.下列程序执行后的输出结果是voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}

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

51.有以下程序inta=3;main(){ints=0;{inta=5;s+=a++;}s+=a++;printf("%d\n",s);}程序运行后的输出结果是______。

A.8B.10C.7D.11

52.若有以下程序段(n所赋值的是八进制数):intm=32767,n=032767;printf("%d,%o\n",m,n);执行后输出结果是______。

A.32767,32767B.32767,032767C.32767,77777D.32767,077777

53.以下程序的输出结果是()。#include<stdio.h>main(){printf("%d\n",NULL);}

A.不确定的值(因变量无定义)B.0C.-1D.1

54.Modem的功能是实现()

A.数字信号的编码B.模拟信号的采样、量化C.数字信号的整形D.模拟信号与数字信号的转换

55.以下叙述中正确的是______。A.预处理命令行必须位于源文件的开头

B.在源文件的一行上可以有多条预处理命令

C.宏名必须用大写字母表示

D.宏替换不占用程序的运行时间

56.C语言中while和do-while循环的主要区别是

A.do-while的循环体至少无条件执行一次

B.while的循环控制条件比do-while的循环控制条件更严格

C.do-while允许从外部转到循环体内

D.do-while的循环体不能是复合语句

57.以下关于long、int和short类型数据占用内存大小的叙述中正确的是(),

A.均占4个字节B.根据数据的大小来决定所占内存的字节数C.由用户自己定义D.由C语言编译系统决定

58.设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:□代表空格字符)

A.10□X□20□Y<回车>

B.10□X20□Y<回车>

C.10□X<回车>20□Y<回车>

D.10X<回车>20Y<回车>

59.下列关系运算中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是()。

A.选择B.连接C.投影D.并

60.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;}程序在执行了c=&b;b=&a;语句后,表达式**c的值是______。

A.变量a的地址B.变量b中的地址C.变量a中的值D.变量b的地址

四、选择题(20题)61.下面程序的功能是输出以下形式的金字塔图案。

main()

{

inti,j;

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

{

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

printf("");

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

printf("*");

printf("\n");

}

}

在下画线处应填入的是

A.iB.2*i-1C.2*i+1D.i+2

62.已知i,j,k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是

A.scanf("%2d,%2d,%2d",i,j,k);B.scanf("%d%d%d",&i,&j,&k);

C.scanf("%d,%d,%d",&i,&j,&k);D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

63.在数据结构中,与所使用的计算机无关的是数据的()。

A.存储结构B.物理结构C.逻辑结构D.物理和存储结构

64.栈和队列的共同特点是()。

A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素D.没有共同点

65.有以下程序段当执行上述程序段,从键盘上输A,555667777123后,y的值为()。

A.566.0B.55566.0C.7777.0D.566777.0

66.

67.以下语句中存在语法错误的是()。

68.有以下程序则输出结果是()。A.1245B.1256C.1278D.1267

69.有以下程序:

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

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

70.已定义以下函数:

fun(int*p)

{return&p;}

该函数的返回值是()。

A.不确定的值

B.形参p中存放的值

C.形参p所指存储单元中的值

D.形参p的地址值

71.

72.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

73.下面四个选项中,均是不正确的8进制数或16进制数的选项是

A.0160x8f018

B.0abc0170xa

C.010-0x110x16

D.0a127ff-123

74.fscanf函数的正确调用形式是

A.fscanf(文件指针,格式字符串,输出表列);B.fscanf(格式字符串,输出表列,文件指针);

C.fscanf(格式字符串,文件指针,输出表列);D.fscanf(文件指针,格式字符串,输入表列);

75.以下不能定义为用户标识符的是()

A.MainB._0C._intD.sizeof

76.有以下程序:

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

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

77.

78.设变量已正确定义,则以下能正确计算f=n!的程序是()。

A.f=0;for(i=1;i<=n;i++)f*=i;

B.f=1;for(i=1;i<n;i++)f*=i;

C.f=1;for(i=n;i>1;i++)f*=i;

D.f=1;for(i=n;i>=2;i--)f*=i;

79.

80.若程序中有宏定义行:#defineN100则以下叙述中正确的是()。

A.宏定义行中定义了标识符N的值为整数100

B.在编译程序对C源程序进行预处理时用100替换标识符N

C.对C源程序进行编译时用100替换标识符N

D.在运行时用100替换标识符N

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:计算n!。例如,若输人:6,则输出:6!=720.000000。

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

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

试题程序:

六、程序设计题(1题)82.使用vc++2010打开文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),其功能是在一组得分中,去掉一个最高分和一个最低分,然后求平均值,并通过函数返回该值。函数形参a指向存放得分的数组,形参n中存放得分个数(n>2)。例如,若输入8.4共10个得分,则输出结果为8.687500。注意:部分源程序存放在文件prog1.c中,请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.D解析:线性表可以为空表,排除选项B。第一个元素没有直接前件,最后一个元素没有直接后件,故排除选项A。线性表的定义中,元素的排列没有规定大小顺序,故选项C也有误,只有D项是正确的。

2.B

\n本题中要求输出右上半角的数,对角线上的数的下标相同,所以j=i。

\n

3.C

4.C在函数intfun(intx[],intn)的定义中,变量sum为一个静态局部变量。由于在整个程序运行期间,静态局部变量在内存中的静态存储中占据着永久的存储单元。函数intfun(intx[],intn)的功能是求出数组x[]各个元素的和,所以在主函数中,调用函数fun(a,5)后,变量sum=1+2+3+4+5=15,当再次调用fun(b,4)后,变量sum=15+6+7+8+9=45,所以s=15+45=60。

5.DC程序程序总是从main函数开始执行。C程序中如果没有对函数类型进行说明,则该函数默认为int类型。return语句可以放在函数任意位置,但是return之后的语句不会被执行。

6.C对于表达式“(m=a>b)&&(n=c>d)”,首先执行m=a>b,由于a、b的值分别为1、2,因此a>b的值为0,m的值为0,又由于逻辑与运算符&&的短路原则,第1个表达式的值为假,因此整个表达式的值已经确定为假,第2个表达式不会被执行,n的值依然是2。本题答案为C选项。

7.A

8.D

9.D

10.D

11.C解析:在格式化模型中,要事先根据应用的需要,确定数据之间的逻辑关系,即先对数据进行结构化。在关系模型中,不需要事先构造数据的逻辑关系,只要将数据按照一定的关系存入计算机,也就是建立关系。所以选项A错误。对于一个表示关系的二维表,其最基本的要求是表中元组的每一个分量必须是不可分的数据项,即不允许表中再有表。所以,选项B、D说法是错误的。一个关系的属性名表称为关系模式,也就是二维表的表框架,相当于记录型。因此,选项C说法正确。

12.B

13.A在C语言里不能直接表达“0<x<5”,需要分步骤来实现,即使用“x>0&&x<5”来描述。在C语言里,“0<x<5”属于一个逻辑运算表达式,可以理解为“(0<x)<5”,因此选项A错误。故本题答案为A选项。

14.C当输入字符串时,函数scanf用“空格”间隔不同的字符串,scanf函数不能输入空格。getchar函数用于输入字符,其调用形式为ch=getchar(),getehar函数从终端读入一个字符作为函数值,把读入的字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户按<Enter>键时,读入才开始执行。gets函数的调用形式为getS(Str_adr),其中“str_adr”是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。gets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc函数的调用形式为ch=getc(Pf),其中“pf”是文件指针,函数的功能是从“pf”指定的文件中读入一个字符,并把它作为函数值返回。故本题答案为C选项。

15.B

16.D因为在逻辑表达式中,两边的赋值表达式都成立,即值为1,故选择D选项。

17.A程序首先以读二进制文件的方式打开文件d.dat;然后使用fwrite函数将数组a中6个元素写入d.dat中。并调用for循环将a[2]元素(值为3)6次写入d.dat文件中;接着使用rewind函数将文件指针fp移动到文件头;再使用fseek函数将fp从当前位置向后移动2个整数位置;最后使用fread函数从fp指向的位置向后读取6个整数。由此可知这6个整数分别是:3,4,5,6,3,3。故本题答案为A选项。

18.D在表达式a*b+d-c中,double的类型最高,C语言中,由低类型自动向高类型转换,所以最后的结果一定是double型。

19.C

20.C

21.*s-*t*s-*t解析:本题考查比较字符串的大小。函数的两个形参是两个字符指针变量,指针变量的值是字符串的首地址,*s和*t表示s和t指向的第一个字符,在while循环中,通过s和t指针的移动,不断改变所指字符,通过返回s和t的第一个不同字符的ASCII码的差值*s-*t得到结果。

22.本题考查的重点是scanf函数的调用。scanf(“<格式化字符串>”,<地址表>),格式化字符串后可以加上场宽,本题中两个变量的场宽都为2,所以输入1234567<CR>后,变量a的值为12。变址b的值为34,从而输出为1234。\r\n\r\n

23.double型或双精度型double型或双精度型解析:①先进行w*x的运算,先将字符型w转换成整型,运算结果为整型;②再将w*x的结果与z相加,要先将第一步的整型转换为double型,运算结果为double型;③最后将w*x+z的结果与y相减,要先将float型y转换成double型,结果为double型。

24.136136解析:本题考核的知识点是函数递归。主函数调用函数fun(6),由于6/2>0为真递归调用fun(3),接着递归调用fun(1),输出1,返回上一层输出3,在返回上一层输出6。故空格处应该填136。

25.585858585858解析:在程序中,执行scanf()语句后,a被赋值为58。接着执行第一个if语句,因为,a=58>50,执行第一个if语句后面的输出语句,输出58;接着执行第二个if语句,因为,a=58>40,执行第二个if语句后面的输出语句,输出58;接着执行第三个if语句,因为,a=58>30,执行第三个if语句后面的输出语句,输出58,所以最后的输出为585858。

26.11<CR>23<CR>5(<CR代表换行)11<CR>23<CR>5(<CR,代表换行)解析:本题通过语句“for(i=2;i<5;i++)a[i]=a[i-2]+a[i-];”将数组中前面两项的和赋值给数组当前元素,得到a的值应为(1,1,2,3,5)。语句if(i%2==0)pfintf('\\n')是要将数组中的元素以每行2个的形式输出。

27.350350解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。在根据完全二叉树的定义,在一棵完全二叉树中,最多有1个度为1的结点。因此,设一棵完全二叉树具有n个结点,若n为偶数,则在该二叉树中有n/2个叶子结点以及n/2-1个度为2的结点,还有1个是度为1的结点:若n为奇数,则在该二叉树中有[n/2]+1个叶子结点以及[n/2]个度为2的结点,没有度为1的结点。本题中,完全二叉树共有700个结点,700是偶数,所以,在该二叉树中有350个叶子结点以及349个度为2的结点,还有1个是度为1的结点。所以,本题的正确答案为350。

28.22解析:'\\13':表示八进制数13表示的ASCII字符,是一个字符,占一个字节;而”\\12”是个字符串,除了八进制数12表示的ASCII字符占一个字节外,还有在字符串的末尾加上串结束标志“'\\0'”,所以共有2个字节。

29.66解析:strlen()函数的作用是计算字符串的长度并作为函数的返回值,这里的长度不包括串尾的结束标志\'\\0\'。\'\\t\'是转义字符,代表横向跳若干格;\'\\'\'是转义字符,代表双引号:\'\\023\'也只代表一个字符,而不管转义字符后面有几个符;\'\\xAB\'是以两位十六进制数AB表示的ASCII码字符,只代表一个字符;\'\\n\'是转义字符,代表回车换行。题中语句中的字符串有5个字符常量各代表一个字符,再加上字母C,所以返回的长度是6。

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

31.int*p*p或p[0]int*p\r\n*p或p[0]

32.数据结构数据结构解析:Jackson方法是—‘种面向数据结构的结构化方法。

33.bar[i]bar[i]解析:fun函数中的内层for循环,求出了每一行中的最大值x,内循环结束后就需要把最大值放在存储每行最大值的数组bar[i]中,因此应填bar[i]。

34.*(str+i)或str[i]*(str+i)或str[i]解析:str是指针变量,它指向字符型数据,在循环过程中,可以用*(str+i)来访问字符串中的第i个元素,判断是否是结束标志,如果不是,i=i+1,继续取下一个元素进行判断,直到*(str+i)的值为'\\0'为止,也可以用下标的方式引用字符,如*(str+i)相当于str[i]。

35.-6354-6354解析:本题的考查点是函数的返回值。这个函数的目的是提取出由函数的形参传送来的字符串中的数字字符,并通过相应字符位置计算出它们数值形式的幂,最后返回字符串中的数字字符的数值形式,所以函数的返回值应当是“-6354”。

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

37.投影专门关系运算包括对单个关系进行垂直分解(投影操作)或水平分解(选择操作)和对多个关系的结合(连接操作)等。

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

39.类类解析:在面向对象的方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。

40.rewind函数rewind函数解析:rewind函数的功能是使文件的位置指针回到文件的开头。

41.D解析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型*)。

42.B解析:执行p=&a;后,p指向整数a,*p即p的目标变量,也就是a;所以a=*p+b等价于a=a+b,可知a的值最终为11。

43.A解析:此题考查C语言的基本概念。变量的实质就是在内存中占据一定的存储单元,存储单元里存放的是该变量的值,变量的值可以根据需要进行修改;整数在允许的范围内可以准确的表示出来,但不可能表示无限度的实数。

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

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

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

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

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

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

成一个新的有序表。

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

45.B解析:在C中对文件操作必须先打开文件,待文件操作完毕后要关闭文件。对文件以读的方式进行打开操作时,同时会执行文件的检查文件是否存在,不存在将会返回空的文件指针,如果对文件以写的方式打开时,文件不存在,将会自动创建文件,因此在C中打开文件前不必对其检查文件是否存在,故答案为B。

46.A解析:本题考查ifelse语句。第1个if语句,先判断条件,发现a<b条件成立,执行下列的语句;第2个if语句,先判断条件,发现b!=3条件成立,执行下列的语句:第3个if语句,先判断条件,c=5,则!c条件不成立,执行与其配对的else语句:第4个if语句,先判断条件,d=0,条件不成立,则x=-1,结束循环。

47.D

48.D解析:通常,引用一个数组元素可以用下标法,如a[P-a]形式,或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出了数组范围,注意,数组的下标是从0开始的。

49.C解析:本题考查十六进制与十进制之间的转换:A8=10*16+8*1=168;

A4=10*16+4*1=164;

C8=12*16+8*1=200;

C4=12*16+4*1=196

50.A解析:函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针型。它的作用是将一个变量的地址传递到另一个函数中。当数组名作参数时,如果形参数组中的各元素的值发生变化,实参数组元素的值也将随之发生变化。

51.A解析:本题中定义一个全局变量a和一个局部变量a。局部变量和全局变量的不同在于,局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语句)时生成,退出其所在的函数体(或复合语句)时消失,而全局变量是在函数外部任意位置上定义的变量,它的作用域从变量定义的位置开始,到整个源文件结束为止。若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽,在该函数内,起作用的将是局部变量,与同名的全局变量不发生任何关系。在程序中首先定义了变量s并赋值为0,接着在嵌套的复合语句{}中定义了变量a并赋初值为5,接着执行语句s+=a+a;在这条语句中a加1,但表达式a++还是原来的值,故s=s+5,s为5,程序执行到外层,此时{}内定义的变量a不再有效,此时的变量a为{}之前定义的且初值为3,接着执行{}后面的语句s+=a++;相当于执行语句s=s+(++);即s=5+3,最后值为8,所以最后输出的s值为8。所以4个选项中A正确。

52.A解析:“%o”以八进制无符号形式输出整数,n=032767中的032767是整数的八进制形式,当以“%o”格式输出n时,结果仍为32767。

53.B解析:在C语言中NULL的ASCII码值为0,而输出函数要求以整形格式输出,故最后的输出数0。所以,选项B正确。

54.D

55.D本题主要考查宏的一些基本概念。通常,预处理命令位于源文件的开头,但不一定必须位于开头,也可以写在函数与函数之间;由于预处理命令的末尾不加分号,不以分号来区分一条宏命令,所以,不能在一行上写多条预处理命令,只能写一条,否则,系统处理时就会把它当做一条命令处理;宏名一般习惯用大写字母表示,以便与变量名相区别,这只是习惯用法,并不是C语言中有这样的规定,宏的定义可用小写字母;C语言中,宏的替换是在程序编译时进行,不占用程序运行的时间,故本题答案为D。

56.A解析:while是先判断条件再执行语句;do-while则是先执行依次语句再判断条件从而决定是否继续再执行循环体中的语句,这正是二者主要区别。注意:3种循环结构的比较。

57.D解析:在C语言的标准中,short占2个字节、long占4个字节,但int的大小和编译系统相关。例如在Turbo\u3000C\u30002.0中,int占2个字节,但在VisualC++6.0(VC6可以用做C语言编译器)中占4个字节。故本题应该选择D。

58.D解析:本题中,scanf函数的格式控制没有空格,所以,对于选项A)、B)、C),输入的第一个空格会作为字符赋值给变量c1,而不会被解释成分隔符。

59.B选择,连接,投影是专门的关系运算,选择是选择满足条件的元组,而投影是选择满足条件的属性或者说列。并是传统的关系运算,是将两个关系中的元组合并在一起再去掉重复的部分。选择,投影,并三个运算得到的结果属性数并没有改变或者说还有减少,而连接时将两个关系进行笛卡尔积运算,在挑选满足条件的项。其属性个数一般会多于原来关系中的属性数。

60.C解析:指针变量是用来存放地址的。&:取地址运算符。*:指针运算符。**c为指针变量*c所指向的存储单元,*c为指针指针变量c所指向的存储单元,而c=&b表示c为变量b的地址,b=&a表示b为变量a的地址。表边式**c的值就是变量a中的值。

61.B本题是找出打印*号的条件,从图中我们可以找到规律,第1行1个*,第2行3个,第3行5个……,也就是每行中*的个数恰好是行数的2倍减1个。

在程序中,首先定义两个循环变量,然后执行for循环,从程序中不难看出,这个循环用来输出题目中给出的4行*符号。

当循环变量i=1时,即输出第一行的*图像,从图像中可以看出,第一行只需要输出一个*符号,而且在其输出前,先输出三个空格,从程序中我们可以看出,该循环体中第一个循环的作用用来输出三个空格,第二个循环的作用肯定是用来输出*符号,本题需要填空的地方正好是这个循环的结束条件,根据第一行只输出一个*符号,我们可以知道这个循环执行一次。

同理,我们可以知道,当循环变量i=2时,这个循环需要执行3次,i=3时,这个循环执行5次,i=4时,这个循环执行7次,那么我们可以推断出循环结束的条件应该与变量i有关,结合我们开始对题目的分析,每行中*的个数恰好是行数的2倍减1个,因此,可以知道本题需要填写的内容为2*i-1,本题正确答案选B。

62.C本题主要考查scanf输入语句及其格式。在本题中的四个选项中,分别用不同的格式试图从键盘输入数据。

在选项A中,给出的输入格式是“%2d,%2d,%2d”,表示输入的数据中间用逗号隔开,而且其输入的宽度为2,即可以输入一个两位数,如果输入的位数小于2,则左边补空格。在其输出列表中,表示方式也不对,其他三项是正确的。

在选项B中,给出的输入格式是“%d%d%d”,仅表示输入的数据中间用空格隔开。

在选项C中,给出的输入格式是“%d,%d,%d”,仅表示输入的数据中间用逗号隔开,与题目给出的要求一致,为正确答案。

在选项D中,给出的输入格式是“i=%d,j=%d,k=%d”,表示输入的数据中间不仅用逗号隔开,还需要如“i=”的说明符。

63.C解析:数据结构概念一般包括3个方面的内容,数据的逻辑结构、存储结构及数据上的运算集合。数据的逻辑结构只抽象地反映数据元素之间的逻辑关系,而不管它在计算机中的存储表示形式。

64.C解析:考查栈和队列概念的掌握。栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种'后进先出'的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种'先进先出'的线性表。模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从弱到强,可以将其分成5级,分别是:数据耦合、同构耦合、控制耦合、公用耦合和内容耦合。选项C),没有这种耦合方式。

65.A本题考查的是格式输)ki$i数,即按用户指定的格式从键盘上把数据输入到指定的变量之中,其中的格式命令可以说明最大域宽。在百分号(%)与格式码之间的整数用于限制从对应域读入的最大字符数。因此j的值为55,y的值为566.0,字符数组nanle的值为7777123。故本题答案为A)。

66.C

67.A数组定义后,不可以对数组整体赋值,s是二维数组,因SS[1]是一维字符数组,即字符串,字符串赋值可以使用strcpy(SS[1],”right”);这样的形式,而选项A中对二维数组中的第…l维(相当于一个一维数组)赋值,是不可以的。选项8和D是定义时对数组初始化,这是可以的。选项c中,将字符串在内存中的首地址赋给指针数组的一个元素,这是可以的。

68.A本题考查的是输入输出函数。sCanf()是格式化输入函数;getChar()函数从键盘缓冲区读一个字符;putChar()输出一个字符;printf()函数是格式化输出函数。在题目中,程序执行到sCanf()函数时,会暂停等待用户输A4个字符,按题意输)k123<回车>后,字符l-3被分别赋值到Cl-C3中,而C4会得到一个换行符’\\\\n’。然后执行第1个getChar()函数,由于前面的sCanf()函数读完了缓冲区中的所有字符,所以此时程序又会暂停等待用户输入,按题意输入45678<回车>后,缓冲区第一个字符4赋值到。5,第二个字符5赋值给C6,所以本题应该选择A)。

69.A本题考查的是指向数组的指针。本题中定义了一个字符串数组和指针,并将指针pc指向该数组的首地址,执行输出语句printf(”%c\n”,*(pc+5));。语句中的

*(pc+5)指的就是pc[5]的值,所以最后输出的结果为z。

70.D&p是p自己的地址值,p所代表的存储单元里的值为p所指的存储单元的地址。

71.C

72.D解析:中序遍历的递归算法定义:①遍历左子树;②访问根结点;③遍历右子树。前序遍历的递归算法定义:①访问根结点;②遍历左子树;③遍历右子树。后序遍历的递归算法定义:①遍历左子树;②遍历右子树;③访问根结点。根据前序遍历的结果可知,a是根结点。由中序遍历的结果dgbaechf可知,d、g、b是左子树的结点,e、c、h、f是右子树的结点。再由前序遍历的结果bdg可知,b是a左边子树的根,由cefh可知,c是a右边子树的根。再由中序遍历的结果dgb可知,d、g是b左边子树的结点,b右边子树无结点。再由前序遍历结果dg可知,d为b左子树的根,g是以d为根的子树的右结点。至此,a的左子树已完全弄清楚了。同样的道理,可以弄清楚以c为根的子树的结点位置。所以可知后序遍历的结果是D。

73.D本题主要考查八进制数和十六进制数的正确表示。八进制数的特点是以0开头,而且数据中的每个数都要小于8;而十六进制数的特点是以0X开头,数据中的元素除了0~9这些数字外,还可以是A、B、C、D、E、F这些字符。

在选项A中,018的表示是错误的,因为八进制数中不应该出现8这个数字元素。另外两个表示正确。

在选项B中,0ABC的表示不正确,八进制数中根本不应该出现ABC这些数字元素。另外两个正确。

在选项C中,没有不正确的表示方法。

在选项D中,0A12的表示不正确,而7FF和-123根本就不是八进制或十六进制数,因此本题正确答案选D。

74.D本题主要考查fscanf函数的调用形式。fscanf函数与scanf函数类似,都是格式化输入函数,它们不同的地方是:fscanf函数输入的对象不是终端,而是磁盘文件,函数的调用格式为:

fscanf(文件指针,格式字符串,输入表列)

其中文件指针指向待操作的磁盘文件,而格式字符串描述的是输入内容的格式,输入列表描述的是与输入格式对应的输入元素,输入列表中可以有多个输入元素。

75.D解析:C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线,标识符名不能与关键字重名。选项A)中Main与主函数名main不同,所以选项D)是非法的标识符。

76.C该程序中int8pl=&a,+p2=&b,4P=&c;指定义三个指针变量,并赋值,即使pl指向a;p2指向b;p指向c。+P=。pl$(+p2)。;该条语句是给P所指的存储单元c赋值,就是pl所指的存储单元的值,即a的值,与p2所指的存储单元b的值相乘,也就是c=a+b,等价于c=1·3=3;因此C选项正确。‘

77.A

78.D\n由n!的数字定义可知n!=n*(n-1)*(n-2)*…*1。在选项A中,由于f的初值为0,在for循环语句中,f依次乘以l,2,3,…,n,最后计算得到f=n!=0,所以选项A不正确。在选项B中,f的初值为1,在for循环语句中,f依次乘以l,2,3,…,(n-1),最后计算得到f=(n-1)!,所以选项B不正确。在选项C中,f的初值为l,在for循环语句中,f依次乘以n,n+1,n+2,……,所以选项C不正确。在选项D中,f的初值为l,在for循环语句中,f依次乘以n,n-1,n-2,…,2,最后计算得到f=n!,所以选项D正确。

\n

79.C

80.B解析:宏定义是预处理命令,即在C源程序进行编译之前,编译程序对源程序进行编译预处理时所进行的一种替换操作。所以选项C和\u3000D可以排除。宏定义是用宏名代替一个字符串,也就是作简单的置换,不做正确性检查。所以选项A的叙述也不正确,宏替换时100被当作一个字符串来替换宏名的,而不是被看作整数值100。故本题的正确答案为B。

81.

82.1doublefun(doublea[],intn)Doublesum=0,max,min;inti;max=min=a[0];for(i=0;i<n;i++){</n;i++)<n;i++)sum=sum+a[i];</n;i++)if(max<a[i])max=a[i];<n;i++)if(min>a[i])min=a[i];</n;i++)<n;i++)sum=sum-max-min;</n;i++)<n;i++)return(sum/(n-2));</n;i++)<n;i++)}</n;i++)<n;i++)设定3个变量,sum存放和值,max存放最大值,min存放最小值。max和min都赋为数组中第1个元素的值。利用循环将数组中元素累加到sum中,并找出最大值和最小值。sum值减去最大值和最小值。函数返回sum除以(元素个数减2)得平均值。</n;i++)2021年安徽省池州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是()

A.每个元素都有一个直接前件和直接后件

B.线性表中至少要有一个元素

C.表中诸元素的排列顺序必须是由小到大或由大到小

D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件

2.

有以下程序:

main

{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,

12,},{13,14,15,16}},i,j;

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

{for(j=0;j<i;j++)printf("%4c",);

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式输出数组右上半三角

1234

678

1112

16

则在程序下划线处应填入的是()。

A.i-1B.iC.i+1D.4一i

3.下面程序的运行结果是()#include<stdio.h>#include<string.h>main(){char*a="AbcdEf",*b="aBcD"a++;b++;printf("%d\n",strcmp(a,b));}

A.0B.负数C.正数D.无确定值

4.有下列程序:intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i]:returnsum;}main(){inta[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0;s=fun(a,5)+fun(b,4);printf("%d\n",s);}程序执行后的输出结果是()。、A.45B.50C.60D.55

5.下列叙述中正确的是:()A.C语言程序总是从第一个定义的函数开始执行

B.C语言程序中,函数类型必须进行显式声明

C.C语言程序中,return语句必须放在函数的最后

D.C语言程序中,return语句中表达式的类型应该与函数的类型一致

6.若有定义“inta=1,b=2,c=3,d=4,m=2,n=2;”,则执行“(m=a>b)&&(n=c>d)”后n的值是()。

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

7.已知各变量的类型说明如下则以下不符合C语言语法的表达式是()。A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)

8.若某链表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用()存储方式最节省运算时间。

A.单链表B.双链表C.单循环链表D.带头结点的双循环链表

9.采用折半查找法查找长度为n的线性表时,每个元素的平均查找长度为()。

A.O(n2)B.O(nlog2n)C.O(n)D.O(log2n)

10.在一个被调用函数中,关于return语句使用的描述,()是错误的。

A.被调用函数中可以不用return语句

B.被调用函数中可以使用多个return语句

C.被调用函数中,如果有返回值,就一定要有return语句

D.被调用函数中,一个return语句可以返回多个值给调用函数

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

A.为了建立一个关系,首先要构造数据的逻辑关系

B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项

C.一个关系的属性名表称为关系模式

D.一个关系可以包括多个二维表

12.具有10个叶子结点的二叉树中有()个度为2的结点。

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

13.以下与数学表达式“0<x<5且x≠2”不等价的C语言逻辑表达式是()。

A.(0<x<5)&&(x!=2)

B.0<x&&x<5&&x!=2

C.x>0&&x<5&&x!=2

D.(x>0&&x<2)||(x>2&&x<5)

14.若要求从键盘读入含有空格字符的字符串,应使用函数()。

A.getcharB.getcC.getsD.scanf

15.

16.语句:“printf("%d",(a=)&&(b=-2));”的输出结果是()。

A.无输出B.结果是不确定C.-1D.1

17.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},b[6];fp=fopen(“d.dat”,“w+b”);fwrite(a,sizeof(int),6,fp);for(i=0;i<6;i++)fwrite(&a[2],sizeof(int),1,fp);rewind(fp);fseek(fp,sizeof(int)*2,SEEK_CUR);fread(b,sizeof(int),6,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,b[i]);}程序运行后的输出结果是()。

A.3,4,5,6,3,3,B.1,2,3,4,5,6,C.3,4,5,6,1,2,D.3,4,5,6,1,1,

18.若有以下定义:chara;intb;floatc;doubled;则表达式a*b+b-c值的类型为()。A.floatB.intC.charD.double

19.现有1GB数据进行排序,计算资源只有1GB内存可用,下列排序方法中最可能出现性能问题的是()

A.堆排序B.插入排序C.归并排序D.快速排序E.选择排序F.冒泡排序

20.在C语言程序中,main函数的位置()

A.必须作为第一个函数B.必须作为最后一个函数C.可以任意D.必须放在它所调用的函数之后

二、2.填空题(20题)21.函数mycmp(char*s,char*t)的功能是比较字符串s和t的大小,当s等于t时返回0,当s>t时返回正值,当s<t时返回负值。请填空。

mycmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}

return(【】);

}

22.下列程序运行时输入1234567<CR>,则输出结果是______。

#include<stdio.h>

main()

{inta=1,b;

scanf("%2d%2d",&a,&b);printf("%d%d\n",a,b);

}

23.设有以下变量定义,并已赋确定的值,

charw;intx;floaty;doubleZ;

则表达式:w*x+z-y所求得的数据类型为上【】。

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

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

25.若从键盘输入58,则以下程序的输出结果是【】。

main()

{inta;

scanf(“%d”,&A);

if(a>50)printf(“%d”,A);

if(a>40)printf(“%d”,A);

if(a>30)printf(“%d”,A);

}

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

main()

{inti,a[10];

a[0]=a[1]=1;

for(i=2;i<5;i++)

a[i]=a[i-2]+a[i-1];

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

{if(i%2==0)printf("\n");

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

}

}

27.设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。

28.\13'在内存中占1个字节,"\12"在内存中占______个字节。

29.“printf("%d\n",strlen("\t\"\023\xAB\nC"));”语句的输出结果是()。

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

31.下面函数用来求出两个整数之和,并通过形参传回两数相加之和值。请填空。

intadd(intx,inty,【】,)

{【】=x+y;}

32.Jackson方法是一种面向【】的结构化方法。

33.以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值,请填空。

voidfun(int,int,int(*)[4],int*);

main()

{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;

fun(3,4,a,b);

for(1=0;i<3;i++)printf("%4d",b[i]);

printf("\n");

}

voidfun(intm,intn,intar[][4],int*bar)

{inti,j,x;

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

{x=ar[i][0];

for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

【】=x;

}

}

34.mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。

intmystrlen(char*str)

{inti;

for(i=0;【】!='\0';i++);

return(i);}

35.若给fun函数的形参s传送字符串:"abc-6354abc",则函数的返回值是()。(字符串中包括空格)

longfun(charS[])

{longn;intsign;

for(;isspace(*s)||islower(*s);s++);

sign=(*s=='-')?-1:1;

if(*s=='+'||*s=='-')s++;

for(n=0;isdigit(*s);s++)

n=10*n+(*S-'0');

returnsign*n;

}

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

37.关系数据库管理系统能实现的专门关系运算包括选择、连接和【】。

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

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;

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

}

39.在面向对象的方法中,______描述的是具有相似属性与操作的一组对象。

40.在对文件进行操作的过程中,若要是文件位置的指针回到文件的开头,应使用的函数是【】。

三、1.选择题(20题)41.若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元int*pp=______malloc(sizeof(int));则应填入______。

A.intB.int*C.(*int)D.(int*)

42.有如下程序段int*p,a=10,b=1;p=&a;a=*p+b;执行该程序段后,a的值为______。

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

43.在C语言中,以下说法不正确的是()。

A.在C程序中,整数和实数都能被准确无误地表示出来

B.在C程序中,任何一个变量名都代表存储器中的一个位置

C.静态变量的生存期与整个程序的运行期相同

D.C语言中,任何变量都必须先声明才能进行引用

44.在下列几种排序方法中,要求内存量最大的是______。

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

45.下述关于C语言文件的操作的结论中,正确的是______。

A.对文件操作必须先关闭文件

B.对文件操作必须先打开文件

C.对文件操作顺序无要求

D.对文件操作前必须先测文件是否存在,然后再打开文件

46.下列程序的运行结果是()。#include<stdio.h>main(){intx=5,a=1,b=2,c=5,d=0;if(a<B)if(b!=3)if(!C)x=1;elseif(D)x=1;elsex=-1;printf("%d",x);}

A.-1B.0C.1D.不确定的值

47.在C语言中,表达式10!=9的值是______。

A.真B.非零值C.0D.1

48.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是______。

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

49.与十进制数200等值的十六进制数为A.A8B.A4C.C8D.C4

50.下列程序执行后的输出结果是voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}

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

51.有以下程序inta=3;main(){ints=0;{inta=5;s+=a++;}s+=a++;printf("%d\n",s);}程序运行后的输出结果是______。

A.8B.10C.7D.11

52.若有以下程序段(n所赋值的是八进制数):intm=32767,n=032767;printf("%d,%o\n",m,n);执行后输出结果是______。

A.32767,32767B.32767,032767C.32767,77777D.32767,077777

53.以下程序的输出结果是()。#include<stdio.h>main(){printf("%d\n",NULL);}

A.不确定的值(因变量无定义)B.0C.-1D.1

54.Modem的功能是实现()

A.数字信号的编码B.模拟信号的采样、量化C.数字信号的整形D.模拟信号与数字信号的转换

55.以下叙述中正确的是______。A.预处理命令行必须位于源文件的开头

B.在源文件的一行上可以有多条预处理命令

C.宏名必须用大写字母表示

D.宏替换不占用程序的运行时间

56.C语言中while和do-while循环的主要区别是

A.do-while的循环体至少无条件执行一次

B.while的循环控制条件比do-while的循环控制条件更严格

C.do-while允许从外部转到循环体内

D.do-while的循环体不能是复合语句

57.以下关于long、int和short类型数据占用内存大小的叙述中正确的是(),

A.均占4个字节B.根据数据的大小来决定所占内存的字节数C.由用户自己定义D.由C语言编译系统决定

58.设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:□代表空格字符)

A.10□X□20□Y<回车>

B.10□X20□Y<回车>

C.10□X<回车>20□Y<回车>

D.10X<回车>20Y<回车>

59.下列关系运算中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是()。

A.选择B.连接C.投影D.并

60.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;}程序在执行了c=&b;b=&a;语句后,表达式**c的值是______。

A.变量a的地址B.变量b中的地址C.变量a中的值D.变量b的地址

四、选择题(20题)61.下面程序的功能是输出以下形式的金字塔图案。

main()

{

inti,j;

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

{

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

printf("");

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

printf("*");

printf("\n");

}

}

在下画线处应填入的是

A.iB.2*i-1C.2*i+1D.i+2

62.已知i,j,k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是

A.scanf("%2d,%2d,%2d",i,j,k);B.scanf("%d%d%d",&i,&j,&k);

C.scanf("%d,%d,%d",&i,&j,&k);D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

63.在数据结构中,与所使用的计算机无关的是数据的()。

A.存储结构

温馨提示

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

评论

0/150

提交评论