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

下载本文档

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

文档简介

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

一、单选题(20题)1.以下有4组用户标识符,其中合法的一组是()。

A.FOr-subCase

B.4dDOSize

C.f2_G3IFabc

D.WORDvoiddefine

2.C语言中,组成数据文件的成分是()。A.A.记录

B.数据行

C.数据块

D.字符(字节)序列

3.用C语言编写的代码程序

A.可立即执行B.是一个源程序C.经过编译即可执行D.经过编译解释即可执行

4.

5.以下选项中与“if(a==l)a=b;elsea++;”语句功能不同的switch语句是()。

A.switch(a){casel:a=b;break;default:a++;}

B.switch(a==l){case0:a=b;break;casel:a++;}

C.switch(a){default:a++;break;casel:a=b;}

D.switch(a==l){casel:a=b;break;case0:a++;}

6.

7.设有定义语句

则以下叙述正确的是().

A.f是指向函数的指针变量,该函数具有_个int类型的形参

B.f是基类型为int的指针变量

C.f是指向int类型一维数组的指针变量

D.f是函数名,该函数的返回值是基类型为int类型的地址

8.定义int*swap()指的是______。

A.—个返回整型值的函数swap()

B.一个返回指向整型值指针的函swap()

C.一个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

9.在一个单链表HL中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行____。

A.q一>next=p一>next;p一>next=q;

B.q一>next=p一>next;p一>next=q;

C.p一>next=q一>next;q=p;

D.p一>next=q一>next;q一>next=p;

10.欧几里得的《几何原本》描述了解最大公约数的算法,针对两个整型a,b(a>b>0),其伪代码如下,请估算该算法的复杂度

A.O(lgb)B.O(a*b)C.O(a*a)D.O(b*b)

11.在循环双链表的p所指的结点之前插入s所指结点的操作是()。A.p->prior->prior

B.p->prior->prior

C.s->prior->next=s

D.s->prior->prior=s

12.设有序表中的元素为(13,18,24,35,47,50,62),则在其中利用二分法查找值为24的元素需要经过()次比较容易

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

13.

14.下列选项中,不能用作标识符的是A._1234_B._1_2C.int_2_D.2_int_

15.在结构化方法中,软件功能分解属于下列软件开发中的阶段是______。

A.详细设计B.需求分析C.总体设计D.编程调试

16.程序运行后的输出结果是()。A.10B.30C.0D.64

17.设有以下函数:voidfun(intn,char*s){…}则下面对函数指针的定义和赋值均正确的是()。

A.void(*pf)();pf=fun;

B.void*pf();pf=fun

C.void*pf();*pf=fun;

D.void(*pf)(int,char);pf=&fun;

18.已知inta=2,b=3;则执行表达式a=a<b后,变量a的值为()。

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

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

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

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

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

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

20.如果树的的结点A有4个兄弟,而且B为A的双亲,则B的度为()。

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

二、2.填空题(20题)21.有以下程序:

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

则在程序下划线处应填入的是【】。

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

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

}

}

23.若运行时给变量x输入12,则以下程序的运行结果是【】;

main(){

intx,y;

scanf(""%d"",&x);

y=x>12?x+10:x-12;

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

}

24.软件是程序、数据和【】的集合。

25.数据结构分为逻辑结构与存储结构,线性链表属于【】。

26.一个模块直接调用的其他模块的模块个数称为______。

27.目前实际存在和使用的广域网基本上都是采用______拓扑结构类型。

有以下程序:

#include<string.h>

structSTU

{intnum;

floatTotalScore;};

voidf(structSTUp)

