2021-2022年安徽省安庆市全国计算机等级考试C语言程序设计真题(含答案)_第1页
2021-2022年安徽省安庆市全国计算机等级考试C语言程序设计真题(含答案)_第2页
2021-2022年安徽省安庆市全国计算机等级考试C语言程序设计真题(含答案)_第3页
2021-2022年安徽省安庆市全国计算机等级考试C语言程序设计真题(含答案)_第4页
2021-2022年安徽省安庆市全国计算机等级考试C语言程序设计真题(含答案)_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年安徽省安庆市全国计算机等级考试C语言程序设计真题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有以下程序:#includeintfun(intx,inty){if(x!=y)return(x+y)/2);elsereturn(x);}Main(){Inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c));}A.6B.3C.8D.12

2.下述函数功能是______。intfun(char*x){char*y=x;while(*y++);returny-x-1;}

A.求字符串的长度B.求字符串存放的位置C.比较两个字符串的大小D.将字符串x连接到字符串y后面

3.面向对象方法中,继承是指()。

A.一组对象所具有的相似性质B.一个对象具有另一个对象的性质C.各对象之间的共同性质D.类之间共享属性和操作的机制

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

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

5.有下列程序:main{chars[]="abcde";s+=2:printf("%d\n",s[0]);}执行后的结果是()。A.输出字符a的ASCII码B.输出字符c的ASCII码C.输出字符cD.程序出错

6.线性结构是数据元素之间存在一种()。

A.一对多关系B.多对多关系C.多对一关系D.一对一关系

7.下述关于数据库系统的叙中正确的是______。

A.数据库系统减少了数据冗余

B.数据库系统避免了一切冗余

C.数据库系统中数据的一致性是指数据类型的一致

D.数据库系统比文件系统能管理更多的数据

8.

9.设有条件表达式:(EXP)?i++:j--,则以下表达式中与(E)(P)完全等价的是A.(EXP==0)B.(EXP!=0)C.(EXP=-1)D.(EXP!=1)

10.若有定义语句:intX=10;,则表达式x-=x+X的值为A.-20B.-10C.0D.10

11.以下说法正确的是()。

A.函数可以返回另一个函数的整个函数体

B.函数返回值只能是基本数据类型的数值或指针

C.函数返回值可以是一个指向函数的指针

D.函数返回值可以是一个数组,同时返回多个值

12.在下列给出的表达式中,与while(E)中的(E)不等价的表达式是()。A.(!E==0)B.(E>0||E<0)C.(E==0)D.(E!=0)

13.

14.

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

16.顺序查找不论在顺序线性表中还是在链式线性表中的时间复杂度为()。

A.O(n)B.O(n^2)C.O(n^1/2)D.O(1og2n)

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

A.C程序中的#include和#define行均不是C语句

B.除逗号运算符外,赋值运算符的优先级最低

C.C程序中,j++;是赋值语句

D.C程序中,+、-、*、/、%是算术运算符,可用于整型和实型数的运算

18.常采用的两种存储结构是()。

A.顺序存储结构和链式存储结构B.散列方法和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构

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

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

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

A.算术运算符中不包含“=”运算符

B.模运算符“%”是c语言基本的算术运算符

C.算术运算符中只有“*”、“/”优先级高于关系运算符

D.自加和自减运算符只能用于变量,而不能用于常量或表达式

二、2.填空题(20题)21.以下程序的运行结果是【】。

#include<stdio.h>

main()

{FILE*fp;inta[10]={1,2,3,0,0},i;

fp=fopen("d2.dat","wb");

fwtite(a,sizeof(int),5,fp);

fwrite(a,sizeof(int),5,fp);

fclose(fp);

fp=fopen("d2.dat","rb");

fread(a,sizeof(int),10,fp);

fclose(fp);

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

}

22.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。

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

main()

{inti,n[]=10,0,0,0,0};

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

{n[i]=n[i-1]*2+1;

printf("%d",n[i]);

}

24.栈和队列通常采用的存储结构是【】。

25.对于一棵具有n个结点的树,则该树中所有结点的度之和为【】。

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\N,*p,*q))

}

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

main()

{inti,m=0,n=0,k=0;

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

switch(i/10)

{case0:m++;n++;break;

case10:n++;break;

default:k++;n++;

}

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

}

