【计算机类职业资格】初级程序员下午试题-84及答案解析.doc
《【计算机类职业资格】初级程序员下午试题-84及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】初级程序员下午试题-84及答案解析.doc(13页珍藏版)》请在麦多课文档分享上搜索。
1、初级程序员下午试题-84 及答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.【说明】有数组 A(4,4),把 1到 16个整数分别按顺序放入 A(1,1),A(1,4),A(2,1),A(2,4),A(3,1),A(3,4),A(4,1),A(4,4)中,下面的流程图用来获取数据并求出两条对角线元素之积。【流程图】(分数:15.00)_二、试题二(总题数:1,分数:15.00)2.【说明】实现矩阵(3 行 3列)的转置(即行列互换)。例如,输入下面的矩阵:100 200 300400 500 600700 800 900程序输出:100 400
2、700200 500 800300 600 900【函数】int fun(int array33)int i,j,t;for(i=0; (1) ;i+)for(j=0; (2) ;j+)t=arrayij;(3) ;(4) ;main()int i,j;int array33=100,200,300,400,500,600,700,800,900;clrscr();for (i=0;i3;i+)for(j=0;j3;j+)printf(“%7d“,arrayij);printf(“/n“);fun( (5) );printf(“Converted array:/n“);for(i=0;i3;i
3、+)for(j=0;j3;j+)printf(“%7d“,arrayij);printf(“/n“);(分数:15.00)_三、试题三(总题数:1,分数:15.00)3.【说明】对 20个数进行排序,可以利用选择法,即从后 19个比较过程中,选择一个最小的与第一个元素交换,依次类推,即用第二个元素与后 18个进行比较,并进行交换。【函数】#define N 20main()int i,j,min,tem,aN;printf(“please input twenty num:/n“);for(i=0;iN;i)printf(“a%d=“,i);scanf(“%d“,printf(“/n“);fo
4、r(i=0;iN;i)printf(“,“,ai);printf(“/n“);for(i=0; (1) ;i)min= (2) ;for(j= (3) ;jN;j+)if( (4) )min=j;tem=ai;(5) ;amin=tem;printf(“After sorted /n“);for(i=0;iN;i+)printf(“,“,ai);(分数:15.00)_四、试题四(总题数:1,分数:15.00)4.【说明】已知某数列的前两项为 2和 3,其后继项根据当前最后两项的乘积按下列规则生成:(1)若乘积为一位数,则该乘积即为数列的后继项;(2)若乘积为二位数,则该乘积的十位数和个位数依次
5、作为数列的两个后继项。本程序输出该数列的前 n项以及它们的和。其中,函数 sum(n,pa)返回数列的前 n项之和,并将生成的前n项存放于首指针为 pa的数组中。程序中规定输入的 n值必须大于 2并且不超过给定的常数值 MAXNUM。例如:若输入 n值为 10,则程序输出如下内容:sum(10)=442 3 6 1 8 8 6 4 2 4#includestdio.h#define MAXNUM 100int sum(int n,int *pa)int count,total,temp;*pa=2;(1) =3;total=5; count=2;while(count+n)temp+=*(pa
6、-1)*pa;if(temp10)total+=temp;*(+pa)=temp;else(2) =temp/10;total+=*pa;if(countn)count+;pa+;(3) =temp%10;total+=*pa;(4) ;main()int n,*p,*q,numMAXNUM;doprintf(“Input N=?(2N%d):“,MAXNUM+1);scanf(“%d“,while( (5) );printf(“/nsum(%d)=%d/n“,n,sum(n,num);for(p=num,q= (6) ;pq;p+)printf(“%4d“,*p);printf(“/n“);
7、(分数:15.00)_五、试题五(总题数:1,分数:15.00)5.【说明】冒泡排序算法,作为 OrderedlistT,size类的成员函数,last 是有序表的元素个数。templatetypename T,int sizevoid OrderedlistT,sizeBubbleSort()bool noswap; /交换标志int i,j;T temp;for(i=0;ilast;i+)noswap= (1) ;for(j= (2) ; (3) ; (4) )/从下往上冒泡if(slistjslistj-1)temp=slistj;slistj=slistj-1;slistj-1=tem
8、p;noswap= (5) ;if(noswap)break;(分数:15.00)_六、试题六(总题数:1,分数:15.00)6.【说明】本程序根据输入的月份数,输出它是哪个季节。【代码】import java.io.*;public class seasonpublic static void main(String args)String strln=“;(1) in=new InputStreamReader(System.in);BufferedReader buffln=new BufferedReader(in);System.out.print(“Please enter a m
9、onth(1-12):“);trystrln=buffln.readLine();/从命令行读入数据catch( (2) )System.out.println(e.toStdng();int month= (3) (strln);/将字符串转换成整数型int season=0;if(month12 /计算季节的公式(4) (season)case 1:System.out.println(“the season is Springl“);break;case 2:System.out.println(“the season is Summer!“);case 3:System.out.pri
10、ntln(“the season is Fall!“);case 4:System.out.println(“the season is Winter!“);break;(5) ;System.out.println(“this is not correct month!“);(分数:15.00)_初级程序员下午试题-84 答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.【说明】有数组 A(4,4),把 1到 16个整数分别按顺序放入 A(1,1),A(1,4),A(2,1),A(2,4),A(3,1),A(3,4),A(4,1),A(4,4)中
11、,下面的流程图用来获取数据并求出两条对角线元素之积。【流程图】(分数:15.00)_正确答案:(1)1,4,1 (2)1,4,1 (3)1(4)sAi,i (5)sA5-i,i)解析:分析本题考查用程序流程图描述数组及求对角线的和。题目要求把 1到 16个整数分别按顺序放入 A(1,1),A(1,4),A(2,1),A(2,4), A(3,1),A(3,4),A(4,1),A(4,4)中,那么数组中的元素刚好构成一个方阵,用流程图求出这个方阵的对角线之积。下面来具体分析流程图。第(1)空与第(2)空应该结合起来完成,它们都是一个循环判断语句的条件,从图中可以看出,如果这两个条件都成立,则读出当
12、前数组中的元素值,根据题目要求,数组中的元素个数是每行 4个每列 4个,那么循环的上界应该是 4,而下标是从 1开始的,因此这两个空答案为 1,4,1。第(3)空是一个赋值语句,给变量 s赋一个初值,从图中后面的语句不难看出 s中存放的是求积的结果,那么在求积以前,s 的值应该为 1,因此此空答案为 1。第(4)空也是一个赋值语句,是在循环条件判断语句下,我们已经知道变量 s中存放的是每次求积的结果,那么此空很明显是用来求积的,用当前取到的对角线元素乘以变量 s中存放的值,因此此空答案为sAi,i。第(5)空和上一空非常相似,但它是用来求另外一条对角线的积的,它也是在一个循环下来实现的,这条对
13、角线的元素位置与上面那条具有对称的特点,因此此空答案为 sA5-i,i。二、试题二(总题数:1,分数:15.00)2.【说明】实现矩阵(3 行 3列)的转置(即行列互换)。例如,输入下面的矩阵:100 200 300400 500 600700 800 900程序输出:100 400 700200 500 800300 600 900【函数】int fun(int array33)int i,j,t;for(i=0; (1) ;i+)for(j=0; (2) ;j+)t=arrayij;(3) ;(4) ;main()int i,j;int array33=100,200,300,400,50
14、0,600,700,800,900;clrscr();for (i=0;i3;i+)for(j=0;j3;j+)printf(“%7d“,arrayij);printf(“/n“);fun( (5) );printf(“Converted array:/n“);for(i=0;i3;i+)for(j=0;j3;j+)printf(“%7d“,arrayij);printf(“/n“);(分数:15.00)_正确答案:(1)i3 (2)ji (3)arrayij=arrayji(4)arrayji=t (5)array)解析:分析本题考查用 C语言实现矩阵的转置。题目要求程序实现矩阵(3 行 3
15、列)的转置,其关键是将当前行列对应的元素与其对应的列行元素互换。题目中给出了具体的矩阵元素和结构,下面来具体分析程序。第(1)空很明显是循环语句的判断条件,是上界条件,这个二重循环的作用是进行数组中元素的互换,而从题目中给出的已知条件可以判断出,这个数组是一个三维的数组,而在程序中下标是从 0开始的,那么其上界应该是不大于 3,因此这个空的答案分别是 i3。第(2)空也是循环的判断上界,在上面我们已经分析出了这个二重循环的作用是进行数组中元素的互换,而元素互换的过程是将当前行列对应的元素与其对应的列行元素互换,元素的下标都要在能互换的下标范围内,那么第二重循环的上界应该是第一重循环变量的当前值
16、,因此此空答案为 ji。第(3)空在这个二重循环体中,从程序中不难发现,用一个临时变量 f来存放要置换的值,接下来就是此空,那么应该是将其中一个值放到其转置后的位置,再结合上面分析,可以得出此空答案为 arrayij=arrayji。第(4)空是紧接着上一空而来的,在上面的程序中已经将当前位置中的值保存到了临时变量 t中,且把其对应的转置位置的元素值放到了这个位置,那么接下来应该是将临时变量中的值放到转置位置,因此此空答案为 arrayji=t。第(5)空很明显是函数的参数,这个函数就是功能函数 fun(),用来实现矩阵的转置,根据程序中函数的定义,它只有一个参数,这个参数是要被处理的数组。在
17、主函数中,需要被处理的数组是 array,这里我们需要注意在数组作为函数的形参时,一般是通过传递其地址来实现参数传递的,因此此空答案为array。三、试题三(总题数:1,分数:15.00)3.【说明】对 20个数进行排序,可以利用选择法,即从后 19个比较过程中,选择一个最小的与第一个元素交换,依次类推,即用第二个元素与后 18个进行比较,并进行交换。【函数】#define N 20main()int i,j,min,tem,aN;printf(“please input twenty num:/n“);for(i=0;iN;i)printf(“a%d=“,i);scanf(“%d“,prin
18、tf(“/n“);for(i=0;iN;i)printf(“,“,ai);printf(“/n“);for(i=0; (1) ;i)min= (2) ;for(j= (3) ;jN;j+)if( (4) )min=j;tem=ai;(5) ;amin=tem;printf(“After sorted /n“);for(i=0;iN;i+)printf(“,“,ai);(分数:15.00)_正确答案:(1)iN-1 (2)i (3)i+1(4)aminaj (5)ai=amin)解析:分析本题考查 C语言中的排序算法。题目要求对 20个数进行排序,并告诉我们利用选择法,即从后 19个比较过程中,
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 初级 程序员 下午 试题 84 答案 解析 DOC