{structSTUs[2]={{20041,703},{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.0f\n",s[0].num,s[0],TotalScore);

}

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

28.下面程序的输出结果是【】。

structaa

{intx,*y;

}*p;

inta[8]={10,20,30,40,50,60,70,80};

structaab[4]={100,&a[1],200,&a[3],10,&a[5],20,&a[7]};

main()

{p=b;

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

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

}

29.若有定义inta[4][4]={1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},则初始化后,a[1][1]得到的初值是______。

30.用树型结构表示实体类型及实体间联系的数据模型称为【】。

31.语句:x++;++x;x=1/x;执行后都使变量x中的值增1,请写出一条同一功能的赋值语句______。

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

voidfun()

{staticinta;

a+=2;

printf("%d",A);

}

main()

{intcc;

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

printf("\n");

}

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

main()

{

charstrl[]]="Howdoyoudo",*p1=strl;

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

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

}

34.以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。

intfun(intn)

{

intm=0,f=1,i;

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

{

m+=i*f;

f=______;

}

returnm;

}

main()

{printf(“m=%d\n”,______)};

35.当运行以下程序时,输入abcd,程序的输出结果是:()。

insert(charstr[])

{inti;

i=strlen(str);

while(i>0)

{str[2*i]=str[i];str[2*i-1]='*';i--;}

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

}

main()

{charstr[40];

scanf("%s",str);insert(str);

}

36.设inta=5,b=6,表达式(++a==b--)?++a:--b的值是【】。

37.以下函数creat用来建立一个带头结点的单向链表,新产生的结点是插在链表头的

末尾。单向链表的头指针作为函数值返回。请填空。

#include<stdio.h>

structlist

{chardata;

structlist*next;

};

structlist*creat;

{structlist*h,*p,*q;

charch;

h=(【】)malloc(sizeof(structlist));

p=q=h;

ch=getchar();

while(ch!='?')

{p=(【】)mallco(sizeof(structlist));

p->data=ch;

q->next=p;

q=p;

ch=getchar();

}

p->next='\0';

【】;

}

38.在面向对象方法中,()是具有相似性质的对象的集合。

39.在面向对象方法中,允许作用于某个对象上的操作称为【】。

40.下列程序可以判断输入的年份是不是闰年。

#include

main()

{int【】,leap;

scanf("%d",&year);

if(year%4)

leap=0;

elseif(year%lO0)

【】;

elseif(year%400)

leap=0;

else

leap=1;

if(【】)

printf("%d年是闰年",year);

else

printf("%d年不是闰年\n",year);

}

三、1.选择题(20题)41.在一棵二叉树上第5层的结点数最多是______。

A.8B.16C.32D.15

42.有以下程序:intf(inta){returna%2;}main(){ints[8]={1,3,5,2,4,6},i,d=0;for(i=0;f(s[i]);i++)d+=s[i];printf("%d\n",d);}程序运行后的输出结果是()。

A.9B.11C.19D.21

43.软件需求分析阶段的工作,可以分为4个方面:需求获取、需求分析、编写需求规格说明书以及()。

A.阶段性报告B.需求评审C.总结D.都不正确

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

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

45.有如下程序

main()

{intn=9;

while(n>6){n--;printf("%d",n);}}

该程序的输出结果是

A.987B.876C.8765D.9876

46.C语言中的标识符只能由字母、数字和下划线3种字符组成,且第一个字符

A.必须为字母B.必须为下划线C.必须为字母或下划线D.可以是字母,数字和下划线中任一字符

47.以下对结构体类型变量td的定义中,错误的是()。

A.typcdefstructaa{intn;floatm;}AA;AAtd;

B.structaa{intn;floatm;}structaatd;

C.struct{intn;floatm;}aa;structaatd;

D.struct{intn;floatm;}td;

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

main()

{inta,i;a=0;

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

{switch(i)

{case0:

case3:a+=2;

case1:

case2:a+=3;

default:a+=5;}

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

A.31B.13C.10D.20

49.下面语句的输出结果是______。printf("/od\n",strlen("\t\"\065\xff\n"))

A.14B.8C.5D.输出项不合法,无正常输出

50.有以下程序#include<stdio.h>sub1(chara,charB){charc;c=a;a=b;b=c;}sub2(char*a,charB){charc;c=*a;*a=b;b=c;}sub3(char*a,char*B){charc;c=*a;*a=*b;*b=c;}main(){cha,a,b;a='A';b='B';sub3(&a,&b)putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);putchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}程序运行后的输出结果是()

A.BABBABB.ABBBBAC.BABABAD.BAABBA

51.简单的交换排序方法是()。

A.快速排序B.选择排序C.堆排序D.冒泡排序

52.有以下程序main(){inta,b,d=25;a=d/10%9;b=a&&(-1)printf("%d,%d\n",a,b);}程序运行后的输出结果是______。

A.6,1B.2,1C.6,0D.2,0

53.有以下程序:floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序运行后的输出结果是______。

A.编译错误B.9C.21D.9

54.在下述程序中,判断i>j共执行的次数是()。#include<stdio.h>main(){inti=0,j=10,k=2,s=0;for(;;){i+=k;if(i>j){printf("%d",s);break;}s+=i;}}

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

55.定义int*swap()指的是______。

A.一个返回整型值的函数swap()

B.一个返回指向整型值指针的函数swap()

C.一个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

56.设有二维数组A[8][9],其每个元素占2个字节,从首地址400开始,按行优先顺序存放,则元素A[8,5]的存储地址为______。

A.570B.506C.410D.482

57.若a、b、c、d都是int型变量且都已经正确赋初值,则下列不正确的赋值语句是()。

A.a+d;B.a++;C.a=b=c=d=100;D.a=(b=3)+(d=5);

58.有以下程序:#include<stdio.h>voidfun(char*a,char*b){a=b;(*a)++;}main(){charc1='A',c2='a',*p1,*p2;p1=&c1;P2=&c2;fun(p1,p2);printf("%c%c\n",c1,c2);}程序运行后的输出结果是()。

A.AbB.aaC.AaD.Bb

59.结构化程序设计主要强调的是______。

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

60.C语言结构体类型变量在程序运行期间

A.TC环境在内存中仅仅开辟一个存放结构体变量地址的单元

B.所有的成员一直驻留在内存中

C.只有最开始的成员驻留在内存中

D.部分成员驻留在内存中

四、选择题(20题)61.在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是

A.连接B.选择C.投影D.笛卡儿乘积

62.

63.

64.

65.有三个关系R,S和T如下:

其中关系T由关系R和S通过某种操作得到,该操作为()。A.选择B.投影C.交D.并

66.

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

A.C程序中注释部分只能放在程序最后

B.花括号“{“和”}”可以作为函数体的定界符,也可以作为复合语句的定界符

C.构成C程序的基本单位是函数,所有函数名都可以由用户命名

D.分号不是语句的一部分,是C语句之间的分隔符

68.

69.软件设计中衡量模块独立性的度量标准是()。

A.抽象和信息隐蔽B.局部化和封装化C.内聚性和耦合性D.激活机制和控制方法

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

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

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

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

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

71.

72.

73.C语言中,合法的字符型常数是_________。

A.‘A’B.“A”C.65D.A

74.有以下程序:

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

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

75.

76.有以下程序:

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

A.12B.14C.1234D.123456

77.

以下程序的输出结果是()。

main()

{inti,a[4][4]一{{1,3,5),{2,4,6},{3,5,7}};

printf("%(1%d%d%d\n".a[O][3],a[1][2],a[2]

[1],a[3][0];

}

A.0650B.1470C.5430D.输出值不定

78.有以下程序

voidsort(inta[],intn)

{

inti,j,t;

for(i=0;i<n-1;i+=2)

for(j=i+2;j<n;j+=2)

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

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

printf("%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.9,2,7,4,5,6,3,8,1,10D.1,10,3,8,5,6,7,4,9,2,

79.下列哪个不属于DOM元素结点类型?

A.元素结点B.文本结点C.属性结点D.样式结点

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:根据整型形参n,计算如下公式的值。

例如,若n=12,则应输出0.618026。

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

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

试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),其功能是统计s所指字符串中的数字字符个数,并将其作为函数值返回。例如,s所指字符串中的内容是2def35adh253kjsdf7/kj8655x,函数fun()返回值为11注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

参考答案

1.C解析:选项A中for和case为C语言中的保留字,不能作为用户标志符,故A错误。选项B中的4d其开头的第一个为数字,而在C语言中规定,第一个字符必须为字母或者下划线,故B错误;选项D中void为C语言中的保留字,不能作为用户标志符,故D错误。所以,4个选项中选项C符合题意。

2.D解析:C语言中的文件是流式文件。流式文件是一种无结构文件,即整个文件是一串字符流或二进制流。文件的存取以字符或字节为单位。

3.B解析:C语言一种高级语言,C语言源程序经过C语言编译程序编译之后,生成一个后缀为。OBJ的二进制文件(称为目标文件),最后还要由称为“连接程序”(Link)的软件,把此。OBJ文件与C语言提供的各种库函数连接在一起,生成一个后缀.EXE的可执行文件。显然C语言不能立即执行,故选项A错误;根据以上定义,选项C和选项D错误,所以,4个选项中选项B符合题意。

4.A

5.B题中当a的值为l时,关系表达式a==l的值为真,即1,因此程序将跳转到easel执行a++操作,与题干程序刚好相反。

6.A

7.A

8.B解析:—个函数可以带回—个整型值、字符值、实型值等,但也可以带回指针型数据,即地址。本题的定义中,包括括号和*号,由于()优先级高于*。故它是—个返回整型指针的函数。

9.D

10.A

11.D

12.C

13.C

14.D解析:本题考核的知识点是用户的标识符。在C语言中,合法的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或者下划线,如:acd,d_ad、_adf124,_124等都是合法的标识符号.而2asdf、_sd/=都不是合法的标识符.在C语言中大写字母和小写字母被认为是两个不同的字符,如:ACD和acd是两个不同的标识符号。选项D中用下划线作为第一个字符,这是不合法的,故选项D不正确,所以,4个选项中选项D符合题意。

15.C解析:软件系统结构的总体设计包括:基于功能层次结构建立系统、按功能划分成模块的层次结构、确定每个模块的功能、建立与已确定的软件需求的对应关系、确定模块间的调用关系和模块间的接口、评估模块划分的质量等方面。详细设计的任务是:在使用程序设计语言编制程序以前,对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。需求分析是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求,通常包括:功能需求、性能需求、环境需求、可靠性需求、安全保密要求、用户界面需求、资源使用需求、成本消耗需求、开发进度需求等。编程调试的任务是诊断和改正程序中潜在的错误。综上所述。软件功能分解只能发生在总体设计阶段。

16.D[解析]本题目中静态局部变量x,在静态存储区内分配存储单元。在程序整个运行期间都不释放。所以第一次循环s的值为2.第二次循环中,返回的x的值为4.所以s的值为8.第三次循环,返回的x的值为8.所以s的值为64.

17.A函数指针的定义格式为函数类型(*指针变量名)(形参列表);函数名和数组名一样代表了函数代码的首地址,因此在赋值时,直接将函数指针指向函数名就行了。所以选项A正确。

18.B解析:先计算关系表达式a<b=2<3为真(表达式为真时,如果变量为int型变量则真用1表示,假用0表示),即a=1。

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

20.C

21.ii解析:上三角的情况是对数组a[i][j],j≥j的时候,因此,在j≥i时应输出所需要的元素,故横线上应填i。

22.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个的形式输出。

23.00解析:三目运算符的形式为(表达式1)?(表达式2):(表达式3)。当(表达式1)值为真时,返回(表达式2)的值;为假时,返回(表达式3)的值。题中因为x>12为假,所以结果为x-12,即为0。

24.文档文档解析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。

25.存储结构

26.扇出扇出解析:在结构图中,调用一个给定模块的模块个数称为扇入,一个模块直接调用的其他模块个数称为扇出。

27.2004170320041703解析:由于参数传递只是将实参的值复制到形参中,形参与实参拥有各自的存储空间,因此形参的改变并不影响实参,所以并不改变s的情况。

28.3010130101解析:注意地址自增与变量自增的区别。

29.二维数组可以看成是按矩阵形式排列的,题目中给二维数组赋初值是按行分段赋值的,a[4][4]可以分解为4个一维数组,其数组名分别为a[O]、a[1]、a[2]、a[3],这4个一维数组都有4个元素,a[0]的元素为a[0][0]、a[0][1]、a[0][2]、a[0][3]。\r\n\r\n

30.层次模型用树型结构表示实体类型及实体间联系的数据模型称为层次模型,用有向图结构表示实体类型及实体间联系的数据模型称为网状模型,用二维表格结构表示实体及其联系的数据模型称为关系模型。

31.x+=1x+=1解析:本题考查'++'、'--'运算符。'++'、'--'只能作用于变量,不能用于表达式或常量;前缀形式是在使用变量之前先将其值增1或减1,后缀形式是先使用变量原来的值,使用完后再使其增1或减1。

32.2468

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

34.-f或f*-1或-1*f或f*(-1)或(*1)*f。fun(10)-f或f*-1或-1*f或f*(-1)或(*1)*f。\r\nfun(10)解析:本题考核的知识点是C程序的简单应用。本题要求调用fun()函数计算m的值,故在主函数中的空格处应该填调用fun()函数的语句。fun()函数有一个形参n,为每次参加计算的值的个数,故在主函数中的空格处应该填fun(10),回到fun()函数,函数用到了一个for循环,共循环n次,当循环第i次的时候,m的值等于m=1-2+……+[(-1)的i-1次方]*1所以在fun()函数的空格处应该填使f改变符号的语句,故应填*f或f*-1或-1*f或f*(-1)或(-1)*f。

35.a*b*c*d*a*b*c*d*解析:字符处理函数strlen()测试字符串常量的长度,不包括‘\\0’在内。因此,函数insert()实现了将字符数组中每个非‘\\0’的字符后插入字符‘*’的功能。故输出结果是a*b*c*d*。

36.77解析:此表达式为三目运算符,++a的值为6,b--的值为6,则整个表达式的值为++a的值,++a的值为7。请注意前缀++,--和后缀++,--的区别。

37.strcurlist*strucrlist*return(h)

38.类类解析:将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同操作性质的对象的集合,是已经定义了的关于对象的特征、外观和行为的模板。所以类是对象的抽象,它描述了属于该对象类型的所有对象的性质,而一个对象则是其划应类的一个实例。

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

40.yearleap=1leap

41.B[答案]B

[考点]数据结构与算法

[评析]依次从上到下,可得出:

第1层结点数为1;

第2层结点数为2*1=2;

第3层结点数为2*2=4;

第n层结点数为2的n-1次幂

42.A解析:函数f()的作用是形参a为偶数的时候返回0,主函数中首先定义了一个长度为8的一维数组,然后给它赋初值使得s[0]=1、s[1]=3、s[2]=5、s[3]=2、s[4]=4、s[5]=6。其他没有赋值的数组元素将自动赋值为0。for循环中,当s[i]不为偶数的时,将s[i]相加,即当i=3时,s[i]=2为偶数,退出循环,此时d的值为d=s[0]+s[1]+s[2]=1+3+5=9,因此最后输出的d的值为9。

43.B解析:需求分析是软件定义时期的最后一个阶段。可以概括为4个方面:①需求获取;②需求分析;⑧编写需求规格说明书;④需求评审。

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

45.B解析:该题目应该根据循环体第一次和最后一次执行时的输出结果来决定哪一项是正确的。第一次进入循环时,n的值是9,循环体内,先经过n--运算,n的值变为8,所以第一次的输出值是8,由此可以排除选项A)和D)。由循环条件n>6可以知道,最后一次循环开始时,n的值应该为7,所以最后一次执行循环时,输出为6,由此可以排除选项C)。

46.C解析:C语言中规定,标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须是字母或下划线,而且标识符不能是C语言的关键字。

47.C解析:选项A)中typedef的作用是声明一个新的类型名AA代替已有的结构体类型名struetaa,然后用AA定义结构体类型变量td;选项B)直接用结构体类型名structaa定义结构体类型变量td;选项C)中的aa本身就为结构体变量名,所以不能再用它来定义结构体变量,该项错误;选项D)省去了结构体名,直接将td定义为结构体变量,正确。

