首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下应用程序说明和C程序,将C程序段中(1)~(7)空缺处的语句填写完整。 【说明】 以下【C程序】能将自然数1,2,…,N2按蛇形方式逐个存入N阶矩阵。换言之,程序从anO开始到 aOn。为止(n=N-1)顺序填入自然数,交替地对每一斜
阅读以下应用程序说明和C程序,将C程序段中(1)~(7)空缺处的语句填写完整。 【说明】 以下【C程序】能将自然数1,2,…,N2按蛇形方式逐个存入N阶矩阵。换言之,程序从anO开始到 aOn。为止(n=N-1)顺序填入自然数,交替地对每一斜
admin
2012-12-10
58
问题
阅读以下应用程序说明和C程序,将C程序段中(1)~(7)空缺处的语句填写完整。
【说明】
以下【C程序】能将自然数1,2,…,N2按蛇形方式逐个存入N阶矩阵。换言之,程序从anO开始到 aOn。为止(n=N-1)顺序填入自然数,交替地对每一斜列从左上元素向右下元素或从右下元素向左上元素存数。
例如,当N=5时,程序输出结果如图2-12所示;当N=8时,程序输出结果如图2-13所示。
【C程序】
#include <stdio.h>
#define SIZE 10
int a[SIZE][SIZE], k;
main()
{ int i, j, n, N;
for (N = 3; N<=SIZE; N++)
{ k = 1;
makeArray (n = N-1);
printf ("\nN = %d;\n", n+1);
for (i = 0; i<=n; i++)
{ for (j = 0; j<=n; j++)
printf("%4d", a
[j]);
printf ("\n");
}
}
}
makeline (int row_start, int col_start, int row end)
{ /*完成矩阵一条斜线的整数填写*/
int i, j, sign =(1);
for (i = row_start, j = col start;(2); i += sign, j += sign)
a
[j] = k++;
}
makeArray (int n)
{ /*完成矩阵每条斜线的整数填写*/
int d;
for (d = 1; d <=(3); d++)
if (d <= n)
if (d%2)
makeline ((4));
else
makeline ((5));
else
if (d%2)
makeline ((6));
else
makeline ((7));
选项
答案
(1)row_start<row_end?1:-1 或((row end-row start)>0)*2-1或其他等价的代码形式 (2)(row-end-i)*sign>=0或其等价的代码形式 (3)2*n+1或其等价的代码形式 (4)n,d-1,n+1-d (5)n+1-d,0,n (6)2*n-d+1,n,0 (7)0,d n-1,2*n-d+1
解析
这是一道要求读者掌握二维数组应用的程序设计题。本题的解答思路如下。
本程序由主函数main、函数makeline和函数makeArray组成。函数makeArray通过对函数makeline的调用,每次形成矩阵的一条斜线,直到完成整个矩阵。主函数main通过调用函数makeArray分别形成了1阶至10阶(由常量SIZE决定)的蛇形矩阵,并将其输出。
函数makeline的3个参数分别为起点的行号、列号及终点的行号。sing是行列号的增量。当从人上到右下方填数时,变量sing值为1,此时终点行号(row_end)大于起点行号(row_start);当从右下方到左上方填数时,变量sing值为-1,此时终点行号小于起点行号。(1)空缺处所填写内容的功能是对变量sing赋值,应填入“row_start<row_end?1:-1”,或“((row_end-row_start)>0)*2-1”,或其他等价的代码形式。
函数makeline中的for循环是对斜线的元素进行赋值。(2)空缺处是循环的结束条件,所填入的内容是“(row_end-i)*sign>=0”。
函数makeArray通过多次调用makeline形成矩阵的各条斜线。顺序是从左下角填起,第奇数条斜线从右下方向左上方填写,第偶数条斜线从左上方向右下方填。对于第d条斜线,如果在主对角线左下(即 d<=n),其左上角的行号、列号分别为n+1-d和0,右下角的行号、列号分别为n和d-1。而(4)、(5)空缺处所填写的语句是处理主对角线左下的各条斜线,根据斜线方向和起止位置,应分别填入“n,d-1, n+1-d”和“n+1-d,0,n”。
如果在主对角线右上,其左上角的行号、列号分别为0和d-n-1,右下角的行号、列号分别为2*n -d+1和n。(6)、(7)空缺处所填写的语句是处理主对角线右上的各条斜线。根据斜线方向利起止位置,应分别填入“2*n-d+1,n,0”和“0,d-n-1,2*n-d+1”。
需要注意的是:函数makeArray中的n不是阶数N,而是N-1。函数makeArray通过调用函数makeline形成矩阵的2*n+1条斜线。而(3)空缺处是控制for循环的终值,其所填写的内容是“2*n+1”。
转载请注明原文地址:https://kaotiyun.com/show/HnjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
下列关于Windows操作系统文件名的说法,正确的是(32)。
某班级有40名学生,本次数学考试大多在80分上下。老师为了快速统计平均分,对每个学生的分数按80分为基准,记录其相对分(多出的分值用正数表示,减少的分值用负数表示,恰巧等于80分时用0表示),再统计出各种相对分的人数,如下表:根据上表可推算出,这次考试
在Excel2007中,在单元格A1中输入函数“=POWER(2,3)/MAX(1,2,4)”,按回车键后,则A1单元格中的值为__________。
图文混排是Word的特色功能之一,下列叙述中,不正确的是(46)。
某地区考试机构准备对信息处理技术员考试笔试成绩(BS)不低于45分,并且机考成绩(JK)为43~44分者进行重点复查。对考生成绩表进行筛选操作时,正确描述上述条件的表达式是(27)。
在Excel2007中,若在单元格A1中输入函数“=MID(“RUANKAO”,1,4)”,按回车键后,则A1单元格中的值为()。
计算机病毒是一段程序,一般隐藏在______中。
在Excel中,A1,A2,B1,B2,C1,C2单元格的值分别为1、2、3、4、3、5,在D1单元格中输入函数“=SUM(A1:B2,B1:C2)”,按回车键后,D1单元格中显示的值为______。
计算机在接通电源后,系统首先由(41)程序对内部每个设备进行测试。
从①地开车到⑥地,按下图标明的道路和行驶方向,共有(4)种路线。
随机试题
关于投资人要求的补偿,以下说法正确的有()
唐以前文献中“哕”是指
《瘟疫论》的作者是
属于B细胞的表面标志为
简述我国的司法职权及职权的划分。
以商业零售为主的有限责任公司的注册资本不得少于人民币()。
某承包商对一项10000延长米的木窗帘盒装修工程进行承包。在他的报价书中指明,计划用工2498工日,即工效为2498工日/10000m=0.2498工日/m。每工日工资按40元计,共计报价人民币99920元。在装修过程中,由于业主供应木料不及时,影响了承包
洁净厂房每一生产层、每一防火分区或每一洁净区的安全出口的数量均不应少于两个,但如果洁净厂房符合()时,可设置一个安全出口。
出口企业出口下列货物,除另有规定者外,视同内销货物计提销项税额或征收增值税的有()。
Thegovernmentisdebatingtheeducationlaws.
最新回复
(
0
)