28.以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。

#defineN4

voidrotate(inta[][N],intb[][N])

{inti,j;

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

{b[i][N-1]=______;______=a[N-1][i];}

}

29.不改变关系表中的属性个数但能减少元组个数的是()。

30.阅读下列程序,则程序的输出结果为【】。

#include"stdio.h"

structty

{intdata;

charc;};

main()

{structtya={30,'x'};

fun(a);

printf("%d%c",a.data,a.c);}

fun(structtyb)

{b.data=20;

b.c='y';}

31.数据模型按不同的应用层次分为三种类型,它们是______数据模型、逻辑数据模型和物理数据模型。

32.在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中______的作用是将测试数据传送给被测试的模块,并品示被测试模块所产生的结果。

33.在面向对象方法中,信息隐蔽是通过对象的______性来实现的。

34.以下程序中函数huiwen的功能是检查一个宁符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:adgda。请填空______。

#include<string.h>

chat*huiwen(chat*str)

{char*p1,*p2;inti,t=0;

p1=str;p2=【】;

for(i=0;i<=strlen(str)/2;i++)

if(*p1++!=*p2--){t=1;break;}

if(!t或t!=0)return("yes!");

elsereturn("no!");

}

main()

{charstr[50];

printf("Input:");scanf("%s",str);

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

}

35.以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。

main()

