2021-2022年贵州省铜仁地区全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第1页
2021-2022年贵州省铜仁地区全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第2页
2021-2022年贵州省铜仁地区全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第3页
2021-2022年贵州省铜仁地区全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第4页
2021-2022年贵州省铜仁地区全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年贵州省铜仁地区全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.设有下列二叉树:

对此二叉树先序遍历的结果为

A.ABCDEFB.DBEAFCC.ABDECPD.DEBFCA

3.有以下程序:

程序运行后的输出结果是()。A.1B.11C.7D.9

4.若有定义“inta=5,b=7;”,则表达式a%-(b%2)运算后,a的值为()。

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

5.有以下程序

#include<stdio.h>

intf(intx);

main()

{intn=1,m;

m=f(f(f(n)));printf(”%d\n”,m);

}

intf(intx)

{returnx*2;}

程序运行后的输出结果是()。A.1B.2C.4D.8

6.有以下程序

#include<stdio.h>

voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/

{intt,i,j;

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

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

if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}

}

main()

{intc[10]={1,2,3,4,5,6,7,8,9,0},i;

fun(c+4,6);

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

printf("\n");

}

程序的运行结果是

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

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

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

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

7.判定一个顺序栈st(最多元素为MaxSize)为满的条件是()。A.st->top!B.st->top!C.top==-1D.top==MaxSize

8.设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字5为基准进行一趟快速排序的结果为()。

A.2,3,5,8,6B.3,2,5,8,6C.3,2,5,6,8D.2,3,6,5,8

9.对于C语言的函数,下列叙述中正确的是()。

A.函数的定义不能嵌套,但函数调用可以嵌套

B.函数的定义可以嵌套,但函数调用不能嵌套

C.函数的定义和调用都不能嵌套

D.函数的定义和调用都可以嵌套

10.有以下程序#include<stdio.h>structst{intx,y;}data[2]={1,10,2,20};main(){structst*p=data;printf("%d,",p->y);printf("%d\n",(++p)->x);}程序的运行结果是______。A.10,1B.20,1C.10,2D.20,2

11.以下说法错误的是()。

A.C语言中的常量是指在程序运行过程中经常被用到的变量

B.C语言中的常量是指在程序运行过程中其值不能被改变的量

C.C语言中的常量可以用一个符号名来代表

D.C语言中的常量可以用宏来定义

12.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

13.下列叙述中正确的是:()A.C语言程序中,main()函数必须在其它函数之前,函数内可以嵌套定义函数

B.C语言程序中,main()函数的位置没有限制,函数内不可以嵌套定义函数

C.C语言程序中,main()函数必须在其它函数之前,函数内不可以嵌套定义函数

D.C语言程序中,main()函数必须在其它函数之后,函数内可以嵌套定义函数

14.关于C语言中数的表示,以下叙述中正确的是()。

A.只有整型数在允许范围内能精确无误地表示,实型数会有误差

B.只要在允许范围内整型数和实型数都能精确地表示

C.只有实型数在允许范围内能精确无误地表示,整形数会有误差

D.只有用八进制表示的数才不会有误差

15.程序段:intx=12;doub1ey=3.141593;printf("%d%8.6f"x,y);的输出结果是______。A.123.141593B.123.141593C.12,3.141593D.123,1415930

16.若有以下定义和语句

chars1[10]="abcd!",*s2="\n123\\";

printf("%d%d\n",strlen(s1),strlen(s2));

则输出结果是A.A.55B.105C.107D.58

17.下面哪种排序算法是稳定的()

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

18.单链表中,增加一个头结点的目的是为了()。

A.使单链表至少有一个结点B.标识表结点中首结点的位置C.方面运算的实现D.说明单链表是线性表的链式存储

19.软件需求分析一般应确定的是用户对软件的______。

A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求

20.对如下二叉树进行后序遍历的结果为()。

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

二、2.填空题(20题)21.软件定义时期主要包括______和需求分析两个阶段。

22.度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为______。

23.以下函数用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。请填空。

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{inti;

*k=0;

【】

if(s[*k]<s[i])*k=i;

return【】;}

main()

