论坛: 编程破解 标题: 求解…… 复制本贴地址    
作者: radom [f_h]    论坛用户   登录
代码:

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

void main()
{
  int EAX=0,EBX=0,len;
  char name[50]={0};
  char password[50]={0};
/*这个字符串本来没用到的,可是为什么,去掉与不去掉,程序运行的结果不一样呢?*/
  printf("Please input your name:");
  scanf("%s",name);
  len=strlen(name);
  for (int i=0;i<len;i++)
  {
    EAX=name[i]^(i+1);
    EBX+=EAX;
  }
  EAX*=6;
  EBX<<=7;
  EAX+=EBX;
  printf("Your password is: %lX\n",EAX);
 
}
--------------------------------------------------------------------------------




不解。。。


[此贴被 radom(f_h) 在 07月18日10时59分 编辑过]

地主 发表时间: 08-07-18 10:58

回复: jhkdiy [jhkdiy]   版主   登录
是不是你的环境有问题啊,我在DevC++里编译运行没问题啊,另外你说的字符串是
char password[50]={0};
还是
printf("Please input your name:");
不过两个我都试过,不影响运行结果。

代码:

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
  int EAX=0,EBX=0,len;
  char name[50]={0};
  //char password[50]={0};
/*这个字符串本来没用到的,可是为什么,去掉与不去掉,程序运行的结果不一样呢?*/
  printf("Please input your name:");
  scanf("%s",name);
  len=strlen(name);
  for (int i=0;i<len;i++)
  {
    EAX=name[i]^(i+1);
    EBX+=EAX;
  }
  EAX*=6;
  EBX<<=7;
  EAX+=EBX;
  printf("Your password is: %lX\n",EAX);
  system("pause");
  return 0;
}



B1层 发表时间: 08-07-18 20:47

回复: radom [f_h]   论坛用户   登录
我指的是password[]那个。
如果去掉
char password[50]={0}
时程序运行的结果是
Please input your name:123456
Your password is: 9D79120
不去掉,运行的结果是:
Please input your name:123456
Your password is: A099120
为什么啊?这个不存在什么环境变量的问题呀。

已解:
正确的应该是9120
前面几位是因为LX,的原因造成。把printf中改为X就可以

[此贴被 radom(f_h) 在 08月29日10时50分 编辑过]

B2层 发表时间: 08-07-18 21:32

回复: NetDemon [netdemon]   ADMIN   登录
UNIX下的结果一样的,都是9120


B3层 发表时间: 08-07-19 02:40

回复: jhkdiy [jhkdiy]   版主   登录
建意你用其他的编译器试试。

B4层 发表时间: 08-07-19 10:12

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号