软考程序员考试试题及分析与解答(四)

程序员 责任编辑:小狐狸 2016-05-05

添加老师微信

备考咨询

加我微信

摘要:软考程序员考试试题及分析与解答(四)

       >>>>点击进入了解程序员培训视频

 >>>>点击进入了解程序员在线辅导

 >>>>点击进入了解程序员考试教材

       程序员考试是全国软考的初级考试,通过程序员考试的合格人员具有助理工程师(或技术员)的实际工作能力和业务水平。希赛软考网整理了一些程序员考试历年真题,供大家练习。

   试题四

   阅读以下说明和C语言程序,将应填入(n)处的字句写在答题纸的对应栏内。

   【说明】

   魔方阵,又叫幻方,在我国古代称为"纵横图".由1…N2共N2个自然数构成每行、每列及两对角线上各数之和都相等的N×N方阵,这样的方阵就叫做N阶魔方阵。顾名思义,奇阶魔方阵就是N为奇数的幻方。

   奇数阶魔方阵的生成方法如下:

   (1)第一个位置在第一行正中。

   (2)新位置应当处于最近一个插入位置右上方,但如果右上方位置已超出方阵上边界,则新位置取应选列的最下一个位置;如果超出右边界,则新位置取应选行的最左一个位置。

   (3)若最近一个插入元素为N的整数倍,则选下面一行同列上的位置为新位置。本题要求输入一个数据n,然后打印由自然数1到n2的自然数构成的魔方阵(n为奇数)。例如,当n=3时,魔方阵为:

   816

   357

   492

   了解其生成方法后,就可以根据此方法来写出程序了。首先设置int变量i,j,m,n.其中i标记魔方阵的行;j标记魔方阵的列;n表示魔方阵的维数,通过输入得到;通过m递加得到插入的数据。数组a[MAX][MAX]用于存放魔方阵元素。这里预定义了MAX的大小,没有采用动态分配,在此设置为15,即最大求得15×15阶魔方阵。

   【程序】

   #include

   #defineMAX15

   voidmain()

   {

   intn;

   intm=1;

   inti,j;

   inta[MAX][MAX];

   printf("Pleaseinputtherankofmatrix:");

   scanf("%d",&n);

   i=0;

   (1)

   while((2))

   {

   a[i][j]=m;

   m++;

   i--;

   j++;

   if((m-1)%n==0&&m>1)

   {

   (3)

   j=j-1;

   }

   if(i<0)//超出上界

   (4)

   if(j>(n-1))//超出右边界

   (5)

   }

   for(i=0;i<n;i++)//输出魔方阵

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

   {

   if(a[i][j]/10==0)

   printf("%d",a[i][j]);//对程序无影响,只是使输出的数每一列对齐

   else

   printf("%d",a[i][j]);

   if(j==(n-1))

   printf("\n");

   }

   }

   试题四分析

   本题考查我们对魔方阵的理解及用C语言的实现。

   题目给出了魔方阵的原理和生成过程,现在要我们往15×15的二维数组中添加元素,使其呈现魔方阵的结构。程序中的变量i和j确定增加的元素在数组中的位置,每次增加的元素在原来的基础上加1,只是位置按魔方阵的原理存放。

   下面来看代码,在第(1)空处,还没有进入增加元素的循环中,应该是赋初值阶段,而用来确定元素在数组中位置的变量i已有值,j没有,再根据魔方阵的生成过程的第一条(第一个位置在第一行正中)可知,此空的答案应该是j=(n+1)/2-1.

   第(2)空处是一个循环条件,结合全过程来看,我们知道这个循环是不停往数组中增加元素,直到添加完n×n个元素。因此,此处是判断要添加的元素应该小于n×n.答案为m<=n*n.

   第(3)空前面是个条件选择语句,其条件是判断最近一个插入元素m是否可以被n整除。根据魔方阵的生成过程的第三条(若最近一个插入元素为N的整倍数,则选下面一行同列上的位置为新位置),即i=i+1,j不变。但由于在插入一个元素后,变量i和j会分别自动减1和加1.因此,答案为i=i+2.

   第(4)空前面也是个条件选择语句,其条件是判断是否超出上界,根据魔方阵的生成过程的第二条可以知道,如右上方位置已超出方阵上边界,则新位置取应选列的最下一个位置,因此,此空应该填i=i+n.

   第(5)空前面是个条件选择语句,其条件是判断是否超出右边界,根据魔方阵的生成过程的第二条可以知道,如超出右边界则新位置取应选行的最左一个位置。因此,此空应该填j=j-n.

   试题四答案

  (1)j=(n+1)/2-1;(2)m<=n*n(3)i=i+2;(4)i=i+n;(5)j=j-n;

     希赛软考网,拥有十四年软考培训经验,希赛网一直坚持自主研发,将丰富的软考培训经验有效融入教程研发过程,自成体系的软考在线题库软考历年真题)、软考培训教材软考视频教程,多样的培训方式包括在线辅导面授、和,使考生的学习更具系统性,辅导更具针对性。采用全程督学机制,,软考平均通过率在全国。

 相关推荐

 2016年希赛教材大放送 

   程序员教程

   程序员考试考前串讲

   程序员考试知识点分析与真题详解(第4版 )

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

软考备考资料免费领取

去领取