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

下载本文档

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

文档简介

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

一、单选题(20题)1.数据库设计包括两个方面的设计内容,它们是()。

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

2.广义表((a),a)的表头是()。

A.aB.(a)C.((a))D.()

3.已有定义:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字堪的表达式是()。

A.isupper(c)B.A<=c<=ZC.A<=c&&c<=ZD.c<=(z-32)&&(a-32)<=c

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

A.C语言编译系统对标识符的长度没有规定

B.C语言标识符的规定长度因系统而异

C.C语言规定标识符长度最多允许16个字符,超长报错

D.C语言规定以下划线开头的标识符长度必须大于1

5.下列选项中不是字符常量的是()。

A.'\v'B.'\x2a'C.'a'D."\0"

6.若有说明语句:charc='\72'则变量c()。

A.包含1个字符B.包含2个字符C.包含3个字符D.说明不合法,c的值不确定

7.在银行业务中,实体客户和实体银行之间的联系是()。

A.—对一B.—对多C.多对一D.多对多

8.有以下程序:main{union{charch[2];intd;}s;d=0x4321;printf("%x,%x\n",S.ch[0],S.ch[l]);}在16位编译系统上,程序执行后的输出结果是()A.21,43B.43,21C.43,00D.21,00

9.线性表是具有n个()的有限序列。

A.字符B.数据元素C.数据项D.表元素

10.

11.以下程序的输出结果是()。main(){charst[20]="hell0\O\t\\\”;printf("%d%d\n",strlen(st),sizeof(st));}A.99B.520C.1320D.2020

12.

13.x>0&&x<=10的相反表达式为()。

A.x<=0||x>10B.x<=0&&x>10C.x<=0||x<=10D.x>0&&x>10

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

A.表达式“sizeof(FILE*)==sizeof(int*)”的值为真

B.文件指针的值是一个整数,它的值一定小于文件字节数

C.文件指针的值是所指文件的当前读取位置

D.使用fscanf函数可以向任意类型的文件中写入任意数量的字符

15.

16.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为()。

A.顺序表B.用头指针表示的循环单链表C.用尾指针表示的循环单链表D.单链表

17.一个序列中有10000个元素,若只想得到其中前10个最小元素,最好采用_______方法

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

18.有以下程序:#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,

19.判断一个循环队列cq(最多元素为m)为满的条件是()。

A.cq->rear-cq-front=m;

B.(cq->rear+1)%m=cq->front;

C.cq->front=cq->rear;

D.cq->rear=m-1;

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

A.一个逻辑数据结构只能有一种存储结构

B.逻辑结构属于线性结构,存储结构属于非线性结构

C.一个逻辑数据结构可以有多种存储结构,且各种存诸结构不影响数据处理的效率

D.一个逻辑数据结构可以有多种存储结构,且各种存诸结构影响数据处理的效率

二、2.填空题(20题)21.在面向对象方法中,允许作用于某个对象上的操作称为【】。

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

#include<stdio.h>

main()

{inty,a;

y=2,a=1;

while(y--!=-1)

{do{a*=y;a++;}while(y--);}

printf("%d,%d",a,y);}

23.下面程序执行后输出的结果是【】。

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d\n",fun(a,b)/m);

}

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

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

25.下列程序的循环次数是______。

x=2;

do

{x=x*x;}

while(!x);

26.在一棵二叉树上第6层的结点个数最多是【】。

27.以下程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值,和值通过形参传回主函数输出。请填空,

#include<stdio.h>

#defineM2

#defineN4

voidSumColumMin(inta[M][N],int*sum)

{inti,j,k,s=0;

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

k=O;

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

if(a[k][i]>a[j][i])k=j;

s+:【】;

}

【】=s;

}

main()

{intx[M][N]={3,2,5,1,4,1,8,3},s;

SumColumMin(【】);

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

}

28.下面程序的输出是()。

main()

{intarr[8],i,k=0;

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

arr[i]=i;

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

k+=arr[i]+i;

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

}

29.下面程序的功能是输出数组s中最大元素的下标,请填空。

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

30.有以下程序:

#include<stclio.h>

main()

{charc;

while((c=getchar())!='?')putchar(--c);

}

程序运行时,如果从键盘输入:Y?N?<回车>,则输出结果为【】。

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

32.设有以下定义和语句,sizeof(a)的值是【】,sizeof(b)的值是【】。

struct{intday;Charmonth;intyear;}a,*b;

b=&a;

33.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【】。

34.以下程序给指针p分配三个double型动态内存单元,请填空。

#include<stdio.h>

#include<stdlib.h>

main()

{double*p;

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

p[0]=1.5;p[1]=2.5;P[2]=3.5;

printf("%f%f%f\n",p[0],p[1],p[2]);

}

35.若有以下程序

main()

{chara;

a='H'-'A'+'0';

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

}

执行后输出结果是【】。

36.软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。

37.下列语句能循环______次。

ints=12;

while(s);

--s;

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

main()

{

inta[4]]4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};

inti=0.j=0,s=0;

while(i++<4}