{floatx[1000],sum=0,ave,a;

intn=0,i;

printf("Entermark:\n");scanf("%f",&a);

while(a>=0.0&&n<1000)

{sum+【】;x[n]=【】;

n++;scanf("%f",&a);

}

ave=【】;

printf("Output:\n");

printf('ave=%f\n",ave);

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

if(【】)printf("%t\n",x[i]);

}

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

structNODE

{intk;

structNODE*link;

};

main()

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

inti=0;

while(p!=q)

{p->k-++i;p++;

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

}

q->k=i;

for(i-0;i<5;i++)

printf("%d",m[i].k);

printf("\n");

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

main()

{intX==1,y=0,a=0,b=0;

switch(x)

{case1:switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

}

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

}

38.下列程序的输出结果是16.00,请填空:

main()

{

inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

39.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。

40.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

三、1.选择题(20题)41.关系表中的每一横行称为一个()。A.元组B.字段C.属性D.码

42.算法的时间复杂度是指______。

A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数

43.以下能正确定义数组并正确赋初值的语句是______。

A.intN=5,b[N=[N];

B.inta[1][2]={{1},{3}};

C.intc[2][]={{1,2},{3,4}};

D.intd[3][2]={{1,2},{34}};

44.以下关于函数的叙述中正确的是______。A.每个函数都可以被其他函数调用(包括main函数)

B.每个函数都可以被单独编译

C.每个函数都可以单独运行

D.在一个函数内部可以定义另一个函数

45.标有/$$$/的语句的执行次数是______。inty,i;for(i=0;i<20;i++){if(i%2==0)continue;y+=i;/$$$/;}

A.20B.19C.10D.9

46.以下程序段的输出结果是______。main(){chars1[10],s2[10],s3[10];scanf("%s",s1);gets(s2);gets(s3);puts(s1);puts(s2);puts(s3);}输入数据如下:(此处<CR>代表回车符)aaa<CR>bbb<CR>

A.aaabbbB.aaabbbC.aaa\0bbb\0D.aaabbb

47.设栈S初始状态为空。元素a、b、c、d、e、f依次通过栈S,若出栈的顺序为c、f、e、d、b、a,则栈S的容量至少应该为()。

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

48.以下程序的运行结果为______。main(){inti,f1,f2;f1=f2=1;for(i=0;i<4;i++){printf("%d%d",f1,f2);f1+=f2;f2+=f1;}}

A.1123581321

B.1122551010

C.1258981321

D.0112451521

49.设有定义:inta=2,b=3,c=4;,则以下选项中值为0的表达式是

A.(!a==1)&&(!b==0)

B.(a<b)&&!c‖1

C.a&&b

D.all(b+b)&&(c-a)

50.有以下程序voidsum(inta[]){a[0]-a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);printf(“%d\n”,a[2]);}程序运行后的输出结果是A.6B.7C.5D.8

51.软件开发离不开系统环境资源的支持,其中必要的测试数据属于A.硬件资源B.通信资源C.支持软件D.辅助资源

52.以下叙述中正确的是______。

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

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

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

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

53.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。A.调用语句B.命令C.口令D.消息

54.算法的空间复杂度是指()。

A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间

55.以下函数值的类型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不确定C.voidD.float

56.有以下程序:main(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)printf("%s\n",p);}程序运行后的输出结果是()。

A.ABCDBCDCDDB.ABCDC.BCDD.BCDCDD

57.下列选项中不会引起二义性的宏定义是()。

A.#defineS(x)x*x

B.#defineS(x)(x)*(x)

C.#defineS(x)(x*x)

D.#defineS(x)((x)*(x))

58.下列程序的输出结果是______。inti=010,j=10;printf("%d,%d\n",++i,j--);

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

59.下列叙述中,不属于测试的特征的是

A.测试的挑剔性B.完全测试的不可能性C.测试的可靠性D.测试的经济性

60.以下能正确定义一维数组的选项是______。

A.inta[5]={0,1,2,3,4,5);

B.chara[]={0,1,2,3,4,5);

C.chara={'A','B','C'};

D.inta[5]="0123";

四、选择题(20题)61.以下关于字符串的叙述中正确的是()。

A.空串比空格打头的字符串小

B.两个字符串中的字符个数相同时才能进行字符串大小的比较

C.可以用关系运算符对字符串的大小进行比较

D.C语言中有字符串类型的常量和变量

62.数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()。

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

63.下列选项中,不是一个算法的基本特征的是()。

A.完整性B.可行性C.有穷性D.拥有足够的情报

64.有以下程序

#include<stdio.h>

voidfun(intx)

{if(x/2>1)fun(x/2);

printf("%d",x);

}

main

{fun(7);printf("\n");}

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

A.137B.731C.73D.37

65.

66.

67.

68.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和()。

A.可重用性差B.安全性差C.非持久性D.冗余性

69.有以下程序段

main()

{inta=5,*b,**c;

c=&b;b=&a;

……

}

程序在执行了c=&b;b=&a;语句后,表达式:**c的值是()

A.变量a的地址

B.变量b中的值

C.变量a中的值

D.变量b的地址

70.以下四个程序中。完全正确的县()

71.

若输入“abcdef”“abdef”,下述程序的输出结果为()。

#include<stdio.h>

#include<string.h>

main

{intn;

chars1[20],s2[20],*p1,*p2;

scanf("%s",s1);

scanf("%S",s2);

p1=s1;

p2=s2;

n=strcmp(p1,p2);

printf("Vood\n",n);

}

A.-1B.0C."abcdef"D."abdef"

72.

73.对字符数组s赋值,不合法的一个是()。

A.chars[]="Beijing"

B.chars[20]={"Beijing"}

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

D.chars[20]={’B,’e’,’i’,’j’,’i’,’n’,’g’}

74.若有定义语句:doublea,*P=&a;以下叙述中错误的是()。

A.定义语句中的*号是-个间址运算符

B.定义语句中的木号是-个说明符

C.定义语句中的P只能存放double类型变量的地址

D.定义语句中,P=&a把变量a的地址作为初值赋给指针变量P

75.

76.有以下程序

#include<stdio.h>

voidfun(char**p)

{++p;printf("%s",*p);}

main

{char*a[]={"Morning","Afternoon","Evening","Night");

fun(a);

}

程序的运行结果是()。A.A.AfternoonB.fternoonC.MorningD.orning

77.以下关于C语言的叙述中,不正确的是

A.C语言中的注释可以夹在变量名或关键字的中间

B.C语言中使用变量必须是先定义后使用

C.C语言表达式运算符两侧的运算数类型必须一致

D.C语言的数值常量中夹带空格不影响常量值的正确表示

78.有以下程序:

程序的运行结果是()。

A.1234B.5678C.9101112D.1111

79.

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:将m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt所指字符串中,例如,把2个字符串abc、CD串联起来,结果是abcCD。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写函数proc,该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。

例如,若二维数组中的数据为

13233343

14243444

15253545

则一维数组中的内容应该是132333431424344415253545。

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

请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。

试题程序:

#include<stdio.h>

voidproc(int(*s)[103,int*b,int*n,intrain.intnn)

{}

voidmain

{

intarr[10][10]={{33,33,33,33),{44,44,44,44},

{55,55,55,55}),i,j;

inta[l00]={o),n=o;

printf("Thematrix:\n");

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

{

for(j=0;j<4;j++)

printf("%3d",arr[i][j]):

printf("\n");

}

proc(arr,a,&n,3,4):

printf("TheAarray:\n");

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

printf("%3d",a[i]):

printf("\n\n");

}

参考答案

1.A本题中第一次调用为fun(8,fun(5,6)),因为fun(5,6)返回值为5,所以第二次调用为fun(8,5)=6。所以选择A)。

2.A解析:在函数体内定义一字符型指针并指向形参,然后遍历其中各字符直到NULL,最后返回字符串首尾地址的差值,即字符串的长度。

3.D继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。

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

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

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

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

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

5.D因为字符数组s[]中的数组名s表示的是一个地址常量。所以语句“s+=2;”不能将指针在当前位置的基础上再向后移动两位。因而程序编译时出错。

6.D

7.A解析:由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。数据的共享自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值,而数据的不一致性指的是同一个数据在系统的不同拷贝处有不同的值。

8.A

\r\n

9.B解析:在C语言中,逻辑表达式的结果只有两种情况“tree”和“false”。如果要把一个逻辑值看成一个整数的话,true等于1;false等于0。如果要把一个整数看成一个逻辑值的话,非0等于true:0等于false。由此可见,如果EXP表达式的结果为0的话;(EXP)为假:(EXP==0)为真;(EXP!=O)为假;(EXP==1)为假;(EXP!=1)为真。如果EXP表达式的结果为非0的话:(EXP)为真:(EXP=0)为假;(EXP!=0)为真;(EXP=1)结果不定;(EXP!=1)结果不定。综上所述,只有(EXP!=0)完全等价于表达式(EXP)。故应该选择B。

10.B解析:x-=x+x可化为:x=x-(x+x),由于x初始值为10,所以计算后,x=10-20=-10,因此选B)。

