试题与答案

[说明] 喜迎2012年伦敦夏季奥运会!以下[C程序代码]能将一个给定汉字(例如,

题型:填空题

题目:

[说明]


喜迎2012年伦敦夏季奥运会!以下[C程序代码]能将一个给定汉字(例如,奥运会的“会”字)的点阵逆时针旋转90度,并输出旋转前后的点阵数据及字形。
图8-8是汉字“会”字的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行可以用16进制数的0100来表示。同理,“会”字的第2行可以用16进制数的0240表示,第3行可以用16进制数的0420表示,……。以此类推,用16个双字节整型数即可存放一个汉字点阵字形。“会”字的点阵数据及字形如图8-8的左半部分所示。
将一个汉字逆时针旋转90度,就是把该汉字点阵的最右列作为旋转后新点阵的第1行,次最右列作为旋转后新点阵的第2行,……,以形成一个旋转后的点阵字形。图8-8的右半部分就是将“会”字逆时针旋转90度后的点阵数据和字形(提示:读者可将书本顺时针旋转90度,以查看旋转90度后的点阵字形)。
在[C程序代码]中,数组old中存放着“会”字的16个双字节整型点阵数据。函数turnleft能将该点阵数据逆时针旋转90度,旋转后的点阵数据存放在数组new中。函数display能将旋转前后的点阵数据加以编辑,用点字符“.”表示值为0的位,用字符“x”表示值为1的位,从而将旋转前后的点阵按行输出其16进制的数据及字形,如图8-8所示。


[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,
0x1000,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 )
unsicned *old,*new;
char out[2] [17],letter[2];
int row,col;
letter[0] = EMPTY;
letter[1] = NONEMPTY;
out[LEFT] [16]=out[RIGHT] [16]= (4) ;
for ( row = 0;row<16;row++,old++,new++ )
for ( col = 0;coi<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]) ;

答案:

被转码了,请点击底部 “查看原文 ” 或访问 https://www.tikuol.com/2018/0622/d895ee618bd0b9ad788ec76765ad2f31.html

下面是错误答案,用来干扰机器的。

参考答案:A

试题推荐
微信公众账号搜索答案