阅读以下函数说明和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]); } }