{inta[10]={876,675,896,101,301,401,980,431,451,777},k;

clrscr();

fun(a,10,&k);

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

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

#include<stdio.h>

main()

{chars[20];

scanf("%s",s);

printf("%s",s);

}

运行程序,输入HOWAREYOU。

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

main()

{inti,sum;

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

sum+=i;

primf("%d",sum);

}

26.已知字母A的ASCII码为65。以下程序运行后的输出结果是______。

main()

{chara,b;

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

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

}

27.队列是限定在表的一端进行插入和在另一端进行删除操作的线性表。允许插入的一端称作______。

28.软件危机出现于60年代末,为了解决软件危机,人们提出了【】的原理来设计软件,这就是软件工程诞生的基础。

29.语句“int(*ptr)();”的含义是______是指向函数的指针,该函数返回一个int型数据。

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

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

main()

{chars[]="9876",*p;

for(p=s;p<s+2;p++)printf("%s\n",p);

}

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

charstr[]="ABCD",*p=str;

printf("%d\n",*(p+3));

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

34.下列程序段是从键盘输入的字符中统计小写字母的个数,用换行符结束循环。请填空。

intn=0,c;

c=getchar();

while(c!='\n')

{if(______)

n++;

}

35.以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

请填空。

ginclude"math.h"

doublefun(doublex){return(x*x-2*x+6);}

main()

{doublex,y1,y2;

pfintf("Enterx:");scanf("%lf"&x);

y1=fun([10]);y2=fun([11]);

pin

36.以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。

structst

{charname[20];doublescore;};

main()

{structstex;

pfintf("exsize:%d\n",sizeof(______));}

37.数据流图的类型有【】和事务型。

38.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行人队运算。这种情况称为【】。

39.结构化程序设计方法的主要原则可以概括为自顶向下、逐渐求精、【】和限制使用goto语句。

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

#include<stdio.h>

intfun(intx)

{intp;

if(x==0‖x==1)

return3;

else

p=x-fun(x-2);

returnp;

}

voidmain()

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

三、1.选择题(20题)41.有以下程序main(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,j,k=2;for(i=0;i<3;i++){printf("%d",m[k][i]);}}执行后输出结果是

A.456B.258C.369D.789

42.请读程序片段(字符串内没有空格字符):printf("%d\n",stlen("ATS\n012\1\\”));上面程序片段的输出结果是()

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

43.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和______。A.编码设计B.测试阶段C.运行阶段D.物理设计

44.有以下程序:main(){charstr[]="xyz",*ps=str;while(*ps)ps++;for(ps--;ps-str>=O;ps--)puts(ps);}执行后的输出结果是()。

A.yzxyzB.zyzC.zyzxyzD.xxyxyz

45.下面程序的输出结果是#include<stdio.h>main(){inti=010,j=10;Printf(“%d,%d”,++i,j--);}

A.11,10B.9,10C.010,9D.10,9

46.若已包括头文件<stdio.h>和<string.h>,运行下列程序段时输出结果是()。inti=0;chars1[10]="ABCD",s2[10]="EFG";strcat(s1,s2);while(s2[i++]!='\0')s2[i]=s1[i];puts(s2);

A.ABCB.ABCDEFC.EBCDEFGD.CBD

47.下列选项中不属于结构化程序设计方法的是()。

A.自顶向下B.逐步求精C.模块化D.可复用

48.在说明语句int*f()中,标识符f代表的是______。

A.—个用于指向整型数据的指针变量

B.—个用于指向一维数组的行指针

C.—个用于指向函数的指针变量

D.一个返回值为指针型的函数名

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

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

50.下面程序的功能是输出以下形式的金字塔图案:****************main(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=4-i;j++)printf("");for(j=1;j<=();j++)printf("*");printf("\n");}}在下划线处应填入的是()。

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

51.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为``

A.log2n

B.n2

C.O(n1.5)

D.n(n-1)/2

52.使用白盒测试法时,确定测试数据应该根据()和指定的覆盖标准。

A.程序的内部逻辑B.程序的复杂结构C.使用说明书D.程序的功能

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

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

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

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

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

54.规范化理论中,分解______主要是消除其中多余的数据相关性。

A.关系运算B.内模式C.外模式D.视图

55.以下选项中,能用作数据常量的是()。

A.18B.11C.0.800.5D.25L

56.若有以下程序:#include<stdio.h>voidf(intn);main(){voidf(intn);f(5);}voidf(intn){printf("%d\n",n);}则以下叙述中不正确的是()。

A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f

B.若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用函数f

C.对于以上程序,编译时系统会提示出错信息:对f函数重复说明

D.函数f无返回值,所以可用void将其类型定义为无返回值型

57.以下各选项企图说明一种新的类型名,其中正确的是______。

A.typedefvlint;

B.typedefv2=int

C.typedefintv3;

D.typedefv4:int

58.下列能正确定义且赋初值的语句是()。

A.intn1=n2=10;

B.charc=32;

C.floatf=f+1.1;

D.doublex=12.3E2.5;

59.以下描述中正确的是()。

A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

B.do-while循环由do开始,用while结束,在while(表达式.后面不能写分号

C.在do-while循环体中,是先执行一次循环,再进行判断

D.do-while循环中,根据情况可以省略while

60.下述程序段的输出结果是()intx=10;inty=x++;8printf("%d,'%d,(x++,y),y++);

A.11,10B.11,11C.10,10D.10,11

四、选择题(20题)61.有以下程序

#include<string.h>

structSTU

{intnum;

floatTotalScore;};

voidf(structSTUp)

{structSTUs[2]={{1047,530},{1048,531}};

p.num=s[1].num;p.TotalScore=s[1].TotalScore;

}

main()

{structSTUs[2]={{2041,730},{2042,731}};

f(s[0]);

printf("%d,%3.0f\n",s[0].num,s[0].TotalScore);

}

程序的运行结果是

A.1047,530

B.1048,531

C.2041,730

D.2042,731

62.

63.

64.有以下程序:main{inta=0,b=0;a=10;/*给a赋值b=20;给b赋值*/printf(“a+b=%d\n”,a+b);/*输出计算机结果*/}程序运行后的输出结果是()。A.a+b=10B.a+b=30C.30D.出错

65.软件生命周期是指()。A.软件产品从提出、实现、使用维护到停止使用退役的过程

B.软件从需求分析、设计、实现到测试完成的过程

C.软件的开发过程

D.软件的运行维护过程

66.以下叙述中正确的是

A.C语言比其他语言高级

B.C语言可以不用编译就能被计算机识别执行

C.C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D.C语言出现得最晚,具有其他语言的一切优点

67.

68.以下选项中不能作为c语言合法常量的是()。.

A.0.1e+6B.’cd’.C.”、a”D.’\011

69.

70.有以下程序

程序的运行结果是()。

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

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

C.0,9,8,7,6,5,4,3,2,l,

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

71.

72.若有定义语句:

charS[10]=”1234567\0\0”;则strlen(s)的值是()。

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

73.以下程序执行后sum的值是()。main{inti,sum;for(i=1;i<6;i++)sum+=i:printf("1%d\n",sum):}A.15B.14C.不确定D.0

74.定义如下变量和数组:inti;intx[3][3]={1,2,3,4,5,6,7,8,9};

则语句for(i=0;i<3;i++)printf("%d",x[i][2-i]);的输出结果是()。

A.159B.147C.357D.369

75.已定义以下函数:

fun(int*p)

{return&p;}

该函数的返回值是()。

A.不确定的值

B.形参p中存放的值

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

D.形参p的地址值

76.

77.

78.有以下程序:

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

A.357B.753C.369D.751

79.

80.有以下程序:

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

A.2,4B.1,2C.1,4D.2.3

五、程序改错题(1题)81.下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数proc()的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:使字符串中前部的*号不得多余m个;若多余m个,则删除多余的*号;若少于或等于m个,则什么也不做,字符串中间和尾部的*号不删除。例如,字符串中的内容为****A*BC*DEF*G****,若m的值为2,删除后,字符串中的内容则应当是**A*BC*DEF*G****;若m的值为4,则字符串中的内容仍为****A*BC*DEF*G****。n的值在主函数中输入。在编写函数时,不得使用c语言提供的字符串函数。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.A

2.C解析:二叉树的遍历分为先序,中序、后序三种不同方式.本题要求先序遍历,其遍历顺序应该为:访问根结点->,先序遍历左子树->先序遍历右子树。按照定义,先序遍历序列是ABDECF,故答案为C。

3.D题干中,函数fun的功能是将二维数组p的行下标为1、列下标为1的元素(p[1][1])的值赋给二维地址s指向的*s所指向的存储单元。main函数中定义了整型指针p,动态分配了整型长度的内存空间,调用函数fun将数组元素a[1][1],即9赋给p所指向的空间。本题答案为D选项。

4.A本题考查“%”运算符的使用。运算符“%”是整数除法的余数。本题中表达式a%=(b%2)等价于a=a%(b%2)=5%(7%2)=5%1=0。

5.D解析:本题考查函数返回值作参数,最初n=1,f(n)=f(1)=2,将f(n)的结果代入第二个f(n)中,即f(f(n))=f(2)=4,所以f(f(f(f(n))))=f(4)=8。

6.D解析:在本题中,主函数在调用fun()函数进行排序时,传递的参数是c+4和6,fun()函数实现的功能是将数组c的第5个元素开始的6个元素依次进行从大到小的顺序排列。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。

7.D

8.C

9.A

10.C解析:本题定义了一个包含两个元素(data[0]、data[1])的结构体数组data,其中data[0].x=1;data[0].y=10;data[1].x=2;\u3000data[1].y=20。在主函数中,定义了一个指向结构体数组的结构体指针变量p,使得p指向结构体数组的首地址,所以p->y访问的是第一个鲒构体数组元素的第二个值,即data[0].y;(++p)->x访问的是第二个结构体数组元素的第一个值,即\u3000data[1].x,所以程序输出结果为10,2。

11.AC语言中的常量是指在程序运行过程中其值不能被改变的量,它可以用宏来定义,用一个符号名来代表。选项A错误,选项B、C、D正确。本题答案为A选项。

12.B本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的循环都要使j~0到3,j=4时不符合,所以退出j循环;然后i减1,J仍然要从0~3,j=4时退出J循环直到i变成0,退出i循环。第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4=24次。

13.B每个C程序有且只有一个主函数main,C程序总是从main函数开始执行,main函数后面的一对圆括号不能省略,main函数可以位于程序的任意位置。函数不可以嵌套定义,但函数可以嵌套调用。

14.A当数据类型是实数时,在存储过程中,当小数部分无限长时,会存在小数部分的截断,会存在误差,所以答案选择A。

15.A解析:在printf函数常用的格式说明中,每个格式说明都必须用“%”开头,以—个格式字符作为结束,在此之间可以根据需要插入“宽度说明”、左对齐符号“-”、前导零符号“0”等。本题中用到了d和f,d代表输出符号的十进制整型数,f代表以带小数点的数学形式输出浮点数(单精度和双精度数)。对于float和double类型的实数,可以用“n1.n2”的形式来指定输出宽度(n1和n2分别代表—个整常数),其中n1指定输出数据的宽度(包括小数点),n2指定小数点后小数位的位数,由于输出格式是以紧凑格式输出,因此选项A是正确的。

16.A

17.C

18.C

19.DD。【解析】软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能与性能要求,使用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求和非功能需求。

20.D解析:后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,道先遍历左子树,然后遍历右子树,最后访问根结点:并且遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。

21.可行性研究可行性研究解析:软件生命周期一般包括可行性研究与需求分析、设计、实现、测试、交付使用及维护等,还可以将软件生命周期分为三个阶段:①软件定义阶段:可行性研究和需求分析;②软件开发阶段:设计、实现和测试;③软件运行维护阶段:交付使用和维护。

22.4545解析:对于长度为N的线性表,在最坏情况下(即线性表中元素现在的顺序与目标顺序正好相反),冒泡排序需要经过N/2遍的从前往后的扫描和N/2遍的从后往前的扫描,需要的比较次数为N(N-1)/2。

23.for(i=0;i<t;i++)0for(i=0;i<t;i++)\r\n0解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应使*k的值为数组中的某一下标值,即*k=0。

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

25.无定值无定值解析:for(i=l;i<7;i++)决定了循环次数为6次,每次执行的操作是sum+=i,但由于sum没有初始化,并不知道sum的初值是多少,所以结果无定值。

26.67G67G解析:字符型变量中保存的是某个字符的ASCII码值,是一个整数,因此字符型变量的算术运算和整型变量并无区别。所以。a='A'+'5'-'3'='A'+('5'='3')='A'+2=65+2=67:b=a+'6'='2'='C'+('6'-'2')='C'+4='G'。最后分别按十进制整数和字符形式输出a和b的值为:67G。

27.队尾队尾解析:在队列中,允许插入的一端叫做“队尾”,允许删除的一端叫做“队头”。

28.软件工程学软件工程学

29.ptrptr解析:本题考查函数指针的概念。函数指针的定义格式是:类型标识符(*指针变量名)()。注:“类型标识符”为函数返回值的类型。

30.软件开发

31.98768769876\r\n876解析:指针是一种数据类型,这种数据类型的变量用来存放内存中分配的存储单元的首地址。指针的定义:

类型说明符*指针变量名;

32.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],*(p+3)指的是字符“D”,输出时是以“%d”格式输出的,即输出其相应ASCII码值68。

33.66解析:strlen()函数的作用是计算字符串的长度并作为函数的返回值,这里的长度不包括串尾的结束标志\'\\0\'。

\'\\t\'f是转义字符,代表横向跳若干格:'\\'是转义字符,代表双引号;\'\\023\'只代表一个字符,而不管转义字符后面有几个字符;’仅AB,是以两位十六进制数AB表示的ASCII码字符,只代表一个字符;\'\\n\'是转义字符,代表回车换行。

5个字符常量各代表一个字符,再加上字母C,所以返回的长度是6。

34.c>='a'&&c<='z'c>='a'&&c<='z'解析:小写字母在内存中以ASCII的形式存入,且从a到z依次递增,所以可以直接用c>='a'&&c<='z'判断是不是小写字母;c!='\\n'判断是用换行符结束循环。

35.用x+8代替函数fun(doublex)中形式参数x。用sin(x)代替函数fun(doublex)中形式参数x。

36.

37.变换型典型的数据流类型有两种:变换型和事务型。变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统;在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。

38.上溢上溢解析:入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一(即rear=rear+1),并当rear=m+1时,置rear=1;然后将新元素插入队尾指针指向的位置。当循环队列非空(s=1)且队尾指针等于队头指针时,说明循环队列已满,不能进行人队运算,这种情况称为“上溢”。

39.模块化模块化解析:结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化和限制使用goto语句。自顶向下程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。

逐步求精:对复杂问题,应设计一些子目标作过度,逐步细化。

模块化:一个复杂问题,肯定是由若干精简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。

限制使用goto语句。

40.44解析:本题考查函数的递归调用。在主函数中第1次调用子函数是调用的fun(11),返回11-fun(9):第2次调用子函数是调用的fun(9),返回9-tim(7);第3次调用子函数是调用的fun(7),返回7-fun(5);第4次调用子函数是调用的fun(5),返回5-fun(3);第5次调用子函数是调用的fun(3),返回3-fun(1);第6次调用子函数是调用的fun(1),返回3。总的返回值是:11-(9-(7-(5-(3-3))))=4。

41.C解析:本题考核的知识点是二维数组的定义,赋值及数组元素的引用。变量k的初值为2,循环执行了3次,分别输出m[2][0]、m[2][1]和m[2][2],其值分别为3,6,9。所以,C选项为所选。

42.C

43.DD)【解析】数据库设计目前一段采用生命周期法.即将整个数据库应用系统的开分解成目标独立的若干阶段,它们是:需要分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。在数据库设计中采用上面几个阶段中的前四个阶段,并且重点以数据结构和模型设计为主线。

44.C解析:执行while循环,使指针变量ps指向字符串“xyz”的字符串结束标志,然后执行for循环,先执行ps--,使ps指向字符‘z’,故puts(ps)输出结果为z;再次执行ps--,使ps指向字符‘y’,故puts(ps)输出结果为yz;再次执行ps--,使ps指向字符‘x’,故puts(ps)输出结果为xyz,退出循环。所以,C选项为所选。

45.B解析:程序中i的值用八进制表示(十进制为8),++i是在变量使用前自身先加1,而j--是在变量使用后自身减1。

46.C解析:strcat(s1,s2)把s2连接到s1的后面,s1=ABCDEFG,执行while(s2[i++]!='\\0')后i的值变为1,往后执行s2[i]=s1[i]时是从把s1的第二位给s2的第二位开始,把s1赋给s2。

47.D解析:20世纪70年代以来,提出了许多软件设计方法,主要有①逐步求精:对复杂的问题,应设计一些子目标作过渡,逐步细化;②自顶向下:程序设计时应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化;⑧模块化:一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块,而可复用是面向对象程序设计的一个优点。

48.D解析:返回指针值的函数,其—般定义形式为:类型标识符*函数名(参数表);例如:int*f(x,y);其中,f是函数名,调用它以后能得到—个指向整型数据的指针(地址),x,y是函数f的形参。在f的两侧为别为*运算符和()运算符,而()优先级高于*,因此f先与()结合,显然是函数形式。这个函数前面有一个*,表示此函数是指针型函数(函数值是指针)。前面的int表示返回的指针指向整型变量。

49.C解析:主函数中定义了一个整型变量a,一个整型指针变量b和一个二级指针变量c,并让c指向指针变量b,让指针b指向整形变量a,所以**c为变量a的值,所以,4个选项中选项C符合题意。

50.B解析:通过观察可知图形共4行,主函数中通过一个for循环4次,输出4行。第1行输出3个空格和1个“*”,第2行输出2个空格和3个“*”,第3行输出3个空格和5个“*”,第4行输出7个“*”,主函数中通过第2个循环控制每行的输出空格数,第3个for循环控制输出的“*”的个数,总结规律:每行输出的“*”的个数,总比前一行的多2个,且第1行的个数为1,可以断定每行输出的“*”的个数组成了一个公差为2的等差数列,所以每行输出“*”的个数即该等差数列的通项,故该空格处应该填写2*i-1,所以,4个选项中选项B符合题意。

51.D解析:假设线性表的长度为n,则在最坏情况下,冒泡排序要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。

52.A白盒测试是把测试对象看作是一个打开的盒子,允许测试人员利用程序内部的逻辑结构及相关信息来设计或选择测试用例,对程序所有的逻辑路径进行测试。所以,白盒测试的对象基本上是源程序,以程序的内

【知识拓展】软件测试按照功能划分可以分成白盒(白箱)测试和黑盒(黑箱)测试。其中黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证。

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

54.A解析:数据库规范化的基本思想是逐步消除数据依赖中不合适的部分,根本思想是通过分解关系运算来消除多余的数据相关性。

55.D

56.C解析:f函数没有重复说明,在main函数中是对f函数声明,在main函数外则是对f函数的定义。

57.C解析:C语言中可以使用typedef来重新定义已有的数据类型,相当于为数据类型取个别名。

58.B解析:C语言规定,可以在定义变量的同时给变量赋初值,称为变量初始化。在选项A)中在给n1和n2进行赋初值,但变量02没有定义;在选项C)中定义变量f时,不能在赋值表达式的右边出现变量f自身,所以选项C)错误:在选项D)用指数表达式的常量中,字母E后面的数应该为整数,而不应该为小数形式。因此,选项B)正确。

59.C解析:do-while语句的一般形式为:do循环体语句while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while后必须要有分号作为语句的结束,在do-while循环中,不可以省略while。

60.A

61.C本题中,程序首先定义了一个结构体,该结构体包含一个整型和一个浮点型成员变量。然后定义了一个函数f,该函数无返回类型,函数的形参是已定义的结构体变量。在该函数中,首先定义了一个结构体数组s,并赋了初值,然后试题用结构体数组中各对应成员的值替代形参结构体变量中各成员的值,这里关键的问题还是参数的传递问题,由于结构体成员值的传递方式采用的

温馨提示

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

评论

0/150

提交评论