首页 > 全部 > 程序员下午应用技术考试 > 2017年下半年软件水平考试(初级)程序员下午(应用技术)真题试卷

2017年下半年软件水平考试(初级)程序员下午(应用技术)真题试卷

本单篇文档共10745字,内容预览3600字,预览为有答案版,源文件无水印,下载后包含无答案空白卷版和有答案版,同时也有计算机类软考初级整科真题模拟题,讲义课件,思维导图,易错高频题等下载。
程序员下午应用技术考试 真题试卷 6845人下载
价格: 免费 原价:¥8.80
收藏

2017年下半年软件水平考试(初级)程序员下午(应用技术)真题试卷

流程图题

1.阅读以下说明和流程图,填补流程图中的空缺,将解答填入对应栏内。

【说明】

对于大于1的正整数n,(x+1)n可展开为Cn0xn+Cn1xn-1+Cn2xn-2+…+Cnn-1x1+Cnnx0

下面流程图的作用是计算(x+1)n展开后的各项系数Cni(i=0,1,…,n),并依次存放在数组A[0..n]中。方法是依次计算k=2,3,…,n时(x+1)k的展开系数并存入数组A,在此过程中,对任一确定的k,利用关系式Cki=Ck-1i+Ck-1i-1,按照i递减的顺序逐步计算并将结果存储在数组A中。其中,Ck0和Ckk都为1,因此可直接设置A[0]、A[k]的值为1。

例如,计算(x+1)3的过程如下:

先计算(x+1)2(即k=2)的各项系数,然后计算(x+1)3(即k=3)的各项系数。

k=2时,需要计算C20、C11和C22,并存入A[0]、A[1]和A[2],其中A[0]和A[1]的值已有,因此将C11(即A[1])和C10(即A[0])相加得到C21的值并存入A[1]。

k=3时,需要计算C30、C31、C32和C33,先计算出C32(由C22+C21得到)并存入A[2],再计算C31(由C21+C20得到)并存入A[1]。

【流程图】

(1)2,n或2,n,1

(2)A[k]或其等价形式

(3)k-1,1,一1

(4)A[i]+A[i-1]或其等价形式

(5)A[i]或其等价形式

解析:本题考查对算法流程图的理解和表示能力,这是程序员必须具备的技能。

对k=1,2,3,…,(x+1)k的展开式系数可列出如下(杨辉三角):

k=1时1 1

k=2时1 2 1

k=3时1 3 3 1

k=4时1 4 6 4 1

A[0]A[1] A[2] A[3] A[4]…

计算是逐行进行的,而且各行计算的结果需要保存在同一数组A中。

杨辉三角的规律为:每行有k+1个数,依次保存在A[0:k]中。首末两数都是1。中间任一个数等于其上面一个数与左上数之和。由于采用同一数组存放各行,因此每计算出一个数存放后就会代替原来的数。这样,在同一行计算的过程中,不能从左到右计算,而应从右到左计算(按数组下标i递减的顺序)。

流程图中,一开始对A[0]和A[1]置1,这就是k=1时的计算结果。

接着需要对k=2,3,…,n进行循环计算,因此流程图空(1)处应填2,n或者2,n,1。

在对第k行进行计算时,显然应首先将最右边的A[k]置1,因此空(2)处应填A[k]。

接着应从右到左逐个计算这一行中间的各个数:A[k-1],A[k-2],…,A[1],因此,(3)处应填k-1,1,一1(即数组下标从k-1开始每次递减1直到1)。

接着应计算A[i]。根据杨辉三角的规律,它应等于原来的A[i]与前一个数A[i-1]之和。因此空(4)处应填A[i]+A[i-1],而空(5)处应填A[i]。

当i和k双重循环结束后,A[0:n]中的结果就是(x+1)n展开后的各项系数。

C语言题

2.阅读以下说明和代码,填补代码中的空缺,将解答填入对应栏内。

【说明】

对n个元素进行简单选择排序的基本方法是:第一趟从第1个元素开始,在n个元素中选出最小者,将其交换至第一个位置,第二趟从第2个元素开始,在剩下的n-1个元素中选出最小者,将其交换至第二个位置,依此类推,第i趟从n-i+1个元素中选出最小元素,将其交换至第i个位置,通过n—1趟选择最终得到非递减排序的有序序列。

【代码】

#include

void selectS0rt(int data[], int n )

//对data[0]~data [n—1]中的n个整数按非递减有序的方式进行排列

{

int i、 j、k;

int temp;

for(i=0;i<n一1; i++) {

for(k=i,j=i+1; (1)(2) //k表示data[i]~data[n-1]中最

小元素的下标

if(data[j]<data[k]) (3)

if(k!=i){

//将本趟找出的最小元素与data[i]交换

temp=data[i];(4); data[k]=temp;

int main()

{

int arr[]={79,85,93,65,44,70,100,57};

int i,m;

m=sizeof(arr)/sizeof(int); //计算数组元素个数,用m表示

(5); //调用selectSort对数组arr进行非递减排序

for((6);i<m;i++) //按非递减顺序输出所有的数组元素

printf(’’%d\t’’,arr[i]);

printf(’’\n’’);

return 0;

(1)j<n或其等价形式

(2)j++或其等价形式

(3)k=j

(4)da

本文档预览:3600字符,共10745字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载

剩余未完,查看全文
收藏
2017年下半年软件水平考试(初级)程序员下午(应用技术)真题试卷

推荐资源

客服

扫码添加客服微信

热线

官方客服

如遇问题,请联系客服为您解决

电话客服:

客服微信:pujinet

工作时间:9:00-18:00,节假日休息

公众号

扫码关注微信公众号