c/c++代码 No.15 用一个字节控制8个家电的开和关
来源:互联网 发布:长安大学人工智能 编辑:程序博客网 时间:2024/04/28 07:00
#include <iostream>#include <iomanip>#include <windows.h>#include <conio.h>using namespace std;const char items[8][20] = {"冰箱", "电视", "电脑", "空调", "暖壶", "台灯", "闹钟", "门帘"};void gotoXY(int x, int y) { COORD coord = {x, y}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);}void hideTheCursor() { CONSOLE_CURSOR_INFO cciCursor; HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); if(GetConsoleCursorInfo(hStdOut, &cciCursor)) { cciCursor.bVisible = FALSE; SetConsoleCursorInfo(hStdOut, &cciCursor); }}char* getBit(char n, char *str) { int size = 8 * sizeof(char); for (int i = size - 1; i >= 0; n >>= 1) { str[i--] = (n & 1) + '0'; } str[size] = '\0'; return str;}int toBit(char *str) { int n = 0; for (int i = 0; str[i] != '\0'; i++) { n <<= 1; n += str[i] - '0'; } return n;}bool getBitW(char n, int w) { int bitval = 1; while (w--) { bitval <<= 1; } return n & bitval;}int setBitW(char n, int w) { int bitval = 1; while (w--) { bitval <<= 1; } return n ^ bitval;}int main(void) { char status = 0; char *str = new char[101]; int m[8] = {0}; hideTheCursor(); system("cls"); str = getBit(status, str); cout << setfill('0') << setw(8 * sizeof(char)) << str << endl; for (int i = 0; i < 8; i++) { cout << items[i] << ':'; if (getBitW(status, i)) { cout << "开启"; for (int j = 0; j < m[i]; j++) { cout << '.'; } m[i]++; m[i] &= 7; } else { cout << "关闭"; } cout << endl; } while (true) { if (kbhit()) { int a = getch() - '0'; if (a >= 1 && a <= 8) { status = setBitW(status, a - 1); } } gotoXY(0,0); str = getBit(status, str); cout << setfill('0') << setw(8 * sizeof(char)) << str << endl; for (int i = 0; i < 8; i++) { if (getBitW(status, i)) { gotoXY(6,i + 1); cout << "开启"; for (int j = 0; j < 8; j++) { if (m[i] > j) { cout << '.'; } else { cout << ' '; } } m[i]++; m[i] &= 7; } else { gotoXY(6,i + 1); cout << "关闭"; for (int j = 0; j < 8; j++) { cout << ' '; } } } Sleep(50); } return 0;}
0 0
- c/c++代码 No.15 用一个字节控制8个家电的开和关
- C语言卷积和C语言互相关:数字信号处理中的卷积和互相关的C语言代码
- [讨论]一个关屏程序分别用c#.net cf 和 evc++实现的不同
- C语言如何分离一个数的高低位,如何将2个字节变成一个字节
- 用 487 字节的 C 代码实现 2048 游戏
- C++:如何把一个int转成4个字节?
- C++:如何把一个int转成4个字节?
- 控制网卡打开和关闭的C代码
- 编写C 代码,计算一个字节中被置 1 的位的个数(4种解法)
- 关与C、C++、VC 的说明
- 键盘的开、关控制
- 利用API函数控制光驱的开和关
- c#控制显示器和光驱的开与关
- 汇编写启动代码之关看门狗和设置栈和调用C语言和ICache
- 五.ARM裸机学习之汇编写启动代码之关看门狗,开iCache,汇编程序和C程序互相调用
- c/c++代码 No.8 转置位
- ANSI C的宽字节和汉字编码
- C的大小端和字节对齐
- Connection reset原因分析和解决方案
- 前言
- rails 代码组织
- 使用最火技术打造真实App
- LINUX(red hat7.0 ) 配置网络
- c/c++代码 No.15 用一个字节控制8个家电的开和关
- 一篇文章了解相见恨晚的 Android Binder 进程间通讯机制
- C# 大型对象堆学习总结
- pthread_mutex_lock
- Git学习文档之一 学习文档-原理
- iBET Slot Games Extended Rebate 1% Unlimited Bonus(iBET, iBET Malaysia Online Casino, iBET Slot Game
- The BASEDIR environment variable is not defined correctly
- 如何精简Unity中使用的字体文件
- hdu 1556 Color the ball