if(i==2||i==4)continue;

j=0;

do

{

s+=a[i][j]:

j++;

}while(j<4);

}

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

}

voidfun(intx,inty)

}

39.若变量a,b已定义为int类型并分别赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的输出语句行:【】。

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

intadd(intx,inty,【】,)

{【】=x+y;}

三、1.选择题(20题)41.有以下程序:fun(intx){intp;if(x==0‖x=1)return(3);p=x-fun(x-2);returnp;}main(){printf("%d\n",fun(7);}执行后的输出结果是()。

A.7B.3C.2D.0

42.有以下程序:voidchange(intk[]){k[0]=k[5];)main(){intx[10]={1,2,3,4,5,6,7,8,9,10},n=0;while(n<=4)(change(&x[n]);n++;}for(n=0;n<5;n++)printf("%d",x[n]);printf("\n");}程序运行后的输出结果是()。

A.678910B.13579C.12345D.62345

43.下列选项中正确的语句组是()。

A.chars[8];s={"Beijing"};

B.char*s;s={"Beijing"};

C.chars[8];s="Beijing";

D.char*s;s="Beijing";

44.C语言规定如果调用fputc函数输出成功,则返回值是()。

A.1B.输出的字符C.0D.真

45.下列叙述中,正确的一条是______。

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

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

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

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

46.在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为______。

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

47.下列程序的输出结果是_____。intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%\d\n",r);}

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

48.下列数据结构中,属于非线性的是()。

A.线性表B.队列C.树D.栈

49.有以下程序:#include<stdio.h>main(){inta[3][2]={0},(*ptr)[2],i,j;for(i=0;i<2;i++){ptr=a+i;scanf("%d",ptr);ptr++;}for(i=0;i<3;i++)}for(j=0;j<2;j++)prinff("%2d",a[i][j]);prinff("\n");}}若运行时输入:123<回车>,则输出结果是()。

A.产生错误信息B.102000C.123000D.102030

50.下列程序的输出结果是()。

#include<stdio.h>

main()

{iuta=2,b=3,p;

p=f(a,B)

printf("%d",p);

}

intf(a,b)

{intc;

if(a>B)c=1;

e1Seif(a==B)c=0;

else(3=-1;

return(C);

}

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

51.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是()。

A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为n(n-1)/2

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

A.goodabcB.abcdC.abcD.abcgood

53.在下列选项中,不正确的表达式是()

A.a>b>cB.c--,++b,a+=1C.a=c+b>n-m=kD.p++

54.设有以下说明语句:structex{intx;floaty;charz;}example;则下面叙述中不正确的是()。

A.struct是结构体类型的关键字

B.example是结构体类型名

C.x,y,z都是结构体成员名

D.structex是结构体类型名

55.有以下程序

fun(intx)

{intp;

if(x==1)return(3);

p=x-fun(x-2);

returnp;

}

main()

{printf("%d\n",fun(7));}

执行后的输出结果是

A.7B.3C.2D.0

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

A.指令由操作数和操作码两部分组成

B.常用参数xxMB表示计算机的速度

C.计算机的一个字长总是等于两个字节

D.计算机语言是完成某一任务的指令集

57.下列合法的整型常量的表示是

A.98B.oXdeC.32767D.0xDG

58.以下scanf函数调用语句中对结构体变量成员的引用不正确的是

structpupil

{charname[20];

intage

intsex;

}pup[5],*p;

p=pup;

A.scanf("%s",pup[0].name);

B.scanf("%d",&pup[0].age);

C.scanf("%dT",&(p->sex));

D.scanf("%d",p->age);

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

60.以下程序中函数sort的功能足对a所指数组中的数据进行由大到小的排序voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+l,j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;i<10;i++)print("%d,",aa[i]);printf('\n");}程序运行后输出的结果是

A.1,2,3,4,5,6,7,8,9,10

B.10,9,8,7,6,5,4,3,2,1,

C.1,2,3,8,7,6,5,4,9,10

D.1,2,10,9,8,7,6,5,4,3,

四、选择题(20题)61.

62.

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

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

B.eotinue语句的作用是结束整个循环的执行

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

D.从多层循环嵌套中退出时,只能使用got0语句

64.下面描述中错误的是()。

A.系统总体结构图支持软件系统的详细设计

B.软件设计是将软件需求转换为软件表示的过程

C.数据结构与数据库设计是软件设计的任务之一

D.PAD图是软件详细设计的表示工具

65.

有以下程序

#include<stdio.h>

structtt

(intx;structtt*y;)*P;

structtta[4]={20,a+1,15,a+2,30,a+3,17,a};

main

{inti;

p=a;

for(i=l;i<=2;i++){printf("%d,",p->x);P=p->y;}

}

程序的运行结果是()。

A.20,30,B.30,17,C.15,30,D.20,15,

66.

67.

68.

69.若有定义:doublea=22;inti=0,k=18;,则不符合c语言规定的赋值语句是()。

A.i=(a+k)<=(i+k);B.i=a%11;C.a=a++,i++;D.i=!a;

70.

71.有以下程序,其输出结果是()。

voidmain()

{

floarx=1;

inty;

x++;

y=x+1;

printf("x=%d,y=%f",x,y);

}

A.x=2,y=3

B.x=2,y=3.0

C.x=2.0,y=3

D.x=0,y=0.000000

72.

73.检查软件产品是否符合需求定义的过程称为()。

A.确认测试B.集成测试C.验证测试D.验收测试

74.

75.(2)以下数据结构中不属于线性数据结构的是()

A.队列

B.线性表

C.二叉树

D.栈

76.一名教师可讲授多门课程,一门课程可由多名教师讲授。则实体教师和课程间的联系是()。

A.1:l联系B.1:m联系C.m:l联系D.m:n联系

77.

78.要求通过while循环不断读入字符,当读人字母N时结束循环,若变量已正确定义,下列正确的程序段是()。A.B.C.D.A.A.AB.BC.CD.D

79.若有定义“intb[8],*p=b;”,则p+6表示()。

A.数组元素b[6]的值B.数组元素b[6]的地址C.数组元素b[7]的地址D.数组元素b[0]的值加上6

80.下列SQL语句中,用于修改表结构的命令式是A.A.Alter

B.Create

C.Update

D.Insert

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:对M名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。

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

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

试题程序:

六、程序设计题(1题)82.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数,其功能是:求出该学生的平均分,并放入记录的ave成员中。

例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。

试题程序:

#include<stdio.h>

#defineN8

typedefstruct

{

charnum[10];

doubles[N];

doubleave;

}STREC;

voldfun(STREC*a)

{

}

voidmain

STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};

inti;

fun(&s);

printf("The%ssstudentdata:\n",s.num);

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

printf("%4.1fkn",s.s[i]);

printf("\nknave=%7.3fkn",s.aVe);

printf("\n");

}

