初级程序员填空集试卷(初级程序员)_3.docVIP

  • 5
  • 0
  • 约4.2千字
  • 约 6页
  • 2021-04-23 发布于北京
  • 举报

初级程序员填空集试卷(初级程序员)_3.doc

试卷第 PAGE 1 页共 NUMPAGES 1 页 初级程序员填空集试卷(初级程序员) 姓名:_____________ 年级:____________ 学号:______________ 题型 选择题 填空题 解答题 判断题 计算题 附加题 总分 得分 评卷人 得分 1、[说明] 下面的程序用Dole Rob算法生成N阶(N为奇数)魔方阵(各行、列、对角线数字之和相等)。该算法的过程为:从1开始,按如下方法依次插入各自然数,直到N2为止。 ①在第一行的正中插入1。 ②新位置应当处于最近插入位置的右上方,若该位置已超出方阵的上边界,则新位置取应选列的最下一个位置;若超出右边界,则新位置取应选行的最左一个位置。 ③若最近插入的元素是N的整数倍,则选同列的下一行位置为新位置。 例如,3阶魔方阵如下所示: 8 1 6 3 5 7 4 9 2 [C程序] #include<stdio.h> #include<stdlib.h> #define SIZE 50 main( ) int row, col, n, value; int a[SIZE+1][SIZE+1]; /*不使用下标为0的元素*/ printf(“请输入要输出魔方阵的阶数n(奇数, <%d):n=“, SIZE); scanf(“%d”, if(!(n%2) || n<1 || (1)) printf(“输入数据有误!/n”); exit(0); row=1; col=(n+1)/2; value=1; while(value<= (2)) a[row][col]=value; /*计算下一位置*/ if(value%n!=0) row--; (3); if(row<1)row=n; if(col>n) (4); else row++; value= (5); printf(“/n%d阶魔方阵如下所示:/n/n”, n); for(row=1; row<=n; row++) for(col=1; col<=n; col++) printf(“%5d”, a[row][col]); printf(“/n”); 2、[说明] 下面的程序用Dole Rob算法生成N阶(N为奇数)魔方阵(各行、列、对角线数字之和相等)。该算法的过程为:从1开始,按如下方法依次插入各自然数,直到N2为止。 ①在第一行的正中插入1。 ②新位置应当处于最近插入位置的右上方,若该位置已超出方阵的上边界,则新位置取应选列的最下一个位置;若超出右边界,则新位置取应选行的最左一个位置。 ③若最近插入的元素是N的整数倍,则选同列的下一行位置为新位置。 例如,3阶魔方阵如下所示: 8 1 6 3 5 7 4 9 2 [C程序] #include<stdio.h> #include<stdlib.h> #define SIZE 50 main( ) int row, col, n, value; int a[SIZE+1][SIZE+1]; /*不使用下标为0的元素*/ printf(“请输入要输出魔方阵的阶数n(奇数, <%d):n=“, SIZE); scanf(“%d”, if(!(n%2) || n<1 || (1)) printf(“输入数据有误!/n”); exit(0); row=1; col=(n+1)/2; value=1; while(value<= (2)) a[row][col]=value; /*计算下一位置*/ if(value%n!=0) row--; (3); if(row<1)row=n; if(col>n) (4); else row++; value= (5); printf(“/n%d阶魔方阵如下所示:/n/n”, n); for(row=1; row<=n; row++) for(col=1; col<=n; col++) printf(“%5d”, a[row][col]); printf(“/n”); 3、[说明] 下面的程序用Dole Rob算法生成N阶(N为奇数)魔方阵(各行、列、对角线数字之和相等)。该算法的过程为:从1开始,按如下方法依次插入各自然数,直到N2为止。 ①在第一行的正中插入1。 ②新位置应当处于最近插入位置的右上方,若该位置已超出方阵的上边界,则新位置取应选列的最下一个位置;若超出右边界,则新位置取应选行的最左一个位置。 ③若最近插入的元素是N的整数倍,则选同列的下一行位置为新位置。 例如,3阶魔方阵如下所示: 8 1 6 3 5 7 4 9 2

文档评论(0)

1亿VIP精品文档

相关文档