11.C函数的返回值是通过return语句返回的,返回值是一个表达式,不限于基本数据类型或指针,也可以是结构体类型等,但不能是数组,选项A、B、D错误;函数的返回值可以是一个指向函数的指针,选项C正确。故本题答案为C选项。

12.B在while(E)中,表达式E可以是C语言中任意合法的条件表达式,但不能为空,由它来控制循环体是否执行。在选项8中表达式E>0||E<0是一个逻辑表达式。

13.A

14.A

15.D

16.A

17.D解析:“%”是求余运算符,其两侧的数值只能为整型,不能用于实型数据的运算。

18.AA。【解析】线性表的存储通常分为两种存储结构:顺序存储结构和链式存储结构。

\n

19.A解析:数据流图包括四个方面,即加工(输入数据经加工变换产生输出)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、源和潭(表示系统和环境的接口,属系统之外的实体),不包括选项中的控制流。

20.C

21.12300123001,2,3,0,0,1,2,3,0,0,解析:本题考查文件读写函数fread和fwrite的用法。fwrite函数将数组a的前5个元素输出到文件fp中两次,共10个字节,再调用fread函数从文件fp中读取这10个字节的数据到数组a中,此时数组a的内容就变为{1,2,3,0,0,1,2,3,0,0},最后的输出结果为'1,2,3,0,0,1,2,3,0,0,'。

22.完善性软件维护活动包括以下几类:改正性维护,适应性维护、完善性维护和预防性维护,完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。

23.1371513715解析:本题中,定义了一个整型数组n并初始化,在for循环语句中,再对数组中各元素重新赋值。循环执行第一次时,n[1]=n[0]*2+1=0+1=1,printf函数输出1,然后i的值加1,比较i<=4成立,继续执行循环体语句,相应输出3、7、15,直至i<=4不成立,退出循环。所以最后输出为1、3、7、15。

24.链式存储和顺序存储链式存储和顺序存储

25.n-1