48.A解析:本题考查用于多分支选择的switch语句,其一般形式为:

switch(表达式)

{

case常量表达式1:语句1;

case常量表达式2:语句2;

case常量表达式n:语句n;

default:语句n+1;

}

其语义是:计算表达式的值,并逐个与其后的常量表达式值进行比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句;如表达式的值与所有case后的常量表达式均不相等时,则执行default后的语句。

49.C解析:在C语言中,以“\\”开头的字符均为转义字符,其中“\\”后可跟1~3位八进制数或在“\\”后跟字母x及1~2位十六进制数,以此来代表一个特定的字符。

50.A

51.D解析:所谓的交换类排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。

52.B解析:本题主要考查的是C语言中的整除、求余以及逻辑值的概念。在C语言中,/号的两边如果都是整数的话,返回的结果也是整数,如果除不净则舍去小数部分。%是求余运算,它的运算对象只能是整型,运算结果是两数相除后所得的余数,当运算量为负数时,结果的符号与被除数相同。因此,执行语句a=d/10%9;后,a=25/10%9=2%9=2。C语言中没有专门的逻辑值,而是用整型值来代替。当整型值作逻辑值使用时,非零即表示“真”,零表示“假”,而逻辑值当整型值使用时,“真”等于1,“假”等于0。因此,执行语句b=a&&(-1);后b=2&&(-1)=“真”&&“真”=“真”=1。所以,4个选项中选项B符合题意。

