2021-2022年浙江省绍兴市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021-2022年浙江省绍兴市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021-2022年浙江省绍兴市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021-2022年浙江省绍兴市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021-2022年浙江省绍兴市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年浙江省绍兴市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.请问对一个排好序的数组进行查找,时间复杂度为()

A.O(n)B.O(lgn)C.O(nlgn)D.O(1)

2.有以下程序:viodfun(inta,intb,intc){a=456;b=567;c=678;}main{intx=10,y=20,z=30;fun(x,y,z);printf("%d,%d,%d\n",x,y,z);}输出的结果是()。A.30,20,10B.10,20,30C.456,567,678D.678,567,456

3.使用堆排序方法排序(45,78,57,25,41,89),初始堆序列()

A.78,45,57,25,41,89

B.89,78,57,25,41,45

C.89,78,25,45,41,57

D.89,45,78,41,57,25

4.有以下程序:#include<stdio.h>main(){intx=10,y=11,z=12;if(y<z)x=y;y=z;z=x;printf(“x=%dy=%dz=%d\n”,x,y,z);}程序运行后的输出结果是()。

A.x=11y=12z=11

B.x=10y=10z=10

C.x=11y=11z=10

D.x=10y=10z=12

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

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

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

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

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

6.下列说法不正确的是()。

A.调用函数时,实参可以是表达式

B.调用函数时,实参与形参可以共用内存单元

C.调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等

D.调用函数时,实参与形参的类型必须一致

7.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是______。

A.控制流B.加工C.数据存储D.源和潭

8.若变量已正确定义为int型,要通过语句“scanf(“%d,%d,%d”,&a,&b,&c);”将a赋值为1、将b赋值为2、将c赋值为3,以下输入形式中错误的是(注:□代表一个空格符)()。

A.1,2,3<Enter>

B.□□□1,2,3<Enter>

C.1,□□□2,□□□3<Enter>

D.1□2□3<Enter>

9.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K%9作为散列函数,则散列地址为1的元素有()个。

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

10.

11.为了提高软件的独立性,模块之间最好是()。

A.控制耦合B.公共耦合C.内容耦合D.数据耦合

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

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

13.若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度ASL为()

A.(n-1)/2B.n/2C.(n+1)/2D.n

14.下列关于信息系统的叙述中,错误的是()。

A.广播电视是一种双向的、点到多点的信息交互系自

B.网络聊天是一种双向的,以信息交互为主要目的系统

C.电话是一种双向的、点对点的、以信息交互为主要的的系统

D.雷达是一种以感测和识别为主要目的的系统

15.有以下程序:#include<stdio,h>#include<string,h>struetSTU{intnam;floatTotalSeore;};voidf(strnctSTUp){structSTUs[2]={{20044,550},{20045,537}};p.num=s[1].num;p.TotalScore=s[1].TotalScore;main(){structSTUs[2]={{20041,703},{20042,580}};f(s[0]);printf("%d%3.Of\n",s[0].num,s[0].TotalSeore);}程序运行后的输出结果是()。

A.20045537B.20044550C.20042580D.20041703

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

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

17.设变量已正确定义,则以下能正确计算f=n!的程序是()。A.f=0:for(i=1;i<=n;i++)f*=i:

B.F=1:for(i=1;i<2n;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:

18.下述程序的输出结果是()。#include<stdio.h>voidmain(){chara=1,b=2;charc=a^b<<2;printf("\n%d",C);}

A.9B.10C.12D.2

19.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]=“TEXT”,*b=“++”,c[3]=“1”;printf(“%d,%d,”,strlen(a),sizeof(a));printf(“%d,%d,”,strlen(b),sizeof(b));printf(“%d,%d,\n”,strlen(c),sizeof(c));}程序运行后的输出结果是()。A.4,5,2,4,1,3,B.4,4,2,2,1,1,C.5,5,3,3,2,2,D.4,4,2,2,1,3

20.用二分法查找长度为10的、排好序的线性表,查找不成功时,最多需要比较多少次?()

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

二、2.填空题(20题)21.诊断和改正程序中错误的工作通常称为【】。

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

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);

}

23.若有以下定义和语句,则使指针p指向值为36的数组元素的表达式是【】。

inta[10]={19,23,44,17,37,28,49,36},*p;

p=a;

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

25.顺序存储方法是把逻辑上相邻的结点存储在物理位置______的存储单元中。

26.若有以下定义,则使指针p指向值为35的数组元素的语句是______。

inta[10]={14,27,47,29,35,21,49,71},*p;

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

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

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

}

28.数据库系统中实现各种数据管理功能的核心软件称为【】。

29.设有定义“struct{inta;floatb;charc;}abc,*p_abc=&abc;”,则对结构体成员a的引用方法可以是abc.a和p_abc【】a。

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

#defineP(A)printf("%d",A)

main()