26.3535解析:函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,形参指针变量a和b分别指向i和j,在swap(int*a,int*b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为35。

27.132132解析:本题for循环语句的执行过程为:

第一次循环:i=9,9/10=0,执行m++、n++得m=1、n=1、k=0;

第二次循环:i=10,10/10=1,执行k++、n++得m=1、n=2、k=1;

第三次循环:i=11,11/10=1,执行k++、n++得m=1、n=3、k=2;

即执行完for循环后m=1、n=3、k=2。

28.a[0][i]b[i][0]a[0][i]\r\nb[i][0]解析:因为数组a[N][N]的第0行表示为a[0][n](n=0~3),而数组b[N][N]的最后一列表示为b[n][N-1)(n=0~3),所以前一空应该填a[0][i]。又因为数组a[N][N]的最后一行表示为a[N-1)][n](n=0~3),而数组b[N][N]的第0列表示为b[n][0](n=0~3),所以后一空应该填b[i][0]。

29.选择选择解析:关系数据库的专门关系运算包括选择、投影和连接3种,其中选择不改变关系表中的属性个数但能减少元组个数。

30.30x30x解析:本题的参数传递属于值传递,所以函数内不能改变调用函数中的数据。

31.概念概念

32.驱动模块驱动模块解析:由于模块不是一个独立的程序;不能单独运行,因此,在进行模块测试时,还应为每个被测试的模块另外设计两类模块:驱动模块和承接模块。其中驱动模块的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果;承接模块的作用是模拟被测试模块的下层模块。通常,承接模块有多个。

33.封装封装

34.str+strlen(str)-1str+strlen(str)-1解析:先从main函数开始看,它先读入字符串,接下来肯定是要判断这个字符串是否是回文,冉看huiwen函数,它的主要思想是用p1指向字符串的首地址,p2指向字符串的尾地址(不包括结束符‘/0‘),将p1左移,p2右移,直到这两个指针相遇,如果在移动过程中发现p1!=p2,则该字符串不是回文,否则其是同文。因此。在空中填str+strlen(str)-1。

35.=aasum/nx[i]<ave=a\r\na\r\nsum/n\r\nx[i]<ave解析:sum是用来存放学生成绩总和的,a是输入的成绩,ave存放平均成绩,n既是循环变量,又表示学生人数,x[n]保存第n个学生的成绩。sum用来累加每个同学的成绩,因此有sum+=a;把新输入的学生成绩保存在数组中,因此有x[n]=a;ave是所有同学的平均成绩,因此有ave=sum/n;逐个把学生成绩和平均成绩比较,因此有if(x[i]<ave)。

36.1343113431解析:本题看似考查链表的知识,其实只是考查了结构体数组。程序首先定义了一个结构体NODE,在主函数中声明了一个该结构体的数组m[5]和两个结构体指针p和q,并分别初始化p指向m(指向数组的第一个元素);q指向m+4(指向数组的最后一个元素)。接下来定义并初始化一个整型变量i为0。然后用一个while循环。在p和q不相等的时候执行循环体:让p所指结构体的成员k等于++i的值,然后让p指向下一个结构体;让q所指结构体的成员k等于i++的值,然后让q指向前一个结构体。i从0开始交替调用++i和i++,两个表达式的值依次分别为1和1、3和3……。所以当p叫循环结束时,实际循环了两次,p和q都指向m数组的中间位置m[2],i自增了4次,所以q->k=i;就是让m[2]k=4。所以程序最后输出为:13431。

37.2121解析:外层switch语句后面括号里的x的值为1,所以执行从case1:后面的语句开始执行,而case1:后面语句也为switch语句,这个switch语句后面括号里的y的值为0,所以从该switch语句里的case0:开始执行即执行a++,这时a的值变为1,执行完毕,遇到break语句,退出内层switch语句,又回到外层switch语句,继续执行case1:下面的语句即case2:执行完毕后,a自加1变为2,b自加1变1。所以最后输出的a和b的值为21。

解析:本题,已知结果z=16.00,即16.0=a/2+b*x/y+1/2,分别把a、b,代入,得到16.0=9/2+2*x/1.1+1/2。因为a=9,a是整型,所以9/2的值在没有进行类型转换时,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。

39.数据存储数据存储

40.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻两个字符进行比较,如果当前字符小于下一个字符;则通过中间变量temp将字符两两交换,所以第一空应填:str[i],第二空应填:str[i+1]。最终打印输出得到的字符串str,所以第三空应填;'%s',str。