53.B解析:函数fun的功能是求两个数之和,其形参数据类型为int型,函数的返回值类型是float型。fun((int)fun(a+c,b),a-c)中有两层函数调用,其中内层调用是fun(a+c,b),因a+c+b=2+8+5=15,而返回类型是float型,所以fun(a+c,b)的值为15.0,将该值强制变换为int型后作为外层函数调用的参数,即fun(15,a-c)=15+a-c=15+2-8=9.0。因printf语句的输出格式为'%3.0f',即小数点后0位小数,故程序的输出为9。

54.D解析:本题涉及break语句,重在循环次数的判定。本题的循环由于无出口,只能借助break语句终止。题目要求说明判断i>j的执行次数,只需考查经过i+=k运算如何累计i的值。i值分别是i=2,4,6,8,10,直到i取12时,判断i>j为真,程序输出s的值并结束,共判断6次。

55.B解析:一个函数可以带回—个整型值、字符值、实型值等,但也可以带回指针型数据,即地址。本题的定义中,包括括号和*号,由于()优先级高于*。故它是一个返回整型指针的函数。

56.A

57.A解析:C语言规定,赋值号的右边可以是一个赋值表达式.因此选项C)、选项D)正确:在选项B)中,a++是一个自加1的表达式,a被重新赋值,因此它是一个合法的赋值表达式:选项A)中,a+d是一个算术表达式,虽然最后有一个分号,但这个表达式中没有赋值操作,因此它不是一条赋值语句。

