2022年山东省潍坊市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2022年山东省潍坊市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2022年山东省潍坊市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2022年山东省潍坊市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2022年山东省潍坊市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

2022年山东省潍坊市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设有以下程序段:structbook{floatprice;charlanguage;chartitle[20];}rec,*ptr;ptr=&rec;要求输入字符串给结构体变量rec的title成员,错误的输入语句是()。

A.scanf(“%s”,ptr.title);

B.scanf(“%s”,rec.title);

C.scanf(“%s”,(*ptr).title);

D.scanf(“%s”,ptr->title);

2.有1000个无序的整数,希望使用最快的方式找出前50个最大的,最佳的选择是()

A.冒泡排序B.基数排序C.堆排序D.快速排序

3.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",执行其结果为()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234

4.有以下程序:

程序运行后的输出结果是()。A.4284B.2870C.2668D.3981

5.下列运算符中优先级最高的是()。

A.!B.%C.-=D.&&

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

A.向量属于线性结构B.二叉链表是二叉树的存储结构C.栈和队列是线性表D.循环链表是循环队列的链式存储结构

7.下列程序的执行结果是()。#include<stdioh>main{inta,b,c;a=b=2,c=I;c=(a++)-1;printf("%d,0Ad",a,c);c+=-a+++(++b);printf("%d,%d",a,c);)A.3,14,1B.3,14,2C.2,04,1D.2,14,1

8.有定义:“inta=2,b=3,c=4;”,则下列选项中值为0的表达式是()。A.(!a==1)&&(!b==0)B.(a<b)&&!c‖1C.a&&bD.a||(b+b)&&(c-a)

9.程序流程图中有箭头的线段表示的是()。

A.图元关系B.数据流C.控制流D.调用关系

10.算法的时间复杂度是指A.算法的执行时间B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的基本运算次数

11.设abcdef以所给的次序进栈,若在进栈操作时,允许退栈操作,则下面得不到的序列为()。

A.fedcbaB.bcafedC.dcefbaD.cabdef

12.

13.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序输出为()。

A.编译有错B.0,0,0,3C.1,1,2,0D.0,1,2,0

14.采用邻接表存储的图的广度优先遍历算法类似于二叉树的()。A.A.先序遍历B.中序遍历C.后序遍历D.按层遍历

15.在m叉树中,都为0的结点称为()。

A.兄弟B.树叶C.树根D.分支结点

16.有以下程序:#include<stdio.h>inta=1,b=2:voidfunl(inta,intb){printf("%d%d",a,b);}voidfun2(){a=3;b=4;}main(){funl(5,6);fun2();printf("%d%d\n",a,b);}程序运行后的输出结果是()。A.1256B.5634C.5612D.3456

17.

18.数据结构主要研究的是数据的逻辑结构、数据的运算和()。A.数据的方法B.数据的存储结构C.数据的对象D.数据的逻辑存储

19.十进制数124转换成二进制数是()

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

20.每次从无序表中取出一个元素,把它插入到有序表中的适当位置,此种排序方法叫做()排序。

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

二、2.填空题(20题)21.下列程序执行后输出的结果是【】。

f(inta)