41.A解析:关系表中,每一行称为一个元组,对应表中的一条记录;每一列称为表中的一个属性,对应表中的一个字段;在二维表中凡能惟一标识元组的最小属性集称为该表的键或码。

42.C解析:算法的时间复杂度实际上就是执行算法程序所需要的计算工作量。为了客观地反映算法性能,在度量算法的时间复杂度时,应该与编写算法程序所使用的程序设计语言、执行算法程序时所使用的计算的工具以及程序员的水平无关。选项A错误,因为同一算法程序在运行速度不同的计算机上运行时,其计算时间是不同的。选项B错误,因为算法所编写的程序长度往往与程序设计语言以及程序员的水平有关,同一个算法,用不同的程序设计语言或者不同的程序员所编写出的程序其长度可能会大不相同。选项D错误,因为根据一个算法所编制出的程序之中,其指令条数往往与程序设计语言以及程序员的水平有关,不能用算法程序中的指令条数来度量算法的时间复杂度。所以,本题正确答案为C。

43.D解析:本题考查二维数组的定义。不能对数组进行动态定义,选项A错误;选项C省略第二维的长度;选项B中初值的行数超过数组第一维的长度。

44.B解析:本题考查函数的一些概念.main()函数是一个程序的主函数,它由系统调用,所以选项A不正确。一个C语言源程序文件可以只包含一个函数,每个源文件都可以被单独编译成。obj文件,最后链接成可执行文件。因此每个函数都可以被单独编译,选项B正确。一个C程序必须从主函数main()开始运行,其他函数只能是直接或间接被main()函数调用才能得以运行,因此选项C错误。C语言不支持函数的嵌套定义,所有函数只能是全局函数,所以选项D错误。故应该选择B。

45.C解析:程序中标有/$$$/的语句y+=i在for循环中,由于该语句前面的条件语句使循环变量i在对2求余为0时就结束本次循环,直接跳过标有/$$$/的语句,因此该语句执行了10次。

46.B解析:scanf是标准输入函数,在输入字符串aaa时,实际的内容为“aaa\\0”,“\\0”是由系统自动加入的:gets的功能是从终端读入一行字符,即一直读到换行符为止,并由系统自动以“/0”代替换行符。

47.B解析:根据题中给定的条件,可做如下模拟操作:

①元素a、b、c进栈,栈中有3个元素,分别为a、b、c;

②元素c出栈后,元素d、e、f进栈,栈中有5个元素,分别为a、b、d、e、f;

③元素f、e、d、a、b出栈,栈为空。可以看出,进栈的顺序为a、b、c、d、e、f,出栈的顺序为c、f、e、d、b、a,满足题中所提出的要求。

在每一次进栈操作后,栈中最多有3个元素,因此,为了顺利完成这些操作,栈的容量应至少为5。本题答案为B。

48.A

49.A解析:计算逻辑表达式要注意的问题有三个:一、3个逻辑表达式的优先级从高到低依次是!(逻辑非)、&&(逻辑与)、‖(逻辑或);二、运算符&&或‖的左边运算分量分别为“假”或“真”的时候已经能够得出整个表达式的值,故右边运算分量将被“短路”,即忽略右边的表达式.三、逻辑值能够自动转换为整数值:“真”=1、“假’=0;整数值也能自动转换为逻辑值:0=“假”,非0=“真”。选项A中(!a=1)&&(!b==0)→(12==1)&&(!b==0)→(0==1)&&(!b==0)→0&&(!b==0)→0(&&右边表达式(!b==0)被“短路”);选项B中(a<b)&&!c‖1→(2<3)&&!4‖1→1&&0‖→0‖→1;选项C中a&&b→2&&3→1选项Da‖(b+b)&&(c-a)→2‖(b+b)&&(c,a)→1(‖右边表达式(b+b)&&(c-a)被“短路”)。所以本题选A。

