就业数据资源平台
当前位置:首页 > C语言程序设计
2013计算机等级考试二级C语言试题及答案7

请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。


(1)软件定义时期主要包括【1】和需求分析两个阶段。


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


(3)数据的逻辑结构有线性结构和【3】两大类。


(4)某二叉树中度为2的结点有n个,则该二叉树中有【4】个叶子结点。


(5)在ER图中,矩形表示  【5】。


(6)阅读下面程序,则执行后的输出结果是【6】。


#include "stdio.h"


main()


{  int x,y,z;


x=1;y=2;z=3;


if(x>y)if(x>z)printf("%d",x);


else printf("%d",y);


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


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


main()


{ int y=9;


  for(; y>0; y--)


  if (y%3==0)


  {printf("%d", --y); continue;} }


(8)有以下程序段,且变量已正确定义和赋值


for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));


printf("s=%f\n\n",s);


请填空,使下面程序段的功能与之完全相同


s=1.0;k=1;


while(  【8】  ){s=s+1.0/(k*(k+1));  【9】  ;}


printf("s=%f\n\n",s);


(9)设有以下定义和语句,则*(*(p+2)+1)的值为【10】。


int a[3][2]={10, 20, 30, 40, 50, 60}, (*p)[2];


p=a;


(10)以下程序的输出结果是  【11】  。


#include  <stdio.h>


main()


{ int  i;


for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);


printf("\n");


}


(11)以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。


#include  <stdio.h>


void f(int x[],int    n)


{ int p0,p1,i,j,t,m;


i=j=x[0];    p0=p1=0;


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


{ if(x[m]>i)    {i=x[m];p0=m;}


else  if(x[m]<j)    {j=x[m];p1=m;}


}


t=x[p0];x[p0]=x[n-1];x[n-1]=t;


t=x[p1];x[p1]=  【12】  ;  【13】  =t;


}


main()


{ int  a[10],u;


for(u=0;u<10;u++)  scanf("%d",&a[u]);


f(a,10);


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


printf("\n");


}


(12)mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。


int mystrlen(char *str)


{ int I;


  for(I=0;  【14】  != '\n';I++);


  return(I); }


(13)阅读下列程序,则程序的输出结果为【15】。


#include "stdio.h"


struct ty


{  int data;


char c; };


main()


{    struct ty a={30,′x′};


fun(a);


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


fun(struct ty b)


{   b.data=20;

b.c=′y′; }a

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


(2)【2】完善性【解析】软件维护活动包括以下几类:改正性维护、适应性维护、完善性维护和预防性维护。改正性维护是指在软件交付使用后,为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程;适应性维护是指为了使软件适应变化,而去修改软件的过程;完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再次开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性;预防性维护是为了提高软件的可维护性、可靠性等,为以后的进一步改进软件打下良好基础。


(3)【3】非线性结构【解析】数据的逻辑结构有线性结构和非线性结构两大类。


(4)【4】 n+1    【解析】在任意一棵二叉树中,度为O多结点(即叶子结点)总是比度为2多结点多一个。


(5)【5】实体【解析】在E-R图中用矩形表示实体;椭圆形表示属性;菱形表示联系。


(6)【6】 3    【解析】 C语言的语法规定:else子句总是与前面最近的不带else的if相结合。因为x不大于y,所以执行printf("%d\n",z);语句。


(7)【7】 852    【解析】循环前,变量y的值为9,其中,循环语句在y大于0情况下循环,每次循环后y的值都减1。循环体是当y能被3整除时输出表达式--y,输出的是减1后的y值。这样,第一次循环因y为9,能被3整除,输出8,y也变成8。又经两次循环,y的值变为6,又让y减1变成5,并输出5;又经两次循环,y的值变成3,让y减1变成2,输出2;再经两次循环后,y的值变成0,结束循环,所以程序输出852。


(8)【8】 k<=n 【9】 k++    【解析】本题要求将一个for循环改成while循环。首先要保证循环条件相同,在for循环中,每次执行循环之后,循环控制变量k都会加1,而while循环则没有,故需在循环体中增加改变k数值的语句"k++;"。


9)【10】 60    【解析】本题中,代码定义3行2列的二维数组a,定义指向两个元素的一维数组指针p,并让p指向两维数组a的首行,则代码*(*(p+2)+1)中的p+2指向两维数组a的第三行a[2],*(p+2)指向a[2][0],*(p+2)+1指向a[2][1],*(*(p+2)+1)是引用a[2][1],其值是60


(10)【11】 ACE    【解析】在本题中,for循环体每执行完一次,变量i的值自加两次。i的初值为'a',执行一次循环后变为'c',之后再变成'e',当其变为'g'时,循环条件若不满足,循环终止,故本题共输出3个字符。表达式"i-'a'+'A'"即表示输出i对应的大写字母,结果为ACE。


(11)【12】 x[0] 【13】 x[0]    【解析】函数f( )通过for循环逐个比较数组x中的元素,循环结束后,p0和p1分别表示最大值和最小值在数组中的下标位置,然后按照题意将最大值x[p0]和数组的最后一个元素x[n-1]交换位置,再将最小值x[p1]和第一个元素(x[0]) 进行交换,所以空白处应该填入x[0]。


(12)【14】 *(str+I)或str[I]   【解析】 str是指针变量,它指向字符型数据,在循环过程中,可以用 *(str+I)来访问字符串中的第I个元素,判断是否为结束标志,如果不是,I=I+1,继续取下一个元素进行判断,直到 *(str+I)的值为'\0'为止,也可以用下标的方式引用字符,如*(str+I)相当于str[I]。


(13)【15】 30x    【解析】本题的参数传递属于值传递,所以被调用函数内不能改变调用函数中的数据。

就业数据资源平台