58.A解析:本题中fun函数的形参是两个指向字符型数据的指针,其功能是把b赋给a,然后将a所指存储单元里的变量值加1。在main函数中,p1里存放的是c1的地址,p2里存放的是c2的地址,经函数调用fun(p1,P2)后,p2的值赋给了p1,使p1和p2都指向了c2,而(*a)++又使'a'的值加1变成了'b',所以此时c2的值为'b',而c1的值没变,仍为'A'。程序改变的是p1的地址和c2的值。

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

60.B解析:结构体类型的变量在程序运行期间要作为一个整体占用连续的内存单元。

61.B笛卡儿乘积运算。假设关系R和关系S的元数个数与属性个数分别为m和n。R×S表示R和S的笛卡儿积,R×S={(m+n)个属性的一个元组集合,每个元组的前m个属性值来自R的一个元组,后n个属性值来自S的一个元组的所有组合}。

连接。它是从两个关系的笛卡儿乘积结果中选取属性间满足一定条件的元组,它不能实现题目中给出的条件。

投影。它是从关系中挑选若干属性组成新的关系,它是对关系进行列操作的方法。

选择。它是从关系中找到满足条件的所有元组的操作,即不改变关系表中的属性个数但能减少元组个数的操作,它是对关系进行行操作的方法。

62.A

63.C

64.B

65.D

66.C

67.B花括号可以作为函数体的定界符,也可以作为复合语句的定界符。函数是c程序的基本单位,用户可以命名自定义函数,而库函数名是固定的。c语句以分号结尾,分号是语句的一部分。

68.C

69.C耦合性与内聚性是模块独立与否的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内蒙、低耦合,即减弱模块之间的耦合性而提高模块内的内聚性,这样有利于提高模块的独立性。

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

71.B

72.C

73.A

74.B结构体tt是一个递归定义,类似于链表,

通过成员变量Y链接起来。P=s+1指向s[1]。P一>Y指向8[2],但现在P->Y=s,因此s[2]=s[O],此时8[]={1.0,2.0,1.0},而P在s[1]位置,因此P_>x为2,P=P_>Y,P指向s[2],因此P_>x=1,故打印结果为2,1。答案为B选项。

75.B

76.D本题考查的是文件的综合应用。本题首先以创建方式打开文件”d2.dat”,两次调用fprintf函数把a[O],a[1],a[2],a[3],a[4],a[5]的值写到文件”d2.d8t”中,文件”d2.dat”的内容为:1,2,3<回车>4,5,6。然后把该文件关闭再以只读方式打开,文件位置指针指向文件头,再通过fs-canf函数从中读取两个整数到k和n中,由于格式符之间无间隔,因此输入数据可以用回车隔开,故输入的k的值为123,n的值为456。

77.A

\n当所赋的值不够其列的宽度时,系统在其后自动补0,因此a[0][3]=0,a[1][2]=6,a[2][1]=5,a[3][0]=0,故选择A选项。

\n

78.Csort函数的功能实际上是对数组中奇数位置上的数进行从大到小排序。排序后的结果应该为9,2,7,4,5,6,3,8,1,10。

79.D

80.D

81.(1)错误:intproc(intn)

正确:floatproc(intn)

(2)错误:for(i=2;i<n;i++)

