首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下函数说明和C程序,将C程序中(1)~(6)空缺处的语句补充完整。 【说明】 喜迎2008年北京奥运会!以下【C程序】能将一个给定汉字(例如,奥运会的“会”字)的点阵逆时针旋转90°,并输出旋转前后的点阵数据及字形。 图1-15是汉
阅读以下函数说明和C程序,将C程序中(1)~(6)空缺处的语句补充完整。 【说明】 喜迎2008年北京奥运会!以下【C程序】能将一个给定汉字(例如,奥运会的“会”字)的点阵逆时针旋转90°,并输出旋转前后的点阵数据及字形。 图1-15是汉
admin
2009-02-15
31
问题
阅读以下函数说明和C程序,将C程序中(1)~(6)空缺处的语句补充完整。
【说明】
喜迎2008年北京奥运会!以下【C程序】能将一个给定汉字(例如,奥运会的“会”字)的点阵逆时针旋转90°,并输出旋转前后的点阵数据及字形。
图1-15是汉字“会”字的16×16点阵字形,用数字0表示空白位置,用数字1表示非空白位置,“会”字的第1行即可表示成如下的{0,1}序列:
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
如果把它看做一个字的16个位,“会”字的第1行可以用十六进制数0100来表示。同理,“会”字的第2行可以用十六进制数0240表示,第3行可以用十六进制数0420表示……依此类推,用16个双字节整型数即可存放一个汉字点阵字形。“会”字的点阵数据及字形如图1-15的左半部分所示。
将一个汉字逆时针旋转90°,就是把该汉字点阵的最右列作为旋转后新点阵的第1行,次最右列作为旋转后新点阵的第2行……依此类推来形成一个旋转后的点阵字形。图1-15的右半部分就是将“会”字逆时针旋转90°后的点阵数据和字形(提示:读者可将书本顺时针旋转90°,以查看旋转90°后的点阵字形)。
在【C程序】中,数组old存放着“会”字的16个双字节整型点阵数据。函数turnleft能将该点阵数据逆时针旋转90°,旋转后的点阵数据存放在数组new中。函数display能将旋转前后的点阵数据加以编辑,用字符“.”表示值为0的位,用字符“x”表示值为1的位,从而将旋转前后的点阵按行输出其十六进制的数据和字形,如图1-15所示。
【C程序】
#include <stdio.h>
#define EMPTY ’.’
#define NONEMPTY ’x’
#define LEFT 0
#define RIGHT 1
main ()
{ static unsigned old[16]=
{ 0x0100,0x0240,0x0420,0x0810,0x1004,0x23c2,
0x4001,0x8ff8,0x0100,0x0200,0x0400,0x0800,
0xl000,0x2004,0x7ffe,0x0001
};
unsigned new[16];
turnleft (old, new);
display (old,new);
}
turnleft (old,new)
unsigned old[],new[];
{ int row, k;
for (row=0;row<16;row++)
for ((1);k<16;k++)
new[row]|=((old[k]>>(2))&1) <<(3);
}
display (old, new)
unsigned *old,*new;
{ char out[2] [17],letter[2];
int row, col;
letter[O] = EMPTY;
letter[1] = NONEMPTY;
out[LEFT] [16]=out[RIGHT] [16]=(4);
for (row = 0;row<16;row++,old++,new++)
{ for (col = 0;co1<16;++col)
{ out[LEFT] [col] = letter[ ((5)) &1];
out[RIGHT] [col] = letter[ ((6)) &1];
}
printf("\n %4x %s",*old,&out[LEFT] [0]);
printf("%4x %s",*new,&out[RIGHT] [0]);
}
}
选项
答案
(1)k=0,newlrowl=0 (2)row (3)15-k (4)"\0’ (5)*old>>(15-col) 或 old[row]>>(15-col) (6)*new>>(15-col) 或 new[row]>>(15-col)
解析
这是一道要求读者掌握数组应用的程序设计题。本题的解答思路如下。
阅读程序说明后可知,本程序可将一个给定汉字的点阵逆转90°后输出。用16个元素的元素数组表示汉字点阵,每个无符号整数有16位,0表示空白位置,为1表示非空白位置。该C程序的功能是将上述表示形式的汉字点阵(“会”字)逆时针旋转90°后存储在数组new中,并输出旋转前后的十六进制点阵数据和字形。
函数turnleft完成点阵数据逆时针旋转90°,并将旋转后的点阵数据存放在数组New中。在函数turnleft的for循环中,语句“new[row]|=((01d[k]>> (2) )&1)<< (3) ;”用于实现“将一个汉字逆时针旋转90°,就是把该汉字点阵的最右列作为旋转后新点阵的第1行,次最右列作为旋转后新点阵的第2行……”,即装配新点阵中的第row行。其中,地址运算符“&”是一个返回操作数地址的单目操作符,运算符“|=”是进行位逻辑或赋值运算。
由于新点阵的第row行的各位来自原点阵中各行的第(15-row)位,而且此处用&1运算来取出该位,因此(2)空缺处所补充的内容是“row”,(3)空缺处所填写的内容是“15-k”。
由于(1)空缺处是内循环初始化的部分,且内循环的结束条件是“k<16”,而每个汉字是16×16点阵字形,因此该空缺处所填写的内容是“k=0,new[row]=0”。
函数display把旋转后的汉字点阵与原点阵一同输出,也是通过使用双重for循环语句来实现输出。由于输出是一行一行进行的,可知out数组中存放的是每次输出的原点阵和新点阵的一行数据,而输出时printf语句中使用“%s”格式的out[LEFT]和out[RIGHT]是两个字符串:在C语言中规定,一个字符串数据总是以‘\0’为结束标志。因此(4)空缺处所补充的内容是“‘\0’”。
函数display能将旋转前后的点阵数据加以编辑,用字符“.”表示值为0的位,用字符“x”表示值为1的位。换言之,函数display输出的符号是’.’和’x’,即为数组letter中的2个元素。由此可知(5)、(6)空缺处所在的语句是对汉字点阵进行输出转换。由于输出时是高位在前、低位在后,因此在输出时排在第col位的是点阵中每一行的第col位。而外循环中有“old++”和“new++”的赋值,&1运算只表示判断(5)、(6)空缺处第15位上的值为0或1。而要区分第0位至第14位是0还是1,只要将old[row]右移15-col位就能对其进行判断。因此(5)空缺处所填写的内容是“*old>>(15-col)”或“old[row]>>(15-col)”。同理,只要将new[row]右移15-col位就能对adw进行判断,即(6)空缺处所填写的内容是“*new>>(15-c01)”或“new[row]>>(15-col)”。
转载请注明原文地址:https://kaotiyun.com/show/mEjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
在Excel中,选中某单元格并输入123,回车后此单元格的显示内容为¥123,则可知此单元格的格式被设成了(54)。
撰写数据分析报告时,如何用图正确地展现数据,需要考虑的问题中,不包括______。
如果已知一个Excel表格B1单元格是空格,B2单元格的内容为数值2,B3单元格的内容为数值3,B4单元格的内容为数值4.5,B5单元格的内容为数值5.5,B6单元格的内容为“=COUNT(B1:B5)”,那么,B6单元格显示的内容应为(55)。
计算机处理的数字数据有数值数据和字符数据之分。对信息处理技术员来说,它们的主要区别是______。
某社区有12个积极分子A~L,他们之间的联系渠道见下图。居委会至少需要通知他们之中(67)________________个人,才能通过联系渠道通知到所有积极分子。
根据某机构的统计与推测,我国人口中男性和女性各个年龄段的百分比如下图。根据该图,以下叙述中正确的是________________。
某商场统计了每个月的销售总额,坚持了多年。每次公布上月销售额时,还都采用同比和环比概念与历史数据进行对比。以下叙述中,正确的是________________。
在Excel2010中,设A1单元格中的值为20,A2单元格中的值为60,若在C1单元格中输入函数“=AVERAGE(A1,A2)”,按回车键后,,则C1单元格中的值为(
在Excel工作表中,已输入的数据如下所示:按回车键后,B2单元格显示的值为()。
与外存相比,内存的特点是(3)。
随机试题
A.花剥而兼腻苔B.黄腻苔C.薄白苔D.灰黑而干燥苔E.黑而滑润苔痰浊未化,正气已伤者,可见
男,6岁。摔倒时左手撑地,即出现左肘部疼痛、肿胀,桡动脉搏动减弱,应考虑()
张某、方某共同出资,分别设立甲公司和丙公司。2013年3月1日,甲公司与乙公司签订了开发某房地产项目的《合作协议一》,约定如下:“甲公司将丙公司10%的股权转让给乙公司,乙公司在协议签订之日起三日内向甲公司支付首付款4000万元,尾款1000万元在次年3月
双代号网络图的绘制、参数计算以及计划调整工作,以下说法正确的是()。
工程建设标准批准部门应当对工程项目执行强制性标准情况进行监督检查,监督检查的主要方式有()。
甲公司向乙银行借款1000万元,甲公司未按约定的借款用途使用借款。根据合同法律制度的规定,乙银行可以采取的措施有()。
你同同事一起现场执法,在执法过程中,执法对象认为不合理,因而阻挠执法,与执法人员发生争执和冲突,同时引发了不少市民前来围观。作为执法队员,你在现场会采取什么措施?怎么处理?
立冬日,南部沿海地区仍处在夏季的主要原因是()。
条件:是指同某一事物相关联的,对它的存在和发展发生作用的诸要素的总和。据此定义,下列判断正确的为( )
有三个关系R,S和T如下图所示,则由关系R和S得到关系T的运算是
最新回复
(
0
)