8-2-4.c

来自「2005软件工程师考试下午编程题源代码」· C语言 代码 · 共 42 行

C
42
字号
/*中国系统分析员顾问团,http://www.csai.cn*/
/*程序员下午考试指南书籍源码*/

#include <stdio.h>
#define EMPTY '.'
#define NONEMPTY 'X'
#define LEFT 0
#define RIGHT 1

turnleft(unsigned  old[], unsigned  new[]) {
int row,k;
for ( row=0; row<16; row++ )
for ( k=0, new[row] = 0; k<16; k++ )
new[row] |= (( old[k]>> row ) &1) << 15-k ;
}

main (){
static unsigned old[16] = { 0x1040,0x1040,0x1048,0xFDFC,0x2040,0x2844,0x4BFE,
0x7C80,0x0888,0x09FC,0x1C08,0xE810,0x4890,0x0860,0x0820,0x0810};
unsigned new[16];
turnleft( old,new );
display( old,new );
}



display(unsigned  *old, unsigned  *new ){
char out[2][17],letter[2];
int row,col;
letter[0] = EMPTY;
letter[1] = NONEMPTY;
out[LEFT][16] = out[RIGHT][16] = '\0';
for ( row = 0; row<16; row++,old++,new++ ){
for ( col = 0; col<16; ++col ){
out[LEFT][col] = letter[ (*old>>(15-col)) &1];
out[RIGHT][col] = letter[ (*new>>(15-col)) &1];
}
printf("\n %4x %s ",*old,&out[LEFT][0]);
printf(" %4x %s",*new,&out[RIGHT][0]);
}
}	 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?