50.A本题考查的是数组和函数。sum()函数接收一个int型数组作参数,也可以把它看作是一个int型指针,语句a[0]=a[*1)+a(比的意思就是将参数指针指向内容的前一个元素和后一个元素的值相加放到指针所指的位置.因此,主函数中调用sum(&a[2]);的意思就是让a[2]=a[1]+a[3];,所以最后输出的结果是6。应该选择A。

51.D软件开发离不开系统环境资源的支持,其中主要的资源有硬件资源、通信资源、辅助资源等。(1)硬件资源是指组成计算机及相关应用所需要的硬件,它是软件开发必不可少的资源,因为无论什么样的软件工具都需要在硬件上完成任务,它是其他资源的基础资源。(2)通信资源是指为软件开发提供通信支撑的资源,它与测试数据无关。(3)支持软件是指为软件开发提供操作平台的软件,如常用的面向对象开发的Rose软件,它主要是软件开发的工具。通过对上述分析的总结,可以知道本题的正确答案选D。

52.C解析:计算机语言分为低级语言、汇编语言和高级语言,C语言属于高级语言,但并不是说C语言比其他语言高级,所以选项A错误;除了低级语言外,其他各种语言都必须编译成能被计算机识别的二进制数才能执行,选项B错误;C语言出现在1972年到1973年间,并不是出现最晚的语言,所以选项D也是错误的。

53.D解析:面向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这样的机制称为消息。消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。

54.D【解析】算法的空间复杂度是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。如果额外空间量相对于问题规模来说是常数,则称该算法是原地工作的。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。

55.A解析:函数定义时如果数据类型默认,则默认为int。函数中如果有“retum(表达式):”语句,表达式的类型可能与函数的类型不一致,但它并不能改变函数的类型,实际情况是把表达式转换为函数值的类型作为返回值,因此本题的函数值类型是int。

56.D解析:本题中首先定义一个字符数组s,并将字符串'ABCD'存到数组s中,定义了一个字符指针变量p,在接下来for循环中,循环体共执行了三次,第一次p指向s[1],所以此时输出的p所指字符串的值为BCD,第二次循环p指向s[2],此时输出p所指的字符串的值为CD,第三次循环p指向s[3],此时输出的p所指的字符串的值为D。所以,4个选项中选项D符合题意。

57.D本题考查参数的宏替换。为避免二义性有些参数表达式必须加括号,否则在实参表达式替换时,会出现错误。例如x为(m+n)时替换A:m+n*m+n,所以选项D最符合条件。

58.B

59.C解析:软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。它有3个方面的重要特征,即测试的挑剔性、完全测试的不可能性及测试的经济性。其中没有测试的可靠性这一说法。注意:软件测试与软件调试的概念,以及相应的方法。

60.B解析:C语言一维数组的定义有两种方式:一是指定数组长度,如选项A“inta[5]={0,1,2,3,4,5};”,但此定义的赋初值个数为6,多于数组长度,是错误的。因为给数组赋初值,初值个数只能小于或等于数组长度。二是不指定数组长度,由赋初值的初值个数决定数组的长度,如选项B的“chara[]={0,1,2,3,4,5};”,初值个数为6,因此数组长度为6。所以能正确定义一维数组。选项C的定义中a是一个字符变量,不能正确定义一维数组。选项D“inta[5]=“0123”;”给int型数组赋字符串初值,显然是错误的。

61.A字符串比较大小是以第l个不相同字符的大小为标准的,跟长度没有关系,B选项不正确;字符串比较大小除了使用库函数s协emp()以外,就只能靠自己写代码来实现了。而不能通过关系运算符来比较大小。因为字符串在表达式中相当于constchar+,即常字符指针,代表的是字符串的首地址,关系运算符会将两个字符串的首地址值比较大小,这是毫无意义的。c选项不正确。C语言中只有字符串常量而没有字符串变量,D选项描述不正确;空串的长度为0,而以空格打头的字符串的长度至少为l,因此A选项是正确的。

62.B\n数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)等。本题答案为B)。

\n

63.A解析:作为一个算法,一般应该具有下列4个特征:(1)可行性,即考虑到实际的条件能够达到一个满意的结果;(2)确定性,算法中的每一个步骤都必须是有明确定义的,(3)有穷性,一个算法必须在有限的时间内做完;(4)拥有足够的情报。

64.D本程序主要考查递归函数。fun(7),首先将参数代入函数,因为(7/2)>1,所以执行f(3),依此类推直到f(1.5

温馨提示

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

评论

0/150

提交评论