{intj,a[]={1,2,3,4,5,6,7),i=5;

for(j=3;j>1;j--)

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

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

#include<stdio.h>

func(a,B)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main0

{intk=5,m=3,p;

p=func(k,m);

printf("%d",p);

p=func(k,m);

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

}

32.若变量n中的值为24,则print函数共输出【】行,最后一行有【】个数。

voidprint(intn,intaa[])

{inti;

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

{printf("%6d",aa[i]);

if(!(i%5))

printf("\n");

}

printf("\n");

}

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

main()

{intx=1,y=2,z=3;

printf("%d,",x<y?y:x);

printf("%d,",z<y?x++:y++);

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

}

34.下列程序中的数组a包括10个整数元素,分别将前项和后项之和存入数组b,并按每行4个元素输出数组b。请填空。

#include<stdioh>

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

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

for(i;0;i<9;i++)

{if(i%4==0)primf("\n");

printf("%3d",b[i];

}

}

35.在循环中,continue语句与break语句的区别是:______语句只是结束本次循环,然后进行循环的条件判定。

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

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

main()

{intx=3,y=2,t;

t=POW(x+y);

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

}

37.下列程序利用指针将2个数按从大到小的顺序输出。

main()

{inta,b,【】;

printf("inputa,b:");

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

【】;

p2=&b;

if(a<b)

{p=p1;

p1=p2;

p2=p;

}

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

printf("max=%dmin=%d\n",【】);

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

39.下面的语句要使指针p指向一个double类型的动态存储单元,请填空。

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

40.下列程序中字符串中各单词之间有一个空格,则程序的输出结果是【】。

#include<string.h>

main()

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

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

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

}

三、1.选择题(20题)41.某片软盘上已染有病毒,为防止该病毒传染计算机系统,正确的措施是______。

A.删除软盘上的所有文件即删除了病毒B.将该软盘进行写保护C.将软盘放一段时间后再用D.将该软盘重新格式化

42.请读程序:#include<stdio.h>func(inta,intb){intc;c=a+b;returnc;}main(){intx=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf("%d\n",r);上面程序的输出结果是()。

A.11B.20C.21D.31

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

44.设有定义:char*c;,以下选项中能够使字符型指针c正确指向一个字符串的是()。

A.charstr[]="string";c=str;

B.scanf("%s",C);

C.c=getchar();

D.charstr[]="string";strcpy("C,str")

45.若变量均已正确定义并赋值,以下合法的C语言赋值语句是

A.x=y==5;B.x=n%2.5;C.x+n=i;D.x=5-4+1;

46.设p1和p2是指向一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是

A.k=*p1+*p2B.p2=k;C.p1=p2;D.k=*p1*(*p2);

47.在以下术语中,与数据的逻辑结构无关的是______。

A.线性结构B.链式结构C.树型结构D.网状结构

48.下列描述中正确的是()。

A.程序就是软件

B.软件开发不受计算机系统的限制

C.软件既是逻辑实体,又是物理实体

D.软件是程序、数据与相关文档的集合

49.c语言规定,在一个源程序中,main函数的位置()。

A.必须在最开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后

50.有以下函数:charfun(char*p){returnP;}该函数的返回值是()。

A.无确切的值B.形参p中存放的地址值C.一个临时存储单元的地址D.形参p自身的地址值

51.设整型数i=5,则printf("%d",i+++++i);的输出为______。

A.10B.11C.12D.语法错误

52.以下程序的输出结果是______。main(){inta=3;printf("%d\n",(a+=a-+a*a))}

A.-6B.1C.2D.-12

53.以下函数返回a所指数组中最小的值所在的下标值:fun(int*a,intn){inti,j=0,p;p=j;for(i=j;i<n;i++)If(a[i]<a[p])______,return(p);}在横线处应填入的是______。

A.i=pB.a[p]=a[i]C.p=jD.p=i

54.以下正确的程序段是

A.charstr1[]="12345",str2[]="abcdef";

B.charstr[10],*st="abcde";strcat(str,st);

C.charstr[10]=""。*st="abcde";strcat(str,st);

D.char*st1="12345",*st2="abcde";strcat(st1,st2);

55.用链表表示线性表的优点是()。

A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除操作D.数据元素的物理顺序和逻辑顺序相同

56.已知一个文件中存放若干工人档案记录,其数据结构如下:structa{charnumber[100];intage;floatp[6];};定义一个数组:structanumber[10];假定文件已正确打开,不能正确地从文件中读入10名工人数据到数组b中的是()。

A.fread(b,sizeof(structA),10,fp);

B.for(i=0;i<10;i++)fread(b[i],sizeof(structA),1,fp);

C.for(i=0;i<10;i++)fread(b+i,sizeof(structA),1,fp);

D.for(i=0;i<5;i+=2)fread(b+i,sezeof(structA),2,fp);

57.单个用户使用的数据视图的描述称为______。

A.外模式B.概念模式C.内模式D.存储模式

58.对线性表进行二分法检索,其前提条件是()。

A.线性表以顺序方式存储,并按关键码值排好序

B.线性表以顺序方式存储,并按关键码的检索频率排好序

C.线性表以链式方式存储,并按关键码值排好序

D.线性表以链式方式存储,并按关键码的检索频率排好序

59.若有说明语句:charch='\x41';,则ch中______。

A.包含4个字符B.包含2个字符C.包含1个字符D.字符个数不确定,说明不正确

60.下列程序的执行结果是_____。main(){intx=23;do{printf("%d",x--);}while(!x);}

A.321B.23C.不输出任何内容D.陷入死循环

四、选择题(20题)61.

62.层次型、网状型和关系型数据库的划分原则是()

A.数据之间的联系方式B.记录长度C.联系的复杂程度D.文件的大小

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

A.软件测试应该由程序开发者来完成

B.程序经调试后一般不需要测试

C.软件维护只包括对程序代码的维护

D.以上三种说法都不对

64.

65.有以下程序:

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

A.197B.143C.33D.28

66.

67.对于循环队列,下列叙述中正确的是()。

A.队头指针是固定不变的

B.队头指针一定大于队尾指针

C.队头指针一定小于队尾指针

D.队头指针可以大于队尾指针,也可以小于队尾指针

68.下列选项中属于软件生命周期开发阶段任务的是()。

A.可行性研究

B.需求分析

C.详细设计

D.软件维护

69.

70.阅读以下程序及对程序功能的描述,其中正确的描述是

#include<stdio.h>

main()

{

FILE*in,*out;

charch,infile[10],outfile[10];

printf("Entertheinfilename:\n");

scanf("%s",infile);

printf("Entertheoutfilename:\n");

scanf("%s",outfile);

if((in=fopen(infile,"r"))==NULL)

{

printf("cannotopeninfile\n");

exit(0);

}

if((out=fopen(outfile,"w"))==NULL)

{

printf("cannotopenoutfile\n");

exit(0);

}

while(!feof(in))fputc(fgetc(in),out);

fclose(in);

fclose(out);

}

A.程序完成将磁盘文件的信息在屏幕上显示的功能

B.程序完成将两个磁盘文件合二为一的功能

C.程序完成将一个磁盘文件复制到另一个磁盘文件中

D.程序完成将两个磁盘文件合并后在屏幕上输出

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

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

72.有以下程序程序的运行结果是()。

A.CDEFB.ABEFC.ABCDD.CDAB

73.

74.下面程序的输出结果为()。

structst

{intx;

int*y;

}*p;

intdt[4]={10,20,30,40};

structstaa[4]={50,&dt[0],60,&dt[1],

70,&dt[2],80&dt[3]};

main()

{p=aa;

printf("%d\n",++p->x);

printf("%d\n",(++p)->x);

printf("%d\n",++(*p->y));

}

A.10B.50C.51D.60

20606070

20212131

75.按照c语言规定的用户标识符命名规则,不能出现在标识符中的是()。A.连接符B.大写字母C.数字字符D.下划线

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

A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B.在C的函数中,最好使用全局变量

C.外部变量可以在函数之间传递数据

D.自动变量实质上是一个函数内部的局部变量

77.

78.

79.

80.以下程序的输出结果是______。#include<stdio.h>#defineFUDGE(y)2.84+y#definePR(a)printf("%d",(int)(a))#definePRINT1(a)PR(a);putchar('\n')main(){intx=2;PRINT1(FUDGE(5)*x);}

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

五、程序改错题(1题)81.下列给定程序中,函数fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。例如,若nmnl和num2分别为49和21,则输出的最大公约数为7;若num1和num2分别为27和81,则输也的最大公约数为27。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或硼行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.请编写函数proc(),它的功能是:求出str所指字符串中指定字符的个数,并返回此值。例如,若输入字符串12341234123,输入字符4,则输出2。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.B

2.B本题考查实参与形参调用,从实参传递到形参时,只是数值的传递,调用函数中值的改变不会影响主函数中的值,因此原样输出。

3.B

4.Aif条件为真,执行“x=y;”,此时x=11,y=11,z=12;再执行“y=z;z=x;”,此时y=12,z=11,即x=11,y=12,z=11。故本题答案为A选项。

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

6.B

\n本题考查函数调用的基本概念。调用函数时,实参的形式可以是具体的数值,也可以是表达式。实参将数值或表达式的值传递给形参,因而两者的类型必须保持一致;形参在运算过程中会发生改变,但不一定会影响到实参值,所以可知两者不共用内存单元。

\n

7.A解析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。

8.D在输入整数或实数这类数值型数据时,输入数据之间必须用空格、回车符、制表符等间隔符隔开,间隔符个数不限。scanf的格式控制字符串也可以使用其他非空白字符,如本题中的逗号,但在输入时必须输入这些字符,以保证匹配,所以逗号必须输入。故本题答案为D选项。

9.D

10.D

11.D在程序设计中,各模块间的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚、低耦合,以有利于提高模块的独立性。耦合性与内聚性是模块独立的两个定性标准,是互相关联的。

12.B

13.C

14.A广播/电视是一种单向的、点对多点(面)的以信息传递为主要目的的系统。

15.D解析:函数f中定义了结构体类型的变量P作为形参,在main函数中,将结构体变量s[0]中的值传给了形参变量P,在函数f中,虽然改变了p中的内容,但其改变对main函数中s[0]的值不产生影响,所以main函数中输出s[0]的数据仍然是main函数中初始化时的数据。

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

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

18.A

19.Asizeof是运算符,计算数组、指针、类型、对象、函数等所占的字节大小。strlen(*char)是函数,参数必须是字符型指针(char*)。该函数的功能是:返回字符串的长度,不包括字符串结束标识。“sizeof(a)”是求数组a所占空间的大小,包括字符串最后的‘\\0’。所以“sizeof(a)”=5,strlen遇到‘\\0’就结束,“strlen(a)”=4。“strier(b)”是指针指向的字符串长度,“sizeof(b)”是指针的大小。“strlen(c)”是字符串的长度,“sizeof(c)”是数组的长度。因此,输出结果是4,5,2,4,1,3,。故本题答案为A选项。

20.B

21.程序调试程序调试解析:程序调试的任务是诊断和改正程序中的错误。程序调试与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于调试工具找出软件错误的具体位置。软件测试贯穿整个软件生命期,而调试主要在开发阶段。

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

23.p=p+7或p+=7p=p+7或p+=7解析:本题考查通过指针引用数组元素。值为36的数组元素在a数组中是第8个元素,即a[7]。在程序中,p=a;语句将数组a的首地址赋给了指针变量p,则可以用*(p+i)来表示数组元素,*(p+i)与a[i]等价,a[7]可表示为*(p+7)。要使指针p指向a[7],可以用p=p+7移动指针,故填写p=p+7或p+=7。

24.软件开发

25.相邻相邻

26.p=a+4或p=&a[4]。p=a+4或p=&a[4]。解析:可以直接将数组元素a[4]的地址(即&a[4])赋给指针变量p,也可以用数组名加偏移量的形式(即a+4)表示数组元素a[4]的地址,并赋给指针变量p。

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

28.数据库管理系统数据库管理系统(DBMS)

29.->->解析:若结构体变量abc有成员a,并有指针p_abc指向结构变量abc,则引用变量abc成员a的标记形式有abc.a和p_abc->a。

30.5555解析:分析程序执行过程,第一次循环时,j=3,i=5。因为switch(3),所以执行case3,调用P(a[--i])=P(a[4])=P(5),输出5;第二次循环时,j=2,i=4,因为switch(2),所以执行case2,调用P(a[i++])-P(a[4])=P(5),输出5,之后i自加等于5。

31.11231123解析:在主函数中第一次调用func子函数时,m=0,i=2,i=i+m+1=3,m=i+a+b=3+5+3=11。因为在子函数中将m和i定义成了static类型,所以在子函数中对m和i进行的改变,在下一次调用子函数时能进行保存,所以第二次调用子函数时,m=11,i==3,则i=i+m+1=15,m=i+a+b=15+5+3=23。

32.54

33.22132,2,1,3解析:本题考查++,--运算符和条件运算符的使用。

“表达式1?表达式2:表达式3”的功能是:表达式1的值若非0,则计算表达式2的值,且表达式2的值为最终结果;若表达式1的值为0,则计算表达式3的值,且为最终结果。

本题中,x=1,y=2时,x<y成立,输出y的值2;y=2,z=3时,z<y不成立,执行y++,输出2后y值增1,所以最后一个输出x的值不变为1,y的值为增加后的3。

34.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:将数组a中元素a[i]与a[i+1]值相加后的值赋予数组b中元素b[i]小即可实现将一个数组的前项和后项之和存入另一数组。

35.continuecontinue解析:continue语句只是结束本次循环,然后进行循环的条件判定。break语句是终止整个循环的执行,不再进行条件判定。

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

37.*p*p1*p2p1:&a*p1*p2

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

39.(double*)(double*)解析:本题考查强制类型转换。函数malloc的默认返回是void*,若要使指针指向double类型,必须进行类型转换,类型转换格式为:(数据类型*)。

40.HowdoesheHowdoeshe解析:本题的关键在于表达式str1+strlen(str1)/2,注意“/”的用法,可得str1+13/2=str1+6。

41.D解析:软盘中有病毒,有可能打开软盘就会感染机器,因此最好的办法是直接格式化。

42.C解析:函数func的作用是返回两个形参的和,第一个形参是x,y分别自减和自增后的和13,第二个形参的值为8(根据语法规则,应当先使用,后自增),所以func的返回值为13+8=21。

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

44.A在题目的题干中定义了字符指针变量c,在选项A)中,首先定义字符数组s订,然后再把字符数组str的首地址赋给字符指针变量c。所以选项A)是正确的。在选项B)中,应改成scanf(”%s”,&c);在选项c)中,getchar函数的返回值是用户输入的第一个字符的ASCIl码,如出错返回.l,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。即c只能指向一个字符而不能指向字符串。在选项D)中,strepy函数只是将sla'字符串中的内容赋给c,并没有使其指向str,所以选项D)是错误的。