正确:for(i=2;i<=n;i++)

【解析】由主函数中的调用以及函数proc()的返回值可知,函数proc()的返回值类型应为float型数据。因此,“intproc(intn)”应改为“floatproc(intn)”;由题目中所给公式可知,循环中应该包含n的值,因此,“for(i=2;i<n;i++)”应改为“for(i=2;i<=n;i++)”。

82.intfun(char*s)2;{intn=0;3char*p;4:;for(p=s;*p!=,\\0';p丄+)if((*p≥’o’)&&(≤’9’))6n++;7returnn;8}要统计字符串中数字字符的个数,首先应定义变量n,并将其初始化为0,然后遍历字符串,逐个判断字符是否为数字字符,判断条件为该元素的ASCII值在字符o和9的ASCII值之间,若判断条件成立,则使n的值加1,否则,继续判断下一个字符,直到字符串结束。2021-2022年黑龙江省哈尔滨市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.以下有4组用户标识符,其中合法的一组是()。

A.FOr-subCase

B.4dDOSize

C.f2_G3IFabc

D.WORDvoiddefine

2.C语言中,组成数据文件的成分是()。A.A.记录

B.数据行

C.数据块

D.字符(字节)序列

3.用C语言编写的代码程序

A.可立即执行B.是一个源程序C.经过编译即可执行D.经过编译解释即可执行

4.

5.以下选项中与“if(a==l)a=b;elsea++;”语句功能不同的switch语句是()。

A.switch(a){casel:a=b;break;default:a++;}

B.switch(a==l){case0:a=b;break;casel:a++;}

C.switch(a){default:a++;break;casel:a=b;}

D.switch(a==l){casel:a=b;break;case0:a++;}

6.

7.设有定义语句

则以下叙述正确的是().

A.f是指向函数的指针变量,该函数具有_个int类型的形参

B.f是基类型为int的指针变量

C.f是指向int类型一维数组的指针变量

D.f是函数名,该函数的返回值是基类型为int类型的地址

8.定义int*swap()指的是______。

A.—个返回整型值的函数swap()

B.一个返回指向整型值指针的函swap()

C.一个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

9.在一个单链表HL中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行____。

A.q一>next=p一>next;p一>next=q;

B.q一>next=p一>next;p一>next=q;

C.p一>next=q一>next;q=p;

D.p一>next=q一>next;q一>next=p;

10.欧几里得的《几何原本》描述了解最大公约数的算法,针对两个整型a,b(a>b>0),其伪代码如下,请估算该算法的复杂度

A.O(lgb)B.O(a*b)C.O(a*a)D.O(b*b)

11.在循环双链表的p所指的结点之前插入s所指结点的操作是()。A.p->prior->prior

B.p->prior->prior

C.s->prior->next=s

D.s->prior->prior=s

12.设有序表中的元素为(13,18,24,35,47,50,62),则在其中利用二分法查找值为24的元素需要经过()次比较容易

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

13.

14.下列选项中,不能用作标识符的是A._1234_B._1_2C.int_2_D.2_int_

15.在结构化方法中,软件功能分解属于下列软件开发中的阶段是______。

A.详细设计B.需求分析C.总体设计D.编程调试

16.程序运行后的输出结果是()。A.10B.30C.0D.64

17.设有以下函数:voidfun(intn,char*s){…}则下面对函数指针的定义和赋值均正确的是()。

A.void(*pf)();pf=fun;

B.void*pf();pf=fun

C.void*pf();*pf=fun;

D.void(*pf)(int,char);pf=&fun;

18.已知inta=2,b=3;则执行表达式a=a<b后,变量a的值为()。

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

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

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

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

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

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

20.如果树的的结点A有4个兄弟,而且B为A的双亲,则B的度为()。

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

二、2.填空题(20题)21.有以下程序:

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

则在程序下划线处应填入的是【】。

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

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

}

}

23.若运行时给变量x输入12,则以下程序的运行结果是【】;

main(){

intx,y;

scanf(""%d"",&x);

y=x>12?x+10:x-12;

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

}

24.软件是程序、数据和【】的集合。

25.数据结构分为逻辑结构与存储结构,线性链表属于【】。

26.一个模块直接调用的其他模块的模块个数称为______。

27.目前实际存在和使用的广域网基本上都是采用______拓扑结构类型。

有以下程序:

#include<string.h>

structSTU

{intnum;

floatTotalScore;};

voidf(structSTUp)