参考答案

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

2.B

3.B选项B先计算关系表达式“A<=c”的值是0还是l,再比较该值与字符z之间的大小关系,不能实现题目所要求的功能。

4.B对于标识符的长度(即一个标识符允许的字符个数),C语言编译系统是有规定的,即标识符的前若干个字符有效,超过的字符将不被识别。不同的C语言编译系统所规定的标识符有效长度是不同的。故本题答案为B选项。

5.Dc语言规定,一个字符常量代表ASCII码字符集里的一个字符,在群序中用单引号括起来,以便区分。'\v'表示的是竖向跳格:'kx2a'表示的是两位十六迸制数;'a'表示的是字符a对应的ASCII码值。"\0"用双引号故不正确。

6.A解析:C语言的字符型常量中,允许用一种特殊形式的字符常量,就是以一个“\\”开头的字符。其中,“\\ddd”表示用ASCII码(八进制数)表示一个字符,本题中的charc='\\72'H口表示占一个字符的变量c的ASCII码值。

7.D一个客户可以在多家银行办理业务,一家银行也有多个客户办理业务,因此,实体客户和实体银行之间的联系是多对多。本题选择D选项。

8.As是一个公用体,d的值分别与ch中的两个元素的值相同,d的高位放在chFl]中、低位放在chl-0]中,因此输出的结果为21,43。

9.B

10.A

11.B从题目中可知,\O、\t、\\分别为一个字符,而sizeof是求字节个数的函数,其中包括\O占的字节,strlen函数是求数组长度的函数;其以\0结束,因此strlen的值为5,sizeof的值为20。

12.B

13.A

14.A“sizeof(FILE*)=4”,因为“file*”为指针,指针变量占用字节数为4,所以“sizeof(int*)=4”,选项A正确。文件指针的值是地址,是一个十六进制数,它的值不一定小于文件字节数,因此选项B错误。文件指针是所指文件的当前读取位置,而不是文件指针的值,因此选项C错误。“intfscanf(FILE*Stream,constchar*format,[argument...]);”,fScanf函数可以向任意类型的文件写入任意数量的数据(不能超过系统的缓冲区),写文件先写入缓冲区,最后一起写入文件,因此选项D错误。故本题答案为A选项。

15.D

16.C

17.B

18.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选项。

19.B

20.D数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,用的存储结构有顺序和链式结构。用不同的存储结构,其处理的效率是不同的。

21.方法方法解析:在面向对象方法中,方法是指允许作用于某个对象上的各种操作。

22.

23.22解析:本题变量m既是外部变量(值是13),又是fun函数的局部变量(值为3)。函数fun(x*y-m)的值为7*5-3=32,在main函数中,fun(a,b)/m中的m应取外部变量的值13,因此输出2。

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

25.11解析:do…while语句的功能是:首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环;do…while语句的特点是先执行后判断,因此循环体至少执行1次.本程序中x=2不符合循环条件,所以只循环1次。

26.3232解析:根据二叉树的性质,在二叉树的第k层上,最多有2的k-1次方个结点。所以,第6层的结点数最多为32。