45.A

46.B解析:本题主要考查了一维数组指针的赋值和用指针引用数组元素进行运算。选项B)中p2为指向int型变量的指针。而k为int型变量,不能将int型变量直接赋值给指向int型变量的指针,所以选项B)错误。

47.B

48.D\r\n软件是与计算机操作相关的计算机程序、规程、规则,以及可能有的文件、文档及数据;软件开发要受到计算机系统的限制;软件是一个逻辑实体,不是物理实体,软件具有抽象性。因此选项D正确。

49.C解析:不论main函数在整个过程中的位置如何,一个C程序总是从main函数开始执行的。

50.B解析:本题考查函数返回值的知识。函数返回值是通过函数中的return语句获得,return语句中的表达式的值就是所求函数的值。此表达式的值必须与函数首部所说明的类型一致。若类型不一致,则以函数值的类型为准,由系统进行转换。

51.D解析:C语言中有基本的算术运算符(+、-、*、/)还包括自增自减运算符(++、-),在C语言解析表达式时,它总是进行贪婪咀嚼,这佯,该表达式就被解析为i+++++i,显然该表达式不合C语言语法。

52.D解析:赋值运算符的结合方向是自右至左,所以表达式a+=a=a*a先运算最右边的a*a得9,再运算a=a-9,即a=3-9,所以此时a的值由3变成了-6,最后运算a=a+(-6)=-12。

