首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。 【说明】 设有3n+2个球互连,将自然数1~3n+2分别为这些球编号,使相连的两球编号之差的绝对值正好是数列1,2,…,3n+1中的各数,如下图所示: 其中填自然数
阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。 【说明】 设有3n+2个球互连,将自然数1~3n+2分别为这些球编号,使相连的两球编号之差的绝对值正好是数列1,2,…,3n+1中的各数,如下图所示: 其中填自然数
admin
2010-01-15
66
问题
阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。
【说明】
设有3n+2个球互连,将自然数1~3n+2分别为这些球编号,使相连的两球编号之差的绝对值正好是数列1,2,…,3n+1中的各数,如下图所示:
其中填自然数的思想如下;
(1)先自左向右,第1列中间1个填数,然后第2列上、下2个填数,每次2列;但若n为偶数,最后1次只排第1列中间一个数。
(2)自右向左,先右第1列中间填数;若n是奇数,再右第2列中间填数。然后依次右第1列上、下2个填数,再右第2列中间1个填数,直到左第2列为止。
【程序】
#include <stdio.h>
#define size 10
int a[3][size];
void main()
{
int i,k,m,n;
printf("imput the n:");
scanf("%d",&n);
k=1;
for(i=0; i<=n/2; i++)
{
a[1][2*i]=k; k++;
if((i==n/2)&& (1) ||(i<n/2))
{
a[0][2*i+1]=k;
k++;
(2)
k++;
}
}
if(n%2==1)
{
(3)
k++;
m=n;
}
else
(4)
for(i=0; i<n/2; i++)
{
a[1][m-2*i]=k; k++;
(5)
k++;
a[2][m-2*i-1]=k; k++;
}
a[1][1]=k;
printf("\n");
printf(" ");
for(i=1; i<=n; i++)
printf("%6d",a[0]
);
printf("\n\n");
for(i=0; i<=n+1; i++)
printf("%6d",a[1]
);
printf("\n\n");
printf(" ");
for(i=1; i<=n; i++)
printf("%6d",a[2]
);
printf("\n");
}
选项
答案
(1)(n%2==1) (2)a[2][2*i+1]=k; (3)a[1][n+1]=k; (4)m=n+1; (5)a[0][m-2*i-1]=k;
解析
本题考查C语言中具体算法的实现。
题目中要求将3n+2个球互连,并用自然数1~3n+2分别为这些球编号,使相连的两球编号之差的绝对值正好是数列1,2,…,3n+1中的各数。题目中还给出了具体的填自然数的思想。我们要完成的工作就是用C语言描述出题目中给出的思想。首先我们需要对其思想有个正确的认识,这是关键所在。
下面,我们来分析代码。结合整段程序代码,我们可以分析出,二维数组a用来存放我们要填的数字,第一维表示行数,总行数应该是3。第二维表示列数,总列数应该是n+2。其中的第(1)空所在的位置是表示一个条件判断语句的条件,在这之前已经对第1列的中间1个进行了填数,那么根据“先自左向右,第1列中间1个填数,然后第2列上、下2个填数,每次2列”的思想,再结合下面的填数程序语句,我们可以知道,此语句就是用来实现在先第1列中间1个填数后,对第2列上、下2个进行填数,每次2列这个思想的。因此,第(2)空的答案就出来了,是对第2列下(第3行)进行填数,因此,答案为“a[2][2*i+1]=k”。因为条件判断语句下面是进行了2次填数,因此可以判断n应该是个奇数,因为若n为偶数,最后1次只排第1列中间一个数,就不需要这个操作了。因此,第(1)空的作用应该是用来判断n是奇数,所以此空答案为 (n%2==1)。
第(3)空所在的位置在条件n%2==1成立的情况下才执行,条件n%2==1成立表明 n是奇数,根据若n是奇数,再右第2列中间填数的思想,我们可以知道,此处应该是对右第2列中间填数,因此,答案为a[1][n+1]=k。
第(4)空所在的位置是条件n%2==1不成立的情况下才执行,在上面我们知道 n%2==1是用来判断n是否为奇数,如果n不是奇数,我们不做什么,但为了方便后面的操作,应该将n+1的值保存起来,因此,此空的答案为m=n+1。
根据思想:若n是奇数,再右第2列中间填数。然后依次右第1列上、下2个填数,再右第2列中间1个填数,直到左第2列为止。在前面程序中,我们已经完成了前面部分,第(5)空所在的循环体就是用来完成后面部分的,在循环体中已经实现了对中、下进行填数,缺一个对上进行填数的代码,因此,第(5)空要完成的任务就是对上行进行填数,因此,答案为a[0][m-2*i-1]=k。
转载请注明原文地址:https://kaotiyun.com/show/9BjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
在Word2010编辑状态下,打开MyDoc.DOCX文档,若要把编辑后的文档以文件名“W1.htm”存盘,可以执行“文件”菜单中的________________命令。
Windows7中的文件命名规则不包括________________。
操作系统的资源管理功能不包括________________。
国际标准化组织提出的开放系统互连OSI参考模型,将计算机网络分成7层,其中最底层是()。
火车站供旅客取票使用的终端属于()。
在Microsoft Word中点击“文件”→“另存为”,在保存类型下拉框中不能选择的有(45)。
某互联网公司建立的用户画像(标签化的用户信息)包括人口属性和行为特征两大类,()属于行为特征。
某个字段的数据是原始数据计算的结果,该字段的宽度和小数位数对数据的精度有影响。一般来说,小数位数的确定需要考虑______。
在WPS2016电子表格中,如果单元格A2到A50中存储了学生的成绩(成绩取值在0~100之间),若要统计小于60分学生的个数,正确的函数是___________。
综合布线系统由6个子系统组成,将图1-1中(1)~(6)处空缺子系统的名称填写在答题纸对应的解答栏内。为满足公司要求,通常选用什么类型的信息插座?
随机试题
Globalwarmingiscausingmorethan300,000deathsandabout$125billionineconomiclosseseachyear,accordingtoareportby
在腹前壁上第4腰椎的体表定位点是
乙为水泥厂,甲为水泥销售公司。甲、乙订立一购销合同,约定乙于6月1日前送水泥1000吨给甲;甲支付定金10万元给乙。后乙于6月2日将1000吨水泥运至甲处。甲以乙违约(迟延履行1天)为由,要求乙双倍返还定金20万元。以下说法正确的是:
下列术语中卖方不负责办理出口手续及支付相关费用的是()。
可转换公司债券享受转换特权,在转换前和转换后的形式分别为()。
根据企业所得税相关规定,企业提供劳务完工进度的确定,可以选用的方法有()。
Whodesignedthefirsthelicopter?Who【C1】______themostfamouspicturesintheworld?Whoknewmoreaboutthehumanbodythanm
关于因特网的域名系统,以下哪种说法是错误的?______。
Whichwordcantaketheplaceoftheunderlinedword"fervency"inparagraph1?Theunusuallysurprisingwaythathescoredgoa
A、TomeetCharley.B、Toworkinhisoffice.C、Togotohospital.D、Toattendameeting.DM:ThisisCharleyspeaking.Couldyou
最新回复
(
0
)