27.a[k][i]*sumx&sa[k][i]\r\n*sum\r\nx,&s解析:程序段for(j=1;j<M;j++)if(a[k][i]>a[j][i]))k=j;是找出第i列的最小值,第一处应该是每列最小值累加,所以填a[k][i];和值要通过形参传回主函数,第二处应该填*sum;根据形参可以确定第三处应该填x,&s。

28.20

29.k=p;k=p;解析:为要寻找数组中的最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考查是从首元素开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考查的循环控制变量。当发现当前元素s[p]比临时最大元素s[k)更大时,应该用p更新k。所以在空框处应填入代码“k=p;”。

30.XX解析:主函数中首先定义了一个字符型变量c,接着执行下面while语句,在while循环中,首先从键盘上读入一个字符Y并给赋给字符变量c,赋值表达式的值不为'?',执行输出语句,输出字符X。接着判断while中的循环条件,读入一个字符'?'并赋值给c,赋值表达式的值为'?'循环条件不再满足,退出循环。

31.类类解析:在面向对象方法中,类描述的是具有相似属性与操作的一组对象。

32.52

33.n/2性表的任何位置插入一个元素的概率相等,即概率为p=1/(n+1),则插入一个元素时所需移动元素的平均次数为E=1/(n+1)(n-i+1)=n/2。

34.3*sizeof(double)或243*sizeof(double)或24解析:观察程序可知,本题要求用malloc函数分配三个double型的动态内存单元。

35.77解析:字符型数据可作为整型参加算术运算,其值为其对应的ASCII码。'H'-'A',的结果是7,加'0'后是'7'的ASCII码,所以输出的是字符'7'。

36.结构结构解析:路径测试是白盒测试方法中的—种,它要求对程序中的每条路径最少检查一次,目的是对软件的结构进行测试。

37.无限无限解析:分析程序“while(s)”语句后面有一个“;”不能执行后面的语句,只是执行空语句,所以s=12保持不变,因此,没有条件限制的能循环无限次(即死循环)。

38.9292解析:本主函数中首先定义了一个4行4列的二维数组,然后执行一个while循环,该循环中又嵌套了一个do-while循环。现看while循环,该循环通过i++的值来判断是否结束循环当i++的值为4的时候结束循环,当i=0时,执行while的循环体,显然if语句条件不满足不执行,接着让j=4,然后执行do-while循环体,我们不难看出do-while循环的功能是将笫i+1行的所有元素加起来,所以这时s的值为s=a[1][0]+a[1][1]+a[1][2]+a[1][3]26,当i=1时,i+1=2,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环;当i=2时,i加1变为3,把笫3+1行的所有元素的加到s上,此时s=s+a[2][0]+a[2][1]a[2][2]+a[2][3]=92,当i=3时,3+1=4,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环,当i=3时,if后面括号里的表达式的值为真执行后面的confulue语句,结束该次循环当i=4时while循环结束,所以最后输出的s的值为92。

39.printf("a=%db=%d"ab);printf('a=%d,b=%d',a,b);解析:根据printf函数的格式可知输出语句应该为:printf('a=%d,b=%d',a,b);

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

41.C解析:本题的fun()函数在x等于0或1时返回3,而在其余情况下返回x-fun(x-2),所以本题的递归算法可以这样来表示:在主函数中输出的结果是fun(7),而fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-(5-0)=7-5=2。故本题应该选择C。

42.A解析:本题主要考查数组元素的地址作为实参,当n=0时,把x[0]的地址传递给被调函数change(),即把形参k和实参x指向同一个存储单元,执行被调函数后k[0]=6,即x[0]=6;当n=1时,执行被调函数后x[1]=7,以此类推,最后得到x数组的值为6,7,8,9,10。

43.D解析:字符数组初始化可以有两种方式:方式一,按单个字符的方式赋初值。方式二,把一个字符串作为初值赋给字符数组。选项A定义的字符数组长度为8,由于最后还要加一个“、0”做结束标志,所以赋给他的字符串长度应小于等于7;在给字符数组赋初值的时候,应该用花括号“{”和“}“将字符串括起来。将字符型指针变量指向字符串也有两种方法,一是在定义指针变量时就给其赋初值,比如:char*p=“student”;二是给指针变量赋值,比如:p=“student”;(p已经被定义为字符型指针变量;)。

44.B解析:调用fputc函数输出成功,则返回值是输出的字符。

45.D

46.C解析:二分法查找是一种线性查找方法,其基本方法是:首先要用要查找的关键码与线性表中间位置结点的关键码值进行比较,这个中间结点把线性表分为两个子表,比较相等则查找完毕,不等则根据查找结果确定下一步的查找应该在哪一个子表中进行,如此下去,直到找到满足条件的结点:或者确定表中没有这样的结点。用二分法查找关键码值11的顺序如下所示,其中[]内为本次栓索的子表,()内为该子表的中间结果。从图中可以看出,经四次查找后,确定表中没有这样的结点。因此本题正确答案为选项C(4)。

第一次:[3,6,8,10,12,(15),16,18,21,25,30]

第二次:[3,6,(8),10,12],15,16,18,21,25,30

第三次:[3,6,8,[(10),(12)],15,16,18,21,25,30]