53.D解析:该程序先判断a[i]<a[p],如果条件为真,则a[i]比当前设定的最小值小(p保留的当前最小元素的下标),那么将i赋给p,即将比较过的最小元素下标保留在p中,作为下面判断的标准。

54.C解析:本题考查了一维字符数组的定义和初始化。选项C中str[10]初始化为空,可以不必进行类似''的空赋值,字符数组若没有进行初始化赋值,默认的字符为空,并且定义完str数组后,应该用“,”分隔而不是“。”,所以选项C错误。

55.C【解析】在链表中因为除了存放数据元素之外,还要存放指针,所以链表花费的存储空间要比顺序表还要多,在插入和删除数据元素时,只需要移动相应的记录指针即可,在链表中,数据的物理结构与逻辑结构不一定相同,因为是靠指针来实现对数据的指定的,所以不能进行随机存取。

56.B

57.A解析:选项A)正确,外模式是用户的数据视图,也就是用户所见到的数据模式;选项B)不正确,全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;选项C)不正确,物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;选项D)不正确,存储模式即为内模式。

58.A解析:对线性表进行二分法检索,要求线性表是按顺序方式存储的,并按关键码值的大小排好序,而不是按关键码的检索频率排序。

59.C解析:'\\x41'是转义字符,x表示41是十六进制数,41是字母a的ASCII码值。