{structSTUs[2]={{20041,703},{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.0f\n",s[0].num,s[0],TotalScore);

}

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

28.下面程序的输出结果是【】。

structaa

{intx,*y;

}*p;

inta[8]={10,20,30,40,50,60,70,80};

structaab[4]={100,&a[1],200,&a[3],10,&a[5],20,&a[7]};

main()

{p=b;

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

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

}

29.若有定义inta[4][4]={1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},则初始化后,a[1][1]得到的初值是______。

30.用树型结构表示实体类型及实体间联系的数据模型称为【】。

31.语句:x++;++x;x=1/x;执行后都使变量x中的值增1,请写出一条同一功能的赋值语句______。

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

voidfun()

{staticinta;

a+=2;

printf("%d",A);

}

main()

{intcc;

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

printf("\n");

}

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

main()

{

charstrl[]]="Howdoyoudo",*p1=strl;

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

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

}

34.以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。

intfun(intn)

{

intm=0,f=1,i;

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

{

m+=i*f;

f=______;

}

returnm;

}

main()

{printf(“m=%d\n”,______)};

35.当运行以下程序时,输入abcd,程序的输出结果是:()。

insert(charstr[])

{inti;

i=strlen(str);

while(i>0)

{str[2*i]=str[i];str[2*i-1]='*';i--;}

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

}

main()

{charstr[40];

scanf("%s",str);insert(str);

}

36.设inta=5,b=6,表达式(++a==b--)?++a:--b的值是【】。

37.以下函数creat用来建立一个带头结点的单向链表,新产生的结点是插在链表头的

末尾。单向链表的头指针作为函数值返回。请填空。

#include<stdio.h>

structlist

{chardata;

structlist*next;

};

structlist*creat;

{structlist*h,*p,*q;

charch;

h=(【】)malloc(sizeof(structlist));

p=q=h;

ch=getchar();

while(ch!='?')

{p=(【】)mallco(sizeof(structlist));

p->data=ch;

q->next=p;

q=p;

ch=getchar();

}

p->next='\0';

【】;

}

38.在面向对象方法中,()是具有相似性质的对象的集合。

39.在面向对象方法中,允许作用于某个对象上的操作称为【】。

40.下列程序可以判断输入的年份是不是闰年。

#include

main()

{int【】,leap;

scanf("%d",&year);

if(year%4)

leap=0;

elseif(year%lO0)

【】;

elseif(year%400)

leap=0;

else

leap=1;

if(【】)

printf("%d年是闰年",year);

else

printf("%d年不是闰年\n",year);

}

三、1.选择题(20题)41.在一棵二叉树上第5层的结点数最多是______。

A.8B.16C.32D.15

42.有以下程序:intf(inta){returna%2;}main(){ints[8]={1,3,5,2,4,6},i,d=0;for(i=0;f(s[i]);i++)d+=s[i];printf("%d\n",d);}程序运行后的输出结果是()。

A.9B.11C.19D.21

43.软件需求分析阶段的工作,可以分为4个方面:需求获取、需求分析、编写需求规格说明书以及()。

A.阶段性报告B.需求评审C.总结D.都不正确

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

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

45.有如下程序

main()

{intn=9;

while(n>6){n--;printf("%d",n);}}

该程序的输出结果是

A.987B.876C.8765D.9876

46.C语言中的标识符只能由字母、数字和下划线3种字符组成,且第一个字符

A.必须为字母B.必须为下划线C.必须为字母或下划线D.可以是字母,数字和下划线中任一字符

47.以下对结构体类型变量td的定义中,错误的是()。

A.typcdefstructaa{intn;floatm;}AA;AAtd;

B.structaa{intn;floatm;}structaatd;

C.struct{intn;floatm;}aa;structaatd;

D.struct{intn;floatm;}td;

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

main()

{inta,i;a=0;

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

{switch(i)

{case0:

case3:a+=2;

case1:

case2:a+=3;

default:a+=5;}

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

A.31B.13C.10D.20

49.下面语句的输出结果是______。printf("/od\n",strlen("\t\"\065\xff\n"))

A.14B.8C.5D.输出项不合法,无正常输出

50.有以下程序#include<stdio.h>sub1(chara,charB){charc;c=a;a=b;b=c;}sub2(char*a,charB){charc;c=*a;*a=b;b=c;}sub3(char*a,char*B){charc;c=*a;*a=*b;*b=c;}main(){cha,a,b;a='A';b='B';sub3(&a,&b)putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);putchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}程序运行后的输出结果是()

A.BABBABB.ABBBBAC.BABABAD.BAABBA

51.简单的交换排序方法是()。

A.快速排序B.选择排序C.堆排序D.冒泡排序

52.有以下程序main(){inta,b,d=25;a=d/10%9;b=a&&(-1)printf("%d,%d\n",a,b);}程序运行后的输出结果是______。

A.6,1B.2,1C.6,0D.2,0

53.有以下程序:floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序运行后的输出结果是______。

A.编译错误B.9C.21D.9

54.在下述程序中,判断i>j共执行的次数是()。#include<stdio.h>main(){inti=0,j=10,k=2,s=0;for(;;){i+=k;if(i>j){printf("%d",s);break;}s+=i;}}

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

55.定义int*swap()指的是______。

A.一个返回整型值的函数swap()

B.一个返回指向整型值指针的函数swap()

C.一个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

56.设有二维数组A[8][9],其每个元素占2个字节,从首地址400开始,按行优先顺序存放,则元素A[8,5]的存储地址为______。

A.570B.506C.410D.482

57.若a、b、c、d都是int型变量且都已经正确赋初值,则下列不正确的赋值语句是()。

A.a+d;B.a++;C.a=b=c=d=100;D.a=(b=3)+(d=5);

58.有以下程序:#include<stdio.h>voidfun(char*a,char*b){a=b;(*a)++;}main(){charc1='A',c2='a',*p1,*p2;p1=&c1;P2=&c2;fun(p1,p2);printf("%c%c\n",c1,c2);}程序运行后的输出结果是()。

A.AbB.aaC.AaD.Bb

59.结构化程序设计主要强调的是______。

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

60.C语言结构体类型变量在程序运行期间

A.TC环境在内存中仅仅开辟一个存放结构体变量地址的单元

B.所有的成员一直驻留在内存中

C.只有最开始的成员驻留在内存中

D.部分成员驻留在内存中

四、选择题(20题)61.在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是

A.连接B.选择C.投影D.笛卡儿乘积

62.

63.

64.

65.有三个关系R,S和T如下:

其中关系T由关系R和S通过某种操作得到,该操作为()。A.选择B.投影C.交D.并

66.

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

A.C程序中注释部分只能放在程序最后

B.花括号“{“和”}”可以作为函数体的定界符,也可以作为复合语句的定界符

C.构成C程序的基本单位是函数,所有函数名都可以由用户命名

D.分号不是语句的一部分,是C语句之间的分隔符

68.

69.软件设计中衡量模块独立性的度量标准是()。

A.抽象和信息隐蔽B.局部化和封装化C.内聚性和耦合性D.激活机制和控制方法

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

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

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

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

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

71.

72.

73.C语言中,合法的字符型常数是_________。

A.‘A’B.“A”C.65D.A

74.有以下程序:

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

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

75.

76.有以下程序:

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

A.12B.14C.1234D.123456

77.

以下程序的输出结果是()。

main()

{inti,a[4][4]一{{1,3,5),{2,4,6},{3,5,7}};

printf("%(1%d%d%d\n".a[O][3],a[1][2],a[2]

[1],a[3][0];

}

A.0650B.1470C.5430D.输出值不定

78.有以下程序

voidsort(inta[],intn)

{

inti,j,t;

for(i=0;i<n-1;i+=2)

for(j=i+2;j<n;j+=2)

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

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

printf("%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.9,2,7,4,5,6,3,8,1,10D.1,10,3,8,5,6,7,4,9,2,

79.下列哪个不属于DOM元素结点类型?

A.元素结点B.文本结点C.属性结点D.样式结点

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:根据整型形参n,计算如下公式的值。

例如,若n=12,则应输出0.618026。

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

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

试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),其功能是统计s所指字符串中的数字字符个数,并将其作为函数值返回。例如,s所指字符串中的内容是2def35adh253kjsdf7/kj8655x,函数fun()返回值为11注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

参考答案

1.C解析:选项A中for和case为C语言中的保留字,不能作为用户标志符,故A错误。选项B中的4d其开头的第一个为数字,而在C语言中规定,第一个字符必须为字母或者下划线,故B错误;选项D中void为C语言中的保留字,不能作为用户标志符,故D错误。所以,4个选项中选项C符合题意。

2.D解析:C语言中的文件是流式文件。流式文件是一种无结构文件,即整个文件是一串字符流或二进制流。文件的存取以字符或字节为单位。

3.B解析:C语言一种高级语言,C语言源程序经过C语言编译程序编译之后,生成一个后缀为。OBJ的二进制文件(称为目标文件),最后还要由称为“连接程序”(Link)的软件,把此。OBJ文件与C语言提供的各种库函数连接在一起,生成一个后缀.EXE的可执行文件。显然C语言不能立即执行,故选项A错误;根据以上定义,选项C和选项D错误,所以,4个选项中选项B符合题意。

4.A

5.B题中当a的值为l时,关系表达式a==l的值为真,即1,因此程序将跳转到easel执行a++操作,与题干程序刚好相反。

6.A

7.A

8.B解析:—个函数可以带回—个整型值、字符值、实型值等,但也可以带回指针型数据,即地址。本题的定义中,包括括号和*号,由于()优先级高于*。故它是—个返回整型指针的函数。

9.D

10.A

11.D

12.C

13.C

14.D解析:本题考核的知识点是用户的标识符。在C语言中,合法的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或者下划线,如:acd,d_ad、_adf124,_124等都是合法的标识符号.而2asdf、_sd/=都不是合法的标识符.在C语言中大写字母和小写字母被认为是两个不同的字符,如:ACD和acd是两个不同的标识符号。选项D中用下划线作为第一个字符,这是不合法的,故选项D不正确,所以,4个选项中选项D符合题意。

15.C解析:软件系统结构的总体设计包括:基于功能层次结构建立系统、按功能划分成模块的层次结构、确定每个模块的功能、建立与已确定的软件需求的对应关系、确定模块间的调用关系和模块间的接口、评估模块划分的质量等方面。详细设计的任务是:在使用程序设计语言编制程序以前,对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。需求分析是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求,通常包括:功能需求、性能需求、环境需求、可靠性需求、安全保密要求、用户界面需求、资源使用需求、成本消耗需求、开发进度需求等。编程调试的任务是诊断和改正程序中潜在的错误。综上所述。软件功能分解只能发生在总体设计阶段。

16.D[解析]本题目中静态局部变量x,在静态存储区内分配存储单元。在程序整个运行期间都不释放。所以第一次循环s的值为2.第二次循环中,返回的x的值为4.所以s的值为8.第三次循环,返回的x的值为8.所以s的值为64.

17.A函数指针的定义格式为函数类型(*指针变量名)(形参列表);函数名和数组名一样代表了函数代码的首地址,因此在赋值时,直接将函数指针指向函数名就行了。所以选项A正

温馨提示

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

评论

0/150

提交评论