第四次:[3,6,8,10,[(12)],(15),16,18,21,25,30]查找失败。

47.D

48.C解析:线性结构,是指数据元素只有一个直接前件元素和直接后件元素。线性表是线性结构。栈和队列是指对插入和删除操作有特殊要求的线性表,树是非线性结构。

49.B解析:程序中a[3)[2]={0}将数组元素全部初始化为0,指针变量ptr指向包含2个元素的一维数组。在第一个for语句的循环体中ptr=a+i;语句用于将指针变量ptr指向第i行的数组元素,通过两次循环,分别给二维数组a的第。行的第1个元素和第1行的第1个元素赋了值1和2,即a[0][0]=1,a[1][0]=2。

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

51.DD。【解析】本题主要考查对排序算法的理解。冒泡排序法首先将第一个记录的关键字与第二个记录的关键字进行比较,若逆序则交换,然后比较第二个与第三个,以此类推,直至第n-1个与第n个记录的关键字进行比较。第一趟冒泡排序使最大的关键字元素放到最后。以此类推,进行第2~n次冒泡排序。如果在排序过程中不存在逆序,则排序结束。在最坏情况下,冒泡排序中,若初始序列为“逆序”序列,则需要比较n(D-1)/2次。快速排序是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字比另一部分记录的关键字小,然后分别对这两部分记录继续进行排序,最终达到整个记录有序。对于快速排序,当初始记录序列按关键字有序或基本有序时,快速排序退化为冒泡排序,最坏情况下比较次数为n(n-1)/2。

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

53.C

54.B解析:本题中,structex是结构体类型名,example是结构体变量名。

55.C解析:因为fun(intx)是一个递归函数,所以主函数中fun(7)经过三次递归调用,其过程可以描述为'fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-5=2',所以最后的输出结果为2。

56.A

57.C解析:整型常量可以用+进制、八进制和+六进制形式来表示。+进制基本常量用一串连续的数字来表示,八进制数用数字0开头,+六进制数用数字0和字母x或X开头,各个进制都需用各自合法的字符数字表示。选项A)中9是不合法的。选项B)+六进制数字应该用数字零和字母X(或x)开头,选项D)中G不合法。

58.D解析:考查结构体成员变量的引用方法。可用结构体变量名.数据成员名或者结构体指针->数据成员名两种方法来引用。结构体类型的变量、数组和指针变量的定义。

59.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指定的文件中读入一个字符,并把它作为函数值返回。

60.C解析:本题考查的知识点是数组名作为函数的参数以及函数与排序算法结合在一起的综合应用.本题中首先定义一个长度为10的一个整型数组,并初始化为“1,2,3,4,5,6,7,8,9,10”,然后调用排序函数sort(),通过分析不难看出,sort()数是对具有n个元素的a数组进行从大到小排序.由于函数的第一个参数是数组名,其对应的实参可以是函数名或地址。本题在调用该函数时,实参是&aa[3)的地址,即把aa[3]的地址传给?行参数蛆名a,函数也就是对aa[3]开始的5个元素进行从大到小的排序,aa[0]。aa[1],aa[2]、aa[8]、aa[9]并没有变化.Sort()执行完毕后,接着执行后面的for语句输出数组aa中各个元素的值,由于函数sort()只是对aa[3]开始的5个元素进行从大到小的排序,aa[0]、aa[1]、aa[2]、aa[8]、aa[9]并没有变化,所以输出为“1,2,3,8,7,6,5,4,9,10”。所以4个选项中C正确。

61.B

62.D

63.A本题考查循环跳出的知识点:①break语句可以出现在switch循环体内及语句体内,它的作用是跳出循环体,不能用于其他的语句;②continue语句的作用是结束本次循环,即跳过循环体中下面尚未执行的语句,而接着判定循环条件是否成立,确定下一次循环是否继续执行,执行contiune语句不会使整介循环终止;③循环体内使用break语句会使循环提前终止;④从多层循环嵌套中退出时,可以使用90t0语句或者break语句。

64.A详细设计的任务是为软件结构图中而非总体结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节,所以A错误。

65.D

\n程序的结构体数组a的元素形成了一个单向的循环链表,每个元素的指针成员都指向下一个元素的地址。

\n

66.B

67.C

68.B

69.B取模运算符“%”,二元运算符,具有左结合性,参与运算的量均为整型。选项B中的a变量是doable实型,所以8不符合规定。

70.D

71.Dfloat是4个字节,int是两个字节。当用int取float的值时,只取前两个字节

72.D

73.A本题主要考查软件测试的基本知识。软件测试的步骤可分为单元测试(模块测试)、集成测试、确认测试和系统测试。

(1)单元测试是针对每个模块进行的测试,它可从程序的内部结构出发设计测试用例,多个模块可以平行、对立地测试。单元测试主要用于发现详细设计和编程时犯下的错误。单元测试多采用白盒测试,辅之以黑盒测试。

(2)集成测试是在单元测试的基础上,根据模块结构图将各个模块连接起来,必须精心计划,应提交集成测试计划、集成测试规格说明和集成测试分析报告。主要目标是发现与接口有关的问题。集成测试可以发现概要设计时犯的错误。