60.B

61.C

62.A\n数据库按数据模型分为层次型数据库、网状型数据库、关系型数据库,数据模型即数据之间的联系方式,因此正确选项为A)。

\n

63.D程序调试是由程序开发者完成诊断和改正程序中的错误的过程;软件测试是由专门的测试人员完成,是发现错误而执行程序的过程;软件维护是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程,是软件生存周期中非常重要的一个阶段。

64.C

65.B宏定义又称为宏代换,格式为”#define标识符字符串”,其中的标识符就是所谓的符号常量,也称为”宏名”,宏的预处理工作也叫做宏展开,即将宏名替换为字符串。本题中把S(k+j)替换成4*(k+j)*k+j+1,计算结果为l43。

66.B

67.D循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构,所以队头指针有时可能大于队尾指针,有时也可能小于队尾指针。

68.C\n软件生命周期可分为软件定义、软件开发和软件运行维护3个阶段。软件开发期包括概要设计、详细设计、实现和测试4个阶段。

\n

69.C

70.C本题主要考查文件的操作。从选项中我们可以知道,本题是对两个磁盘文件进行相关操作。

在程序中,首先定义了两个文件类的指针变量in和out,然后定义了两个字符型数组分别用来保存两个文件的名字,这两个文件即是要被操作的文件。接着分别输入要操作的两个文件的名字,并分别判断文件是否为空文件,如果是,则输出“文件不能被打开”的提示,并返回。然后用一个循环将一个磁盘文件复制到另一个磁盘文件中。最后关闭两个被操作的文件。因此本题的答案选C。

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

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

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

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

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

72.A调用funl函数将全局变量a和b赋值为‘c’和‘D’,然后输出全局变量a和b.最后调用缸rt2输出局部变量a和b的值‘E’和‘F’。答案选择A)。

73.C

74.Cp指向aa的首地址,++p->x首先取x的值,再增1,即50+1;(++p)->x使p指向下一元素,然后取其值,即60,++(*p->y)取y指向的值,即20,然后增1,即20+1

75.AC语言中标识符由字母、下划线或数字组成,且开头必须是字母或下划线。因此A选项中的连接符不合法。

76.B解析:编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。

77.A

78.B

79.A

80.B解析:在程序中如果有带实参的宏,则按#define命令行中指定的字符串从左到右进行置换,如果串中包含宏中的形参,则将程序语句中相应的实参代替形参。将实参带入已经定义的宏中,可以得出答案为“12”。

81.

82.

【解析】求出str所指字符串中指定字符的个数,可以通过将str所指字符串中每一个字符与指定字符相比较,变量i中存放字符串中指定字符的个数,最后返回给主函数。

