论坛: 编程破解 标题: 多谢286 /*10进制转换 2 进制 */有两个问题如下:问题已解决! 复制本贴地址    
作者: 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号