(3)确认测试用于验证软件的功能和性能及其他特性是否与用户的要求一致。确认测试主要用于发现需求分析时犯下的错误,一般使用黑盒法测试,以表明软件符合需求说明书的要求,应该仔细设计测试用例和测试过程。确认测试必须有用户参加,或以用户为主,用户应参与设计测试用例,通常情况下,主要使用生产中的实际数据进行测试,测试数据通过用户接口输入。

(4)系统测试是将已经通过确认测试的软件,作为整个计算机系统的元素与计算机硬件、外设和网络等其他因素结合在一起,进行一系列的组装测试和确认测试。系统测试的目的是通过与系统的需求定义做比较,发现软件与系统的定义不符合的地方。系统测试可以发现问题定义时犯下的错误。

74.C

75.C所谓的线性结构是指:如果一个非空的数据结构满足下列两个条件,即1)有且只有一个根结点;2)每一个结点最多有一个前驱,也最多有一个后继。同时满足两个条件的有队列、线性表和栈,而二叉树的结点可能存在两个后继,所以不是线性结构。

76.D因为一名教师可讲授多门课程,而一门课程又能由多名教师讲授,所以教师和课程之间是多对多的关系,可以表示为m:n,选择D)。

77.D

78.Awhile循环的执行过程如下:①计算while后面圆括号中表达式的值。当值为非0时,执行步骤②。当值为0时,执行步骤④。②执行循环体一次。③转去执行步骤①④退出循环。在选项A中,表达式(ch=get-char())!="N"表示输入的字符不等于N,如果这个条件表达式成立,则执行循环体,打印输出输入的字符。如果这个条件表达式不成立,即输入的字符等于N,则退出循环。所以选项A为正确答案。

79.B指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中“P+6”指的是将指针向后移动了6个存储单元,即指向uE63,存放的是b[6]的地址。

80.A本题主要考查SQL中一些基本的命令。SQL常用的语句包括:Select、Insert、Update、Delete、Create、Alter和Drop等。

在SQL语言中使用率最高的是Select,这个命令的作用是从表中查找出满足条件的记录。

Insert命令的作用是对数据表进行插入操作。

Update命令的作用是对数据表进行更新操作。

Delete命令的作用是对数据表中的数据进行删除操作。

Create命令的作用是创建数据表。

Alter命令的作用是修改表的结构。

Drop命令的作用是用来删除表,它与Delete的区别是进行Drop操作后,数据表不存在了,而进行Delete操作后,数据表还在,只是数据被删除了。

81.

【解析】因为t是指向一个动态存储空间,因此其是指针,而不是其中的内容,故把“*t=calloc(m,sizeof(STU))”改为“t=(structss*)calloc(m,sizeof(STU));”,而题目要求把学生的全部内容互换,因此即整个结构体,故把“t[k].num=b[j].hum;”改为“t[k]=b[j];”。

82.voidfun(STREC*a)

\n{

\ninti;

\na->ave=0.0;

\nfor(i=0;i<N;i++)

\na->ave=a->ave+a->s[i];

\n/*求各门课程成绩的总和*/

\na->ave=a->ave/N;/*求平均分*/

\n}

\n【解析】本题考查的是指向结构体类型的指针变量做参数和结构体类型成员的运算。fun函数中求出平均成绩,要带回主函数则必须定义一个指针类型的形参STREC*a,同时引用成员使用指向运算符,a->ave和a->s[i]。

\n2022-2023年山东省滨州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.数据库设计包括两个方面的设计内容,它们是()。

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

2.广义表((a),a)的表头是()。

A.aB.(a)C.((a))D.()

3.已有定义:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字堪的表达式是()。

A.isupper(c)B.A<=c<=ZC.A<=c&&c<=ZD.c<=(z-32)&&(a-32)<=c

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

A.C语言编译系统对标识符的长度没有规定

B.C语言标识符的规定长度因系统而异

C.C语言规定标识符长度最多允许16个字符,超长报错

D.C语言规定以下划线开头的标识符长度必须大于1

5.下列选项中不是字符常量的是()。

A.'\v'B.'\x2a'C.'a'D."\0"

6.若有说明语句:charc='\72'则变量c()。

A.包含1个字符B.包含2个字符C.包含3个字符D.说明不合法,c的值不确定

7.在银行业务中,实体客户和实体银行之间的联系是()。

A.—对一B.—对多C.多对一D.多对多

8.有以下程序:main{union{charch[2];intd;}s;d=0x4321;printf("%x,%x\n",S.ch[0],S.ch[l]);}在16位编译系统上,程序执行后的输出结果是()A.21,43B.43,21C.43,00D.21,00

9.线性表是具有n个()的有限序列。

A.字符B.数据元素C.数据项D.表元素

10.

