|
![]() | 作者: Error [fairy_pic]
![]() |
登录 |
/*10 进制转换 2 进制 */ #include "stdio.h" #include "math.h" #define ENTER 13 #define ESC 27 #define BINS 32767 int main() { int source; int bin[BINS],temp[BINS]; int i=0,j; unsigned int last=0; system("cls"); puts("Input:"); source=getch(); while(source!=ENTER) /* 为什么不能同时判断 ESC 和 ENTER,单判断一个却可以 while((source!=ESC)||(source!=ENTER)) */ { if((source=='0')||(source=='1')) { printf("%c",source); source=source-48; bin[i]=source; i++; } source=getch(); } j=i; puts("\nYour put is: "); for(i=0;i<j;i++) { printf("%d",bin[i]); last+=(bin[i]*pow(2,j-i-1)); } puts("\n"); printf("\nTo__ %u",last-1);/*为什么要减1*/ exit(0); } [此贴被 Error(fairy_pic) 在 02月22日11时05分 编辑过] |
地主 发表时间: 05-02-21 15:11 |
![]() | 回复: kert_t8 [kert_t8] ![]() |
登录 |
xx!=ENTER || xx!=ESC 岂不是永真??换成(xx!=enter && xx!=esc)试试 你想表达(是ENTER 或者 是ESC 就不做什么)应该要使用(!(==ENTER && ==ESC)) NOT(a AND b) = NOT a AND NOT b 德摩根定律 为什么减1?? ![]() 这个程序测试结果是对的吗? |
B1层 发表时间: 05-02-21 16:09 |
![]() | 回复: Error [fairy_pic] ![]() |
登录 |
结果是对的! 呵呵,是应该用 && 的。倒。 [此贴被 Error(fairy_pic) 在 02月21日16时17分 编辑过] |
B2层 发表时间: 05-02-21 16:16 |
![]() | 回复: 286 [unique] ![]() |
登录 |
结果对吗? 在读取按键是,ESC处理的是扫描码,ENTER处理的是ASCII码。 |
B3层 发表时间: 05-02-21 17:16 |
![]() | 回复: S_Admin [f_h] ![]() |
登录 |
结果是对的! 不输入任何数据,直接按 ENTER 时,会出现结果 65535.(程序没有控制好,还要一个判断语句)! 我可是不懂你说的扫描码与ASCII码的意思!烦请 286 指导!谢谢! |
B4层 发表时间: 05-02-21 21:18 |
![]() | 回复: 286 [unique] ![]() |
登录 |
DOS系统在处理键盘码的时候,要处理两个码,一个是扫描码,一个是ASCII。 对于可显示字符,比如数字,大小写字母,符号,扫描码为0,ASCII即每个字符对应的ASCII。 对于向上,向下,PGDN,PGUP等控制键都是ASCII为0,看扫描码。 处理方法可看本版我写的一个“俄罗斯方块游戏”的处理说明。键盘缓冲区可看《跟我学汇编》中相键盘缓冲区内容。 |
B5层 发表时间: 05-02-22 08:52 |
![]() | 回复: Error [fairy_pic] ![]() |
登录 |
呵,怪不得我的一个小程序,在输出 ASCII 码值时,那些 方向键都是 00** 的形式呢。 左:0075 右:0077 呵..... |
B6层 发表时间: 05-02-22 12:23 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号