2021-2022年浙江省绍兴市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.请问对一个排好序的数组进行查找,时间复杂度为()

A.O(n)B.O(lgn)C.O(nlgn)D.O(1)

2.有以下程序:viodfun(inta,intb,intc){a=456;b=567;c=678;}main{intx=10,y=20,z=30;fun(x,y,z);printf("%d,%d,%d\n",x,y,z);}输出的结果是()。A.30,20,10B.10,20,30C.456,567,678D.678,567,456

3.使用堆排序方法排序(45,78,57,25,41,89),初始堆序列()

A.78,45,57,25,41,89

B.89,78,57,25,41,45

C.89,78,25,45,41,57

D.89,45,78,41,57,25

4.有以下程序:#include<stdio.h>main(){intx=10,y=11,z=12;if(y<z)x=y;y=z;z=x;printf(“x=%dy=%dz=%d\n”,x,y,z);}程序运行后的输出结果是()。

A.x=11y=12z=11

B.x=10y=10z=10

C.x=11y=11z=10

D.x=10y=10z=12

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

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

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

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

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

6.下列说法不正确的是()。

A.调用函数时,实参可以是表达式

B.调用函数时,实参与形参可以共用内存单元

C.调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等

D.调用函数时,实参与形参的类型必须一致

7.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是______。

A.控制流B.加工C.数据存储D.源和潭

8.若变量已正确定义为int型,要通过语句“scanf(“%d,%d,%d”,&a,&b,&c);”将a赋值为1、将b赋值为2、将c赋值为3,以下输入形式中错误的是(注:□代表一个空格符)()。

A.1,2,3<Enter>

B.□□□1,2,3<Enter>

C.1,□□□2,□□□3<Enter>

D.1□2□3<Enter>

9.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K%9作为散列函数,则散列地址为1的元素有()个。

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

10.

11.为了提高软件的独立性,模块之间最好是()。

A.控制耦合B.公共耦合C.内容耦合D.数据耦合

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

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

13.若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度ASL为()

A.(n-1)/2B.n/2C.(n+1)/2D.n

14.下列关于信息系统的叙述中,错误的是()。

A.广播电视是一种双向的、点到多点的信息交互系自

B.网络聊天是一种双向的,以信息交互为主要目的系统

C.电话是一种双向的、点对点的、以信息交互为主要的的系统

D.雷达是一种以感测和识别为主要目的的系统

15.有以下程序:#include<stdio,h>#include<string,h>struetSTU{intnam;floatTotalSeore;};voidf(strnctSTUp){structSTUs[2]={{20044,550},{20045,537}};p.num=s[1].num;p.TotalScore=s[1].TotalScore;main(){structSTUs[2]={{20041,703},{20042,580}};f(s[0]);printf("%d%3.Of\n",s[0].num,s[0].TotalSeore);}程序运行后的输出结果是()。

A.20045537B.20044550C.20042580D.20041703

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

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

17.设变量已正确定义,则以下能正确计算f=n!的程序是()。A.f=0:for(i=1;i<=n;i++)f*=i:

B.F=1:for(i=1;i<2n;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:

18.下述程序的输出结果是()。#include<stdio.h>voidmain(){chara=1,b=2;charc=a^b<<2;printf("\n%d",C);}

A.9B.10C.12D.2

19.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]=“TEXT”,*b=“++”,c[3]=“1”;printf(“%d,%d,”,strlen(a),sizeof(a));printf(“%d,%d,”,strlen(b),sizeof(b));printf(“%d,%d,\n”,strlen(c),sizeof(c));}程序运行后的输出结果是()。A.4,5,2,4,1,3,B.4,4,2,2,1,1,C.5,5,3,3,2,2,D.4,4,2,2,1,3

20.用二分法查找长度为10的、排好序的线性表,查找不成功时,最多需要比较多少次?()

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

二、2.填空题(20题)21.诊断和改正程序中错误的工作通常称为【】。

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

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);

}

23.若有以下定义和语句,则使指针p指向值为36的数组元素的表达式是【】。

inta[10]={19,23,44,17,37,28,49,36},*p;

p=a;

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

25.顺序存储方法是把逻辑上相邻的结点存储在物理位置______的存储单元中。

26.若有以下定义,则使指针p指向值为35的数组元素的语句是______。

inta[10]={14,27,47,29,35,21,49,71},*p;

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

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

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

}

28.数据库系统中实现各种数据管理功能的核心软件称为【】。

29.设有定义“struct{inta;floatb;charc;}abc,*p_abc=&abc;”,则对结构体成员a的引用方法可以是abc.a和p_abc【】a。

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

#defineP(A)printf("%d",A)

main()