11.以下程序的输出结果是()。main(){charst[20]="hell0\O\t\\\”;printf("%d%d\n",strlen(st),sizeof(st));}A.99B.520C.1320D.2020

12.

13.x>0&&x<=10的相反表达式为()。

A.x<=0||x>10B.x<=0&&x>10C.x<=0||x<=10D.x>0&&x>10

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

A.表达式“sizeof(FILE*)==sizeof(int*)”的值为真

B.文件指针的值是一个整数,它的值一定小于文件字节数

C.文件指针的值是所指文件的当前读取位置

D.使用fscanf函数可以向任意类型的文件中写入任意数量的字符

15.

16.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为()。

A.顺序表B.用头指针表示的循环单链表C.用尾指针表示的循环单链表D.单链表

17.一个序列中有10000个元素,若只想得到其中前10个最小元素,最好采用_______方法

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

18.有以下程序:#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,

19.判断一个循环队列cq(最多元素为m)为满的条件是()。

A.cq->rear-cq-front=m;

B.(cq->rear+1)%m=cq->front;

C.cq->front=cq->rear;

D.cq->rear=m-1;

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

A.一个逻辑数据结构只能有一种存储结构

B.逻辑结构属于线性结构,存储结构属于非线性结构

C.一个逻辑数据结构可以有多种存储结构,且各种存诸结构不影响数据处理的效率

D.一个逻辑数据结构可以有多种存储结构,且各种存诸结构影响数据处理的效率

二、2.填空题(20题)21.在面向对象方法中,允许作用于某个对象上的操作称为【】。

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

#include<stdio.h>

main()

{inty,a;

y=2,a=1;

while(y--!=-1)

{do{a*=y;a++;}while(y--);}

printf("%d,%d",a,y);}

23.下面程序执行后输出的结果是【】。

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d\n",fun(a,b)/m);

}

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

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

25.下列程序的循环次数是______。

x=2;

do

{x=x*x;}

while(!x);

26.在一棵二叉树上第6层的结点个数最多是【】。

27.以下程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值,和值通过形参传回主函数输出。请填空,

#include<stdio.h>

#defineM2

#defineN4

voidSumColumMin(inta[M][N],int*sum)

{inti,j,k,s=0;

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

k=O;

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

if(a[k][i]>a[j][i])k=j;

s+:【】;

}

【】=s;

}

main()

{intx[M][N]={3,2,5,1,4,1,8,3},s;

SumColumMin(【】);

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

}

28.下面程序的输出是()。

main()

{intarr[8],i,k=0;

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

arr[i]=i;

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

k+=arr[i]+i;

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

}

29.下面程序的功能是输出数组s中最大元素的下标,请填空。

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

30.有以下程序:

#include<stclio.h>

main()

{charc;

while((c=getchar())!='?')putchar(--c);

}

程序运行时,如果从键盘输入:Y?N?<回车>,则输出结果为【】。

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

32.设有以下定义和语句,sizeof(a)的值是【】,sizeof(b)的值是【】。

struct{intday;Charmonth;intyear;}a,*b;

b=&a;

33.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【】。

34.以下程序给指针p分配三个double型动态内存单元,请填空。

#include<stdio.h>

#include<stdlib.h>

main()

{double*p;

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

p[0]=1.5;p[1]=2.5;P[2]=3.5;

printf("%f%f%f\n",p[0],p[1],p[2]);

}

35.若有以下程序

main()

{chara;

a='H'-'A'+'0';

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

}

执行后输出结果是【】。

36.软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。

37.下列语句能循环______次。

ints=12;

while(s);

--s;

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

main()

{

inta[4]]4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};

inti=0.j=0,s=0;

while(i++<4}

if(i==2||i==4)continue;

j=0;

do

{

s+=a[i][j]:

j++;

}while(j<4);

}

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

}

voidfun(intx,inty)

}

39.若变量a,b已定义为int类型并分别赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的输出语句行:【】。

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

intadd(intx,inty,【】,)

{【】=x+y;}