{staticc=0;

c=a+c++;

return(c);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

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

structNODE

{intk;

structNODE*link;

};

main()

{structNODEm[5],*p=m,*q=m+4;

inti=0;

while(p!=q){

p->k=++i;p++;

q->k=i++;q--;

}

q->k=i;

for(i=0;i<5;i++)printf("%d",m[i].k);

printf("\n");

}

23.性表的多种存储结构中,最简单的方法是【】。

24.已知字母A的ASCⅡ码为65。以下程序运行后的输出结果是()。

main()

{chara,b;

a='A'+'5'-'3';b=a+'6'-'2';

a='A'+'5'-'3';b=a+'6'-'2';

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

}

25.数据库系统在其内部分为三级模式,即概念模式、内模式和外模式。其中,______给出了数据库物理存储结构与物理存取方法。

26.以下程序的输出是【】。

main()

{

charstr1[]="Howdoyoudo",*p1=str1;

strcpy(str1+strlen(str1)/2,"esshe");

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

}

27.以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。

#include<stdio.h>

voidf(intx[],intn)

{intp0,p1,i,j,t,m;

i=j=x[0];p0=p1=0;

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

{if(x[m]>i{i=x[m];p0=m;}

elseif(x[m]<j{j=x[m];p1:m;}

}

t=x[p0];x[p0]=x

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

main()

{ints=0,i=1;

while(s<=10)

{s=s+i*i;

i++;

}

printf("%d",-i);

}

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

#include<stdio.h>

main()

{chars[20];

scanf("%s",s);

printf("%s",s);

}

运行程序,输入HOWAREYOU。

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

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

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

32.以下程序中函数fun的功能是:构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数disp。

#include<stdio.h>

typedefstructnode/*链表结点结构*/

{charsub[3];

structnode*next;

}Node;

Nodefun(chars)/*建立链表*/

{……}

voiddisp(Node*h)

{Node*p;

p=h->next;

while(【】)

{printf("%s\n",P->sub);p=【】;}

}

main()

{Node*hd;

hd=fun();disp(hd);printf("\n");

}

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

34.有以下程序:

voidf(int*x,iht*y)

{intt;

t=*x;*x;=*y;*y=t;

}

main()

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

p=a;q=&a[7];

while(p)

{f(p,q);p++;q--;}

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

}

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

35.要求使下列程序输出5个整数,请填空。

for(i=0;i<=______;printf("%d\n",i+=2));

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

#include<stdio.h>

main()

{structstru

{inta;

floatb;

chard[4];

};

printf("%d\n",sizeof(structstru));}

37.在链表的运算过程中,能够使空表与非空表的运算统一的结构是______。

38.在程序设计阶段应该采取【】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。

39.软件工程研究的内容主要包括:【】技术和软件工程管理。

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

intmystrlen(char*str)

{inti;

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

return(i);}

三、1.选择题(20题)41.结构化程序设计主要强调的是______。

A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性

42.下列叙述中正确的是A.线性表是线性结构B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构

43.以下程序的输出结果是

#include<stdio.h>

intfun(intn,int*s)

{intf1,f2;

if(n==0||n==1)

*s=1;

else

{fun(n-1,&f1);

fun(n-2,&f2);

*s=f1+f2;

}}

voidmain()

{intx;

fun(6,&x);

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

A.7B.13C.9D.10

44.用树形结构表示实体之间联系的模型的是

A.关系模型B.网状模型C.层次模型D.以上三个都是

45.若有定义:“inta[2][3];”,则对a数组的第i行第j列元素的正确引用为()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

46.下列选项中,值为1的表达式是()。

A.1-'0'B.1-'\0'C.'1'-0D.'\0'-'0'

47.数据库设计包括两个方面的设计内容,它们是()

A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计

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

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

49.设有如下三个关系表:

下列操作中正确的是()。

A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S

50.变量a已被定义为整型,下列表达式有错的是

A.a='A'+20B.a-='a'C.a=c+dD.a='c'+'d'

51.在下列叙述中,错误的一条是()

A.关系表达式的值是一个逻辑值,即“真”或“假”,可赋给一个逻辑变量

B.数组必须先定义后使用,且只能逐个引用数组元素,不能一次引用整个数组

C.在C语言中,判断一个量是否为“真”时,用。代表“假”,1代表“真”

D.将字符串常量赋给字符数组时,必须在字符串后加飞'\0',表示字符结束

52.对长度为n的线性表进行顺序查找,在最坏的情况下所需要的比较次数为______。

A.log2nB.n/2C.nD.n+l

53.已定义下列函数:intfun(int*p){return*p;)fun函数返回值是()。

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

54.若i和j已定义为int类型,则以下程序段中内循环体总的执行次数是______。for(i=5;i;i--)for(j=0;j<5;j++){...}

A.20B.25C.24D.30

55.以下与函数fseek(fp,OL,SEEK_SET)有相同作用的是______。A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp)

56.将E-R图转换到关系模式时,实体与联系都可以表示成________。

A.属性B.关系C.键D.域

57.下列程序执行后的输出结果是main(){inta[3][3],*p,i;p=&a[0][0];for(i=1;i<9;i++)p[i]=i+1;printf("%d\n",a[1][2]);}

A.3B.6C.9D.随机数

58.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是()。

A.模拟现实世界中不同事物之间的联系

B.强调模拟现实世界中的算法而不强调概念

C.使用现实世界的概念抽象地思考问题从而自然地解决问题

D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考

59.在下列叙述中,正确的一条是()

A.语句int*pt中的*pt是指针变量名

B.语句"int*p=a;"等价于"int*p;p=&a[0];”

C.运算符*和&都是取变量地址的运算符

D.已知指针变量p指向变量a,则&a和*p值相同,都是变量a的值

60.在深度为5的满二叉树中,叶子结点的个数为A.32B.31C.16D.15

四、选择题(20题)61.以下选项中合法的标识符是()。

62.有以下程序(函数fun只对下标为偶数的元素进行操作):

#include<stdio.h>

voidfun(int*a。intn)

{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,

63.以下选项中,当x为大于1的奇数时,值为0的表达式是()。

A.x%2==0B.x/2C.x%21=0D.x%2==1

64.

65.

66.

67.

68.

69.(72)n个顶点的强连通图的边数至少有______。

A.n-1

B.n(n-1)

C.n

D.n+1

70.若有定义:则以下不能正确表示该数组元素的表达式是()。

71.

72.(67)数据处理的最小单位是()

A.数据

B.数据元素

C.数据项

D.数据结构

73.表达式:(im)((double)9/2)一9%2的值是()。

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

74.具有3个结点的二叉树有

A.2种形态B.4种形态C.7种形态D.5种形态

75.若文件指针fp已正确指向文件,ch为字符型变量,以下不能把字符输出到文件中的语句是()。

A.fget(f0,ch);

B.foutc(ch,fo);

C.fprinff(fp,”%c”,ch);

D.fwrite(&ch,sizeof(ch),1,fp);

76.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是()。

A.函数的形参和实参分别占用不同的存储单元

B.形参只是形式上的存在,不占用具体存储单元

C.同名的实参和形参占同一存储单元

D.函数的实参和其对应的形参共占同一存储单元

77.有以下程序:

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

A.a=2,b=2B.a=2,b=1C.a=1,b=1D.a=1,b=0

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

A.abc28B.28cC.abcD.因类型不一致而出错

79.有以下程序:

程序的运行结果是()。

A.*****a*bB.a*bC.a*b****D.ab

80.

五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不相等,2和Y的值不相等。例如,当x的值为1,y的值为2,z的值为3时,函数值为2.O0。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写函数proc(),它的功能是计算下列级数和,和值由函数值返回。sum=1-x+x2/2!-x3/31+…+(-l*x)n/n!例如,当n=23,x=0.3时,函数值为0.740818。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。试题程序:

参考答案

1.A运算符“->”适用指针访问成员变量,运算符“.”适用普通变量访问成员变量。ptr是指针,只能用“->”,因此选项A错误。选项B中,rec.title代表数组title,选项B正确,同理选项C正确。“*ptr”是结构体变量rec,可以使用运算,因此选项D正确。故本题答案为A选项。

2.D

3.D

4.Bfor循环中,i取值为1~100。循环体中,3个if语句必须同时满足才会输出x,输出的x取值为i+3,所以x的取值只能是4到103。x必须满足以下条件:①x%7==0(x必须是7的倍数);②(x-1)%3==0(x必须是3的倍数+1);③(x-2)%2==0(x必须是2的倍数)。满足条件③的x取值为7,14,21,28,35,42,49,56,63,70,77,84,91,98;又满足条件②的x的取值为7,28,49,70,91;又满足条件①的x的取值为28,70。本题答案为B选项。

5.A

6.D循环链表是线性表的一种链式存储结构,循环队列是队列的一种顺序存储结构。因此D选项叙述错误。本题答案为D选项。

7.A本题主要考查自加减运算符(++,--)的使用。①如果作为前缀变量“++a,--a”,在使用a之前,先使a的值加1或者减1,再使用表达式的值参与运算;②后缀变量“a++,a--”,先使用表达式的值参与运算,在使用a之后,再使i的值加1或者减1。在本题中计算表达式c=(a++)-1时先使用a的值进行计算,结果为c=2-1=1,然后将a的值加1,即执行完此句后l3-的值是3;表达式c+=-a+++(++b)也可写成C=c+(一a++)+(++b),c=1+(一3)+3=1,此时a=4,b=3。

8.A本题考查逻辑与运算“&&”与逻辑或运算“||”。在选项A中,因为!a=0,所以关系表达式!a=1为0,又因为逻辑与运算符“&&”两边的表达式只要一个等于零,则整个表达式为零,所以选项A正确。在选项8中,关系表达式a<b为真,表达式(a<b)&&!C为假,而表达式(a<b)&&!||1为真,所以整个表达式的值为真。选项C中,a&&b的结果为真。在选项D中,a||(b+b)&&(C-a)的结果为真。

9.C解析:程序流程图是软件过程设计中常用的图形描述工具之一。构成程序流程图的最基本符号有:→或↓,表示控制流;□表示加工步骤;

表示逻辑条件。

10.DD。【解析】算法的时间复杂度是指算法需要消耗的时间资源。一般来说,计算机算法是问题规模。09函数fin),算法的时间复杂度也因此记做T(n)=O(f(n))。因此,问题的规模n越大,算法执行的时间的增长率与f(n)的增长率正相关,称作渐进时间复杂度(AsymptoticTimeComplexity)。简单来说就是算法在执行过程中所需要的基本运算次数。

11.D

12.C

13.AC语言中规定else总是和之前与其最近的且不带else的if配对。题目中,“if(a=1)b=1;c=2;”默认省略了else,导致下一句else没有匹配语句。故本题答案为A选项。

14.D

15.B

16.BFunl是输出局部变量的值,fun2是把全局变量的值改成3和4,所以输出的结果是5634。

17.A

18.B详细解答:

数据结构是研究数据元素及其之间的相互关系和数据运算的一门学科,它包含3个方面的内容,即数据的逻辑结构、存储结构和数据的运算。

19.B

20.A

21.77解析:在程序执行时,static变量仅初始化一次,下次使用时将使用上次保存的值。

22.1343113431解析:初始化时,指针p指向m[0]的地址,指针q指向m[4]的地址,p!=q满足循环条件,执行循环语句,得到m[0].k=1,m[4].k=1,此时i=2,指针p指向m[1]的地址,指针q指向m[3]的地址,p!=q满足循环条件,执行循环语句,得到m[1].k=3,k=3,此时i=4,指针q指向m[2]的地址,p==q不满足循环条件,则退出循环,m[2].k=4。所以最后输出为13431。

23.顺序存储顺序存储

24.67G67G解析:根据题意,a=‘A’+‘5’-‘3’=65+2=67,b=67+4=71,71即为字母G的ASCⅡ码值。程序要求按十进制形式输出a,按字符形式输出b,所以结果为67G。

25.内模式内模式解析:内模式又称为物理模式,它给出?数据库物理存储结构与物理存取方法。

26.HowdoessheHowdoesshe解析:strcpy(str1,s1);字符串拷贝函数,作用是将字符串s1拷贝到字符数组strl中去。strlen(str):测试字符串str的长度,函数的值为字符串中实际长度,不包括\'\\0\'在内。本题中strlen(str1)的值为13,则strcpy(strl+strlen(strl)/2,'esshe');相当于strcpy(strl+6,'esshe');,因此可得答案为Howdoesshe

27.函数f()通过for循环逐个比较数组x中的元素,循环结束后,p0和p1分别表示最大值和最小值在数组中的下标位置,然后按照题意将最大值x[p0]和数组的最后一个元素x[n-1)交换位置,再将最小值x[p1]和第一个元素(x[0])进行交换,所以空白处应该填入x[0]。\r\n\r\n

28.33解析:分析程序运行过程,第1次循环:s=s+i*i=0+1*1=1,i=2;第2次循环:s=s+i*i=1+2*2=5,i=3;第3次循环:s=s+i*i=5+3*3=14,i=4;循环条件不成立输出i,--i使i的值减1,轴出结果为3。

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

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

31.3691236912解析:本题考查最基本的for循环:for(cc=1;cc<5;cc++)规定循环次数为4次,每次a+=3即每次a的值增3,但因为fun函数中变量a为static类型,所以每次调用完于函数之后,变量a所做的改变都要保存。

32.p!=NULLp->nextp!=NULL,p->next解析:考查了单链表的相关知识。NULL的ASCII码的值和'\\0'的ASCII码的值相等,条件到NULL停止循环。把下一个节点的地址赋给p,这样循环,节点可以依次向后取值。

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

34.876543218,7,6,5,4,3,2,1解析:函数f是将x、y指针的内容互换,整个while循环是将a[0]与a[7]互换,a[2]与a[5]互换,a[3]与a[4]互换。

35.88解析:本题考查基本的for循环条件,i+=2表示i每次递增2,从0开始,输出5个整数则需要的条件是i<=8。

36.14

37.循环链表循环链表解析:在循环链表中,由于设置了一个头结点,因此在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一。

38.自顶而下自顶而下

39.软件开发

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

41.B解析:采用结构化编程方法的好处主要在于:一是便于控制、降低程序的复杂性,因此便于编写程序。二是程序清晰易读,可理解性好。因此,结构化程序设计主要强调的是程序的易读性,而不是程序的规模、程序的执行效率和程序的可移植性。

42.A根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件:1,有且只有一根节结点,2,每一个结点最多有一个前件,也最多有一个后件,则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。

43.B解析:考查函数的递归调用。n=0或n=1是递归的终止条件,然后利用已知值逐步递推求出未知值。通过传送地址值,在被调用函数中直接改变调用函数中的变量的值。

44.C解析:在数据库系统中,由于采用的数据模型不同,相应的数据库管理系统(DBMS)也不同。目前常用的数据模型有三种:层次模型、网状模型和关系模型。在层次模型中,实体之间的联系是用树结构来表示的,其中实体集(记录型)是树中的结点,而树中各结点之间的连线表示它们之间的关系。因此,本题的正确答案是C。

45.A解析:本题考查如何通过地址来引用数组元素。通过地址来引用数组元素的方法有下列5种:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

46.B解析:在C程序中,字符量可参与任何整数运算。字符参与运算时,首先要将字符转换为对应的ASCII码值再参与整数运算。字符'1'对应的ASCII码值是49,字符'0'对应的ASCII码值是48,字符'\\0'是字符串结束标识符NULL,其对应的ASCII码值是0。

47.A解析:模式设计和内模式设计是概念设计的两种方法。物理设计是根据特定的计算机系统,对数据的存储结构和存取方法进行设计,从而实现从逻辑结构到物理结构的转换。从系统开发的角度来看,结构特性设计和行为特性-设计是数据库应用系统所具有的两个特性。结构特性的设计,设计各级数据库模式(静态特性):行为特性的设计,改变实体及其特性,决定数据库系统的功能(动态特性)。

48.A

49.C解析:本题考查数据库的关系代数运算。R表中只有一个域名A,有两个记录(也叫元组),分别是m和n;S表中有两个域名,分别是B和C,其所对应的记录分别为1和3。注意观察表T,它是由R的第一个记录依次与S的所有记录组合,然后再由R的第二个记录与S的所有记录组合,形成的一个新表。上述运算恰恰符合关系代数的笛卡儿积运算规则。关系代数中,笛卡儿积运算用“×”来表示。因此,上述运算可以表示为T=R×S。因此,本题的正确答案为C。

50.C

51.B

52.C解析:顺序查找的最坏情况是所找的元素性表的最后,因此查找的比较次数是线性表的长度,即n。

53.B解析:由函数intfun(int*p){return*p;}的定义可知,返回值为整型指针变量p所指向的数据。

54.B解析:对于第一个for语句,i从5至1,且对于第二个for语句,在i取5至1的某个值时,j又从0变化至5。

55.D解析:feof函数的功能是判断文件指针是否已指到了文件末尾,是则返回非零值,否则返回零;ftell函数的功能是得到流式文件中文件指针的当前位置,用相对于文件开头的位移量来表示;fgetc函数的功能是从指定文件读人一个字符;rewind函数的功能是使文件指针重新返回文件的开头。fseek函数用于改变文件的位置指针,调用形式为:fseek(文件类型指针,位移量,起始点),“起始点”取值0(SEEK_SET)、1(SEEK_CUR)、2(SEEK_END)分别表示文件开始、文件当前位置、文件末尾。“位移量”是以“起始点”为基点,向前移动的字节数。函数fseek(fp,OL,SEEK_SET)的作用是将位置指针移到文件头,所以选项D)正确。

56.B解析:关系数据库逻辑设计的主要工作是将\ue008E-R\ue009图转换成指定RDBMS中的关系模式。首先,从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性,实体集也可以转换成关系。

57.B解析:本题中,a[1][2]是二维数组中的第6个元素,对应for循环中i的值为5,p[5]=5+1。

58.C解析:面向对象的设计方法与传统的面向过程的方法有本质不同。它的基本原理是,使用现实世界的概念抽象地思考问题从而自然地解决问题。它强调模拟现实世界中的概念而不强调算法,它鼓励开发者在软件开发的绝大部分中都用应用领域的概念去思考。

59.D

60.C2(n-1)

=2(5-1)=16

61.A标识符由字母、数字或下划线组成,并且数字不能开头,所以答案选择A)。

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

\n

63.A算术运算符的优先级高于关系运算符的优先级,所以当x为大于1的奇数时,A选项的值为假,即0。B选项的值为不定值,但绝对不是0。c选项的值为真,即l。D选项的值为真,即l。

64.B

65.B

66.C

67.D

68.D

69.C

70.A本题考查的是通过指针引用二维数组元素。通过一维数组名或指向一维数组元素的指针来引用数组元素有两种写法:a[i]和*(a+i),它们是等价的。这是一种运算符之间的等价转换,就好像a一(b—c)等价于a-b+c一样。知道了这种转换,我们可以将之扩展到二维数组甚至任意维数组上来。因为口运算符的结合性是从左至右的,所以w[i珩]等价于(w[i][j],此时可以先将任意一个口运算符转换为指针形式为(·(w+i))[j]或*(w[i]+j),或者同时转换为*(*(W+i)+j)。上述几种形式都完全等价于w[il[j]。

71.D

72.C注:数据项不可再分割

73.B先将整型数据9强制转换成double型,然后除以2得到的结果与double型保持一致,即为4.5,然后将4.5强制转换成整型数据4,然后计算9%2的值为1,最后计算4一l的值为3,所以选择B选项。

74.D解析:因为二叉树有左、右子树之分,所以有3个结点的二叉树具有5种不同的形态。

75.A函数fgete()从文件读入一个字符到指定变量。函数fputc()将指定字符写入审文件中,函数fprinff(),fwrite()均是写入文件操作函数。因此选项B,c。D错误。答案为A选项。

76.A本题重点考察的是函数的形参和实参。I在定义函数时函数名后面括弧中的变量名称为“形式参数”l(简称形参),在主调函数中调用一个函数时,函数名后面括弧1中的参数(可以是—个表达式)称为“实际参数”(简称实参)。fC语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。因此A选项正确。

77.BC88e常量表达式只是起语句标号作用,并不是该处进行条件判断。在执行switch语句时,根据switch的表达式,找到与之匹配的Case语句,就从此case子句执行下去,不在进行判断,直到碰到break或函数结束为止。所以执行内层switch(y)时只执行了a++,此时a的值为1。然后执行外层case2语句的a++;b++;a为2,b为1。所以结果为B。

78.A第一次写入abC,第二次写入28,用字符串形式取出,值为abC28,所以答案选择A)。

79.C在函数fun(char*a,char*b)中,while

80.B

81.(1)错误:#defineF(m,n)(m/n)

正确:#defineF(m,n)(m)/(n)

(2)错误:Return(s);

正确:return(s);

【解析】程序中函数的功能是计算题目中给出的公式值,第一个标识:fun()函数两次调用宏F来计算“s=F((a+b),(a-

82.

【解析】首先定义两个变量分别用来存储级数的和与每一项的分母。观察级数的特点,其每一项的正负号是交替变化的。根据这些特点,每增加一项都需要变换符号。最后求出级数的和。

2022年山东省潍坊市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设有以下程序段:structbook{floatprice;charlanguage;chartitle[20];}rec,*ptr;ptr=&rec;要求输入字符串给结构体变量rec的title成员,错误的输入语句是()。

A.scanf(“%s”,ptr.title);

B.scanf(“%s”,rec.title);

C.scanf(“%s”,(*ptr).title);

D.scanf(“%s”,ptr->title);

2.有1000个无序的整数,希望使用最快的方式找出前50个最大的,最佳的选择是()

A.冒泡排序B.基数排序C.堆排序D.快速排序

3.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",执行其结果为()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234

4.有以下程序:

程序运行后的输出结果是()。A.4284B.2870C.2668D.3981

5.下列运算符中优先级最高的是()。

A.!B.%C.-=D.&&

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

A.向量属于线性结构B.二叉链表是二叉树的存储结构C.栈和队列是线性表D.循环链表是循环队列的链式存储结构

7.下列程序的执行结果是()。#include<stdioh>main{inta,b,c;a=b=2,c=I;c=(a++)-1;printf("%d,0Ad",a,c);c+=-a+++(++b);printf("%d,%d",a,c);)A.3,14,1B.3,14,2C.2,04,1D.2,14,1

8.有定义:“inta=2,b=3,c=4;”,则下列选项中值为0的表达式是()。A.(!a==1)&&(!b==0)B.(a<b)&&!c‖1C.a&&bD.a||(b+b)&&(c-a)

9.程序流程图中有箭头的线段表示的是()。

A.图元关系B.数据流C.控制流D.调用关系

10.算法的时间复杂度是指A.算法的执行时间B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的基本运算次数

11.设abcdef以所给的次序进栈,若在进栈操作时,允许退栈操作,则下面得不到的序列为()。

A.fedcbaB.bcafedC.dcefbaD.cabdef

12.

13.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序输出为()。

A.编译有错B.0,0,0,3C.1,1,2,0D.0,1,2,0

14.采用邻接表存储的图的广度优先遍历算法类似于二叉树的()。A.A.先序遍历B.中序遍历C.后序遍历D.按层遍历

15.在m叉树中,都为0的结点称为()。

A.兄弟B.树叶C.树根D.分支结点

16.有以下程序:#include<stdio.h>inta=1,b=2:voidfunl(inta,intb){printf("%d%d",a,b);}voidfun2(){a=3;b=4;}main(){funl(5,6);fun2();printf("%d%d\n",a,b);}程序运行后的输出结果是()。A.1256B.5634C.5612D.3456

17.

18.数据结构主要研究的是数据的逻辑结构、数据的运算和()。A.数据的方法B.数据的存储结构C.数据的对象D.数据的逻辑存储

19.十进制数124转换成二进制数是()

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

20.每次从无序表中取出一个元素,把它插入到有序表中的适当位置,此种排序方法叫做()排序。

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

二、2.填空题(20题)21.下列程序执行后输出的结果是【】。

f(inta)

{staticc=0;

c=a+c++;

return(c);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

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

structNODE

{intk;

structNODE*link;

};

main()

{structNODEm[5],*p=m,*q=m+4;

inti=0;

while(p!=q){

p->k=++i;p++;

q->k=i++;q--;

}

q->k=i;

for(i=0;i<5;i++)printf("%d",m[i].k);

printf("\n");

}

23.性表的多种存储结构中,最简单的方法是【】。

24.已知字母A的ASCⅡ码为65。以下程序运行后的输出结果是()。

main()

{chara,b;

a='A'+'5'-'3';b=a+'6'-'2';

a='A'+'5'-'3';b=a+'6'-'2';

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

}

25.数据库系统在其内部分为三级模式,即概念模式、内模式和外模式。其中,______给出了数据库物理存储结构与物理存取方法。

26.以下程序的输出是【】。

main()

{

charstr1[]="Howdoyoudo",*p1=str1;

strcpy(str1+strlen(str1)/2,"esshe");

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

}

27.以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。

#include<stdio.h>

voidf(intx[],intn)

{intp0,p1,i,j,t,m;

i=j=x[0];p0=p1=0;

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

{if(x[m]>i{i=x[m];p0=m;}

elseif(x[m]<j{j=x[m];p1:m;}

}

t=x[p0];x[p0]=x

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

main()

{ints=0,i=1;

while(s<=10)

{s=s+i*i;

i++;

}

printf("%d",-i);

}

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

#include<stdio.h>

main()

{chars[20];

scanf("%s",s);

printf("%s",s);

}

运行程序,输入HOWAREYOU。

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

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

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

32.以下程序中函数fun的功能是:构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数disp。

#include<stdio.h>

typedefstructnode/*链表结点结构*/

{charsub[3];

structnode*next;

}Node;

Nodefun(chars)/*建立链表*/

{……}

voiddisp(Node*h)

{Node*p;

p=h->next;

while(【】)

{printf("%s\n",P->sub);p=【】;}

}

main()

{Node*hd;

hd=fun();disp(hd);printf("\n");

}

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

34.有以下程序:

voidf(int*x,iht*y)

{intt;

t=*x;*x;=*y;*y=t;

}

main()

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

p=a;q=&a[7];

while(p)

{f(p,q);p++;q--;}

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

}

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

35.要求使下列程序输出5个整数,请填空。

for(i=0;i<=______;printf("%d\n",i+=2));

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

#include<stdio.h>

main()

{structstru

{inta;

floatb;

chard[4];

};

printf("%d\n",sizeof(structstru));}

37.在链表的运算过程中,能够使空表与非空表的运算统一的结构是______。

38.在程序设计阶段应该采取【】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。

39.软件工程研究的内容主要包括:【】技术和软件工程管理。

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

intmystrlen(char*str)

{inti;

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

return(i);}

三、1.选择题(20题)41.结构化程序设计主要强调的是______。

A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性

42.下列叙述中正确的是A.线性表是线性结构B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构

43.以下程序的输出结果是

#include<stdio.h>

intfun(intn,int*s)

{intf1,f2;

if(n==0||n==1)

*s=1;

else

{fun(n-1,&f1);

fun(n-2,&f2);

*s=f1+f2;

}}

voidmain()

{intx;

fun(6,&x);

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

A.7B.13C.9D.10

44.用树形结构表示实体之间联系的模型的是

A.关系模型B.网状模型C.层次模型D.以上三个都是

45.若有定义:“inta[2][3];”,则对a数组的第i行第j列元素的正确引用为()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

46.下列选项中,值为1的表达式是()。

A.1-'0'B.1-'\0'C.'1'-0D.'\0'-'0'

47.数据库设计包括两个方面的设计内容,它们是()

A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计

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

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

49.设有如下三个关系表:

下列操作中正确的是()。

A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S

50.变量a已被定义为整型,下列表达式有错的是

A.a='A'+20B.a-='a'C.a=c+dD.a='c'+'d'

51.在下列叙述中,错误的一条是()

A.关系表达式的值是一个逻辑值,即“真”或“假”,可赋给一个逻辑变量

B.数组必须先定义后使用,且只能逐个引用数组元素,不能一次引用整个数组

C.在C语言中,判断一个量是否为“真”时,用。代表“假”,1代表“真”

D.将字符串常量赋给字符数组时,必须在字符串后加飞'\0',表示字符结束

52.对长度为n的线性表进行顺序查找,在最坏的情况下所需要的比较次数为______。

A.log2nB.n/2C.nD.n+l

53.已定义下列函数:intfun(int*p){return*p;)fun函数返回值是()。

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

54.若i和j已定义为int类型,则以下程序段中内循环体总的执行次数是______。for(i=5;i;i--)for(j=0;j<5;j++){...}

A.20B.25C.24D.30

55.以下与函数fseek(fp,OL,SEEK_SET)有相同作用的是______。A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp)

56.将E-R图转换到关系模式时,实体与联系都可以表示成________。

A.属性B.关系C.键D.域

57.下列程序执行后的输出结果是main(){inta[3][3],*p,i;p=&a[0][0];for(i=1;i<9;i++)p[i]=i+1;printf("%d\n",a[1][2]);}

A.3B.6C.9D.随机数

58.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是()。

A.模拟现实世界中不同事物之间的联系

B.强调模拟现实世界中的算法而不强调概念

C.使用现实世界的概念抽象地思考问题从而自然地解决问题

D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考

59.在下列叙述中,正确的一条是()

A.语句int*pt中的*pt是指针变量名

B.语句"int*p=a;"等价于"int*p;p=&a[0];”

C.运算符*和&都是取变量地址的运算符

D.已知指针变量p指向变量a,则&a和*p值相同,都是变量a的值

60.在深度为5的满二叉树中,叶子结点的个数为A.32B.31C.16D.15

四、选择题(20题)61.以下选项中合法的标识符是()。

62.有以下程序(函数fun只对下标为偶数的元素进行操作):

#include<stdio.h>

voidfun(int*a。intn)

{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,

63.以下选项中,当x为大于1的奇数时,值为0的表达式是()。

A.x%2==0B.x/2C.x%21=0D.x%2==1

64.

65.

66.

67.

68.

69.(72)n个顶点的强连通图的边数至少有______。

A.n-1

B.n(n-1)

C.n

D.n+1

70.若有定义:则以下不能正确表示该数组元素的表达式是()。

71.

72.(67)数据处理的最小单位是()

A.数据

B.数据元素

C.数据项

D.数据结构

73.表达式:(im)((double)9/2)一9%2的值是()。

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

74.具有3个结点的二叉树有

A.2种形态B.4种形态C.7种形态D.5种形态

75.若文件指针fp已正确指向文件,ch为字符型变量,以下不能把字符输出到文件中的语句是()。

A.fget(f0,ch);

B.foutc(ch,fo);

C.fprinff(fp,”%c”,ch);

D.fwrite(&ch,sizeof(ch),1,fp);

76.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是()。

A.函数的形参和实参分别占用不同的存储单元

B.形参只是形式上的存在,不占用具体存储单元

C.同名的实参和形参占同一存储单元

D.函数的实参和其对应的形参共占同一存储单元

77.有以下程序:

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

A.a=2,b=2B.a=2,b=1C.a=1,b=1D.a=1,b=0

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

A.abc28B.28cC.abcD.因类型不一致而出错

79.有以下程序:

程序的运行结果是()。

A.*****a*bB.a*bC.a*b****D.ab

80.

五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不相等,2和Y的值不相等。例如,当x的值为1,y的值为2,z的值为3时,函数值为2.O0。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写函数proc(),它的功能是计算下列级数和,和值由函数值返回。sum=1-x+x2/2!-x3/31+…+(-l*x)n/n!例如,当n=23,x=0.3时,函数值为0.740818。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。试题程序:

参考答案

1.A运算符“->”适用指针访问成员变量,运算符“.”适用普通变量访问成员变量。ptr是指针,只能用“->”,因此选项A错误。选项B中,rec.title代表数组title,选项B正确,同理选项C正确。“*ptr”是结构体变量rec,可以使用运算,因此选项D正确。故本题答案为A选项。

2.D

3.D

4.Bfor循环中,i取值为1~100。循环体中,3个if语句必须同时满足才会输出x,输出的x取值为i+3,所以x的取值只能是4到103。x必须满足以下条件:①x%7==0(x必须是7的倍数);②(x-1)%3==0(x必须是3的倍数+1);③(x-2)%2==0(x必须是2的倍数)。满足条件③的x取值为7,14,21,28,35,42,49,56,63,70,77,84,91,98;又满足条件②的x的取值为7,28,49,70,91;又满足条件①的x的取值为28,70。本题答案为B选项。

5.A

6.D循环链表是线性表的一种链式存储结构,循环队列是队列的一种顺序存储结构。因此D选项叙述错误。本题答案为D选项。

7.A本题主要考查自加减运算符(++,--)的使用。①如果作为前缀变量“++a,--a”,在使用a之前,先使a的值加1或者减1,再使用表达式的值参与运算;②后缀变量“a++,a--”,先使用表达式的值参与运算,在使用a之后,再使i的值加1或者减1。在本题中计算表达式c=(a++)-1时先使用a的值进行计算,结果为c=2-1=1,然后将a的值加1,即执行完此句后l3-的值是3;表达式c+=-a+++(++b)也可写成C=c+(一a++)+(++b),c=1+(一3)+3=1,此时a=4,b=3。

8.A本题考查逻辑与运算“&&”与逻辑或运算“||”。在选项A中,因为!a=0,所以关系表达式!a=1为0,又因为逻辑与运算符“&&”两边的表达式只要一个等于零,则整个表达式为零,所以选项A正确。在选项8中,关系表达式a<b为真,表达式(a<b)&&!C为假,而表达式(a<b)&&!||1为真,所以整个表达式的值为真。选项C中,a&&b的结果为真。在选项D中,a||(b+b)&&(C-a)的结果为真。

9.C解析:程序流程图是软件过程设计中常用的图形描述工具之一。构成程序流程图的最基本符号有:→或↓,表示控制流;□表示加工步骤;

表示逻辑条件。

10.DD。【解析】算法的时间复杂度是指算法需要消耗的时间资源。一般来说,计算机算法是问题规模。09函数fin),算法的时间复杂度也因此记做T(n)=O(f(n))。因此,问题的规模n越大,算法执行的时间的增长率与f(n)的增长率正相关,称作渐进时间复杂度(AsymptoticTimeComplexity)。简单来说就是算法在执行过程中所需要的基本运算次数。

11.D

12.C

13.AC语言中规定else总是和之前与其最近的且不带else的if配对。题目中,“if(a=1)b=1;c=2;”默认省略了else,导致下一句else没有匹配语句。故本题答案为A选项。

14.D

15.B

16.BFunl是输出局部变量的值,fun2是把全局变量的值改成3和4,所以输出的结果是5634。

17.A

18.B详细解答:

数据结构是研究数据元素及其之间的相互关系和数据运算的一门学科,它包含3个方面的内容,即数据的逻辑结构、存储结构和数据的运算。

19.B

20.A

21.77解析:在程序执行时,static变量仅初始化一次,下次使用时将使用上次保存的值。

22.1343113431解析:初始化时,指针p指向m[0]的地址,指针q指向m[4]的地址,p!=q满足循环条件,执行循环语句,得到m[0].k=1,m[4].k=1,此时i=2,指针p指向m[1]的地址,指针q指向m[3]的地址,p!=q满足循环条件,执行循环语句,得到m[1].k=3,k=3,此时i=4,指针q指向m[2]的地址,p==q不满足循环条件,则退出循环,m[2].k=4。所以最后输出为13431。

23.顺序存储顺序存储

24.67G67G解析:根据题意,a=‘A’+‘5’-‘3’=65+2=67,b=67+4=71,71即为字母G的ASCⅡ码值。程序要求按十进制形式输出a,按字符形式输出b,所以结果为67G。

25.内模式内模式解析:内模式又称为物理模式,它给出?数据库物理存储结构与物理存取方法。

26.HowdoessheHowdoesshe解析:strcpy(str1,s1);字符串拷贝函数,作用是将字符串s1拷贝到字符数组strl中去。strlen(str):测试字符串str的长度,函数的值为字符串中实际长度,不包括\'\\0\'在内。本题中strlen(str1)的值为13,则strcpy(strl+strlen(strl)/2,'esshe');相当于strcpy(strl+6,'esshe');,因此可得答案为Howdoesshe

27.函数f()通过for循环逐个比较数组x中的元素,循环结束后,p0和p1分别表示最大值和最小值在数组中的下标位置,然后按照题意将最大值x[p0]和数组的最后一个元素x[n-1)交换位置,再将最小值x[p1]和第一个元素(x[0])进行交换,所以空白处应该填入x[0]。\r\n\r\n

28.33解析:分析程序运行过程,第1次循环:s=s+i*i=0+1*1=1,i=2;第2次循环:s=s+i*i=1+2*2=5,i=3;第3次循环:s=s+i*i=5+3*3=14,i=4;循环条件不成立输出i,--i使i的值减1,轴出结果为3。

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

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

31.3691236912解析:本题考查最基本的for循环:for(cc=1;cc<5;cc++)规定循环次数为4次,每次a+=3即每次a的值增3,但因为fun函数中变量a为static类型,所以每次调用完于函数之后,变量a所做的改变都要保存。

32.p!=NULLp->nextp!=NULL,p->next解析:考查了单链表的相关知识。NULL的ASCII码的值和'\\0'的ASCII码的值相等,条件到NULL停止循环。把下一个节点的地址赋给p,这样循环,节点可以依次向后取值。

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

34.876543218,7,6,5,4,3,2,1解析:函数f是将x、y指针的内容互换,整个while循环是将a[0]与a[7]互换,a[2]与a[5]互换,a[3]与a[4]互换。

35.88解析:本题考查基本的for循环条件,i+=2表示i每次递增2,从0开始,输出5个整数则需要的条件是i<=8。

36.14

37.循环链表循环链表解析:在循环链表中,由于设置了一个头结点,因此在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一。

38.自顶而下自顶而下

39.软件开发

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

41.B解析:采用结构化编程方法的好处主要在于:一是便于控制、降低程序的复杂性,因此便于编写程序。二是程序清晰易读,可理解性好。因此,结构化程序设计主要强调的是程序的易读性,而不是程序的规模、程序的执行效率和程序的可移植性。

42.A根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件:1,有且只有一根节结点,2,每一个结点最多有一个前件,也最多有一个后件,则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。

43.B解析:考查函数的递归调用。n=0或n=1是递归的终止条件,然后利用已知值逐步递推求出未知值。通过传送地址值,在被调用函数中直接改变调用函数中的变量的值。

44.C解析:在数据库系统中,由于采用的数据模型不同,相应的数据库管理系统(DBMS)也不同。目前常用的数据模型有三种:层次模型、网状模型和关系模型。在层次模型中,实体之间的联系是用树结构来表示的,其中实体集(记录型)是树中的结点,而树中各结点之间的连线表示它们之间的关系。因

温馨提示

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

评论

0/150

提交评论