{intj,a[]={1,2,3,4,5,6,7),i=5;

for(j=3;j>1;j--)

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

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

#include<stdio.h>

func(a,B)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main0

{intk=5,m=3,p;

p=func(k,m);

printf("%d",p);

p=func(k,m);

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

}

32.若变量n中的值为24,则print函数共输出【】行,最后一行有【】个数。

voidprint(intn,intaa[])

{inti;

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

{printf("%6d",aa[i]);

if(!(i%5))

printf("\n");

}

printf("\n");

}

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

main()

{intx=1,y=2,z=3;

printf("%d,",x<y?y:x);

printf("%d,",z<y?x++:y++);

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

}

34.下列程序中的数组a包括10个整数元素,分别将前项和后项之和存入数组b,并按每行4个元素输出数组b。请填空。

#include<stdioh>

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

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

for(i;0;i<9;i++)

{if(i%4==0)primf("\n");

printf("%3d",b[i];

}

}

35.在循环中,continue语句与break语句的区别是:______语句只是结束本次循环,然后进行循环的条件判定。

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

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

main()

{intx=3,y=2,t;

t=POW(x+y);

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

}

37.下列程序利用指针将2个数按从大到小的顺序输出。

main()

{inta,b,【】;

printf("inputa,b:");

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

【】;

p2=&b;

if(a<b)

{p=p1;

p1=p2;

p2=p;

}

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

printf("max=%dmin=%d\n",【】);

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

39.下面的语句要使指针p指向一个double类型的动态存储单元,请填空。

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

40.下列程序中字符串中各单词之间有一个空格,则程序的输出结果是【】。

#include<string.h>

main()

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

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

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

}

三、1.选择题(20题)41.某片软盘上已染有病毒,为防止该病毒传染计算机系统,正确的措施是______。

A.删除软盘上的所有文件即删除了病毒B.将该软盘进行写保护C.将软盘放一段时间后再用D.将该软盘重新格式化

42.请读程序:#include<stdio.h>func(inta,intb){intc;c=a+b;returnc;}main(){intx=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf("%d\n",r);上面程序的输出结果是()。

A.11B.20C.21D.31

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

44.设有定义:char*c;,以下选项中能够使字符型指针c正确指向一个字符串的是()。

A.charstr[]="string";c=str;

B.scanf("%s",C);

C.c=getchar();

D.charstr[]="string";strcpy("C,str")

45.若变量均已正确定义并赋值,以下合法的C语言赋值语句是

A.x=y==5;B.x=n%2.5;C.x+n=i;D.x=5-4+1;

46.设p1和p2是指向一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是

A.k=*p1+*p2B.p2=k;C.p1=p2;D.k=*p1*(*p2);

47.在以下术语中,与数据的逻辑结构无关的是______。

A.线性结构B.链式结构C.树型结构D.网状结构

48.下列描述中正确的是()。

A.程序就是软件

B.软件开发不受计算机系统的限制

C.软件既是逻辑实体,又是物理实体

D.软件是程序、数据与相关文档的集合

49.c语言规定,在一个源程序中,main函数的位置()。

A.必须在最开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后

50.有以下函数:charfun(char*p){returnP;}该函数的返回值是()。

A.无确切的值B.形参p中存放的地址值C.一个临时存储单元的地址D.形参p自身的地址值

51.设整型数i=5,则printf("%d",i+++++i);的输出为______。

A.10B.11C.12D.语法错误

52.以下程序的输出结果是______。main(){inta=3;printf("%d\n",(a+=a-+a*a))}

A.-6B.1C.2D.-12

53.以下函数返回a所指数组中最小的值所在的下标值:fun(int*a,intn){inti,j=0,p;p=j;for(i=j;i<n;i++)If(a[i]<a[p])______,return(p);}在横线处应填入的是______。

A.i=pB.a[p]=a[i]C.p=jD.p=i

54.以下正确的程序段是

A.charstr1[]="12345",str2[]="abcdef";

B.charstr[10],*st="abcde";strcat(str,st);

C.charstr[10]=""。*st="abcde";strcat(str,st);

D.char*st1="12345",*st2="abcde";strcat(st1,st2);

55.用链表表示线性表的优点是()。

A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除操作D.数据元素的物理顺序和逻辑顺序相同

56.已知一个文件中存放若干工人档案记录,其数据结构如下:structa{charnumber[100];intage;floatp[6];};定义一个数组:structanumber[10];假定文件已正确打开,不能正确地从文件中读入10名工人数据到数组b中的是()。

A.fread(b,sizeof(structA),10,fp);

B.for(i=0;i<10;i++)fread(b[i],sizeof(structA),1,fp);

C.for(i=0;i<10;i++)fread(b+i,sizeof(structA),1,fp);

D.for(i=0;i<5;i+=2)fread(b+i,sezeof(structA),2,fp);

57.单个用户使用的数据视图的描述称为______。

A.外模式B.概念模式C.内模式D.存储模式

58.对线性表进行二分法检索,其前提条件是()。

A.线性表以顺序方式存储,并按关键码值排好序

B.线性表以顺序方式存储,并按关键码的检索频率排好序

C.线性表以链式方式存储,并按关键码值排好序

D.线性表以链式方式存储,并按关键码的检索频率排好序

59.若有说明语句:charch='\x41';,则ch中______。

A.包含4个字符B.包含2个字符C.包含1个字符D.字符个数不确定,说明不正确

60.下列程序的执行结果是_____。main(){intx=23;do{printf("%d",x--);}while(!x);}

A.321B.23C.不输出任何内容D.陷入死循环

四、选择题(20题)61.

62.层次型、网状型和关系型数据库的划分原则是()

A.数据之间的联系方式B.记录长度C.联系的复杂程度D.文件的大小

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

A.软件测试应该由程序开发者来完成

B.程序经调试后一般不需要测试

C.软件维护只包括对程序代码的维护

D.以上三种说法都不对

64.

65.有以下程序:

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

A.197B.143C.33D.28

66.

67.对于循环队列,下列叙述中正确的是()。

A.队头指针是固定不变的

B.队头指针一定大于队尾指针

C.队头指针一定小于队尾指针

D.队头指针可以大于队尾指针,也可以小于队尾指针

68.下列选项中属于软件生命周期开发阶段任务的是()。

A.可行性研究

B.需求分析

C.详细设计

D.软件维护

69.

70.阅读以下程序及对程序功能的描述,其中正确的描述是

#include<stdio.h>

main()

{

FILE*in,*out;

charch,infile[10],outfile[10];

printf("Entertheinfilename:\n");

scanf("%s",infile);

printf("Entertheoutfilename:\n");

scanf("%s",outfile);

if((in=fopen(infile,"r"))==NULL)

{

printf("cannotopeninfile\n");

exit(0);

}

if((out=fopen(outfile,"w"))==NULL)

{

printf("cannotopenoutfile\n");

exit(0);

}

while(!feof(in))fputc(fgetc(in),out);

fclose(in);

fclose(out);

}

A.程序完成将磁盘文件的信息在屏幕上显示的功能

B.程序完成将两个磁盘文件合二为一的功能

C.程序完成将一个磁盘文件复制到另一个磁盘文件中

D.程序完成将两个磁盘文件合并后在屏幕上输出

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

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

72.有以下程序程序的运行结果是()。

A.CDEFB.ABEFC.ABCDD.CDAB

73.

74.下面程序的输出结果为()。

structst

{intx;

int*y;

}*p;

intdt[4]={10,20,30,40};

structstaa[4]={50,&dt[0],60,&dt[1],

70,&dt[2],80&dt[3]};

main()

{p=aa;

printf("%d\n",++p->x);

printf("%d\n",(++p)->x);

printf("%d\n",++(*p->y));

}

A.10B.50C.51D.60

20606070

20212131

75.按照c语言规定的用户标识符命名规则,不能出现在标识符中的是()。A.连接符B.大写字母C.数字字符D.下划线

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

A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B.在C的函数中,最好使用全局变量

C.外部变量可以在函数之间传递数据

D.自动变量实质上是一个函数内部的局部变量

77.

78.

79.

80.以下程序的输出结果是______。#include<stdio.h>#defineFUDGE(y)2.84+y#definePR(a)printf("%d",(int)(a))#definePRINT1(a)PR(a);putchar('\n')main(){intx=2;PRINT1(FUDGE(5)*x);}

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

五、程序改错题(1题)81.下列给定程序中,函数fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。例如,若nmnl和num2分别为49和21,则输出的最大公约数为7;若num1和num2分别为27和81,则输也的最大公约数为27。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或硼行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.请编写函数proc(),它的功能是:求出str所指字符串中指定字符的个数,并返回此值。例如,若输入字符串12341234123,输入字符4,则输出2。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.B

2.B本题考查实参与形参调用,从实参传递到形参时,只是数值的传递,调用函数中值的改变不会影响主函数中的值,因此原样输出。

3.B

4.Aif条件为真,执行“x=y;”,此时x=11,y=11,z=12;再执行“y=z;z=x;”,此时y=12,z=11,即x=11,y=12,z=11。故本题答案为A选项。

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

6.B

\n本题考查函数调用的基本概念。调用函数时,实参的形式可以是具体的数值,也可以是表达式。实参将数值或表达式的值传递给形参,因而两者的类型必须保持一致;形参在运算过程中会发生改变,但不一定会影响到实参值,所以可知两者不共用内存单元。

\n

7.A解析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。

8.D在输入整数或实数这类数值型数据时,输入数据之间必须用空格、回车符、制表符等间隔符隔开,间隔符个数不限。scanf的格式控制字符串也可以使用其他非空白字符,如本题中的逗号,但在输入时必须输入这些字符,以保证匹配,所以逗号必须输入。故本题答案为D选项。

9.D

10.D

11.D在程序设计中,各模块间的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚、低耦合,以有利于提高模块的独立性。耦合性与内聚性是模块独立的两个定性标准,是互相关联的。

12.B

13.C

14.A广播/电视是一种单向的、点对多点(面)的以信息传递为主要目的的系统。

15.D解析:函数f中定义了结构体类型的变量P作为形参,在main函数中,将结构体变量s[0]中的值传给了形参变量P,在函数f中,虽然改变了p中的内容,但其改变对main函数中s[0]的值不产生影响,所以main函数中输出s[0]的数据仍然是main函数中初始化时的数据。

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

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

18.A

19.Asizeof是运算

温馨提示

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

最新文档

评论

0/150

提交评论