三、1.选择题(20题)41.有以下程序:fun(intx){intp;if(x==0‖x=1)return(3);p=x-fun(x-2);returnp;}main(){printf("%d\n",fun(7);}执行后的输出结果是()。

A.7B.3C.2D.0

42.有以下程序:voidchange(intk[]){k[0]=k[5];)main(){intx[10]={1,2,3,4,5,6,7,8,9,10},n=0;while(n<=4)(change(&x[n]);n++;}for(n=0;n<5;n++)printf("%d",x[n]);printf("\n");}程序运行后的输出结果是()。

A.678910B.13579C.12345D.62345

43.下列选项中正确的语句组是()。

A.chars[8];s={"Beijing"};

B.char*s;s={"Beijing"};

C.chars[8];s="Beijing";

D.char*s;s="Beijing";

44.C语言规定如果调用fputc函数输出成功,则返回值是()。

A.1B.输出的字符C.0D.真

45.下列叙述中,正确的一条是______。

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

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

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

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

46.在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为______。

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

47.下列程序的输出结果是_____。intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%\d\n",r);}

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

48.下列数据结构中,属于非线性的是()。

A.线性表B.队列C.树D.栈

49.有以下程序:#include<stdio.h>main(){inta[3][2]={0},(*ptr)[2],i,j;for(i=0;i<2;i++){ptr=a+i;scanf("%d",ptr);ptr++;}for(i=0;i<3;i++)}for(j=0;j<2;j++)prinff("%2d",a[i][j]);prinff("\n");}}若运行时输入:123<回车>,则输出结果是()。

A.产生错误信息B.102000C.123000D.102030

50.下列程序的输出结果是()。

#include<stdio.h>

main()

{iuta=2,b=3,p;

p=f(a,B)

printf("%d",p);

}

intf(a,b)

{intc;

if(a>B)c=1;

e1Seif(a==B)c=0;

else(3=-1;

return(C);

}

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

51.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是()。

A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为n(n-1)/2

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

A.goodabcB.abcdC.abcD.abcgood

53.在下列选项中,不正确的表达式是()

A.a>b>cB.c--,++b,a+=1C.a=c+b>n-m=kD.p++

54.设有以下说明语句:structex{intx;floaty;charz;}example;则下面叙述中不正确的是()。

A.struct是结构体类型的关键字

B.example是结构体类型名

C.x,y,z都是结构体成员名

D.structex是结构体类型名

55.有以下程序

fun(intx)

{intp;

if(x==1)return(3);

p=x-fun(x-2);

returnp;

}

main()

{printf("%d\n",fun(7));}

执行后的输出结果是

A.7B.3C.2D.0

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

A.指令由操作数和操作码两部分组成

B.常用参数xxMB表示计算机的速度

C.计算机的一个字长总是等于两个字节

D.计算机语言是完成某一任务的指令集

57.下列合法的整型常量的表示是

A.98B.oXdeC.32767D.0xDG

58.以下scanf函数调用语句中对结构体变量成员的引用不正确的是

structpupil

{charname[20];

intage

intsex;

}pup[5],*p;

p=pup;

A.scanf("%s",pup[0].name);

B.scanf("%d",&pup[0].age);

C.scanf("%dT",&(p->sex));

D.scanf("%d",p->age);

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

60.以下程序中函数sort的功能足对a所指数组中的数据进行由大到小的排序voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+l,j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;i<10;i++)print("%d,",aa[i]);printf('\n");}程序运行后输出的结果是

A.1,2,3,4,5,6,7,8,9,10

B.10,9,8,7,6,5,4,3,2,1,

C.1,2,3,8,7,6,5,4,9,10

D.1,2,10,9,8,7,6,5,4,3,

四、选择题(20题)61.

62.

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

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

B.eotinue语句的作用是结束整个循环的执行

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

D.从多层循环嵌套中退出时,只能使用got0语句

64.下面描述中错误的是()。

A.系统总体结构图支持软件系统的详细设计

B.软件设计是将软件需求转换为软件表示的过程

C.数据结构与数据库设计是软件设计的任务之一

D.PAD图是软件详细设计的表示工具

65.

有以下程序

#include<stdio.h>

structtt

(intx;structtt*y;)*P;

structtta[4]={20,a+1,15,a+2,30,a+3,17,a};

main

{inti;

p=a;

for(i=l;i<=2;i++){printf("%d,",p->x);P=p->y;}

}

程序的运行结果是()。

A.20,30,B.30,17,C.15,30,D.20,15,

66.

67.

68.

69.若有定义:doublea=22;inti=0,k=18;,则不符合c语言规定的赋值语句是()。

A.i=(a+k)<=(i+k);B.i=a%11;C.a=a++,i++;D.i=!a;

70.

71.有以下程序,其输出结果是()。

voidmain()

{

floarx=1;

inty;

x++;

y=x+1;

printf("x=%d,y=%f",x,y);

}

A.x=2,y=3

B.x=2,y=3.0

C.x=2.0,y=3

D.x=0,y=0.000000

72.

73.检查软件产品是否符合需求定义的过程称为()。

A.确认测试B.集成测试C.验证测试D.验收测试

74.

75.(2)以下数据结构中不属于线性数据结构的是()

A.队列

B.线性表

C.二叉树

D.栈

76.一名教师可讲授多门课程,一门课程可由多名教师讲授。则实体教师和课程间的联系是()。

A.1:l联系B.1:m联系C.m:l联系D.m:n联系

77.

78.要求通过while循环不断读入字符,当读人字母N时结束循环,若变量已正确定义,下列正确的程序段是()。A.B.C.D.A.A.AB.BC.CD.D

79.若有定义“intb[8],*p=b;”,则p+6表示()。

A.数组元素b[6]的值B.数组元素b[6]的地址C.数组元素b[7]的地址D.数组元素b[0]的值加上6

80.下列SQL语句中,用于修改表结构的命令式是A.A.Alter

B.Create

C.Update

D.Insert

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:对M名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。

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

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

试题程序:

六、程序设计题(1题)82.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数,其功能是:求出该学生的平均分,并放入记录的ave成员中。

例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。

试题程序:

#include<stdio.h>

#defineN8

typedefstruct

{

charnum[10];

double

温馨提示

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

评论

0/150

提交评论