不用时间种子,用初始化内存地址做出6位的验证码!

来源:互联网 发布:建筑动画制作软件 编辑:程序博客网 时间:2024/05/20 20:48

/*************************************************
 File name : random.c
 Create date : 2016-07-13 05:18
 Modified date : 2016-07-13 05:18
 Author : WangJiaXiang
 Email : 952519932@qq.com
 
 ***********************************************/
#include<stdio.h>
   
int main(int argc,char **argv)
{
 double a;
int b=1,c=4,tiao=0;
char buf[8],test[6];
sprintf(buf,"%x",&a);//把初始化的 内存a 以16进制的方式 强制转换为字符串
while(b<7)
if( buf[++b]>='a' && buf[b]<='z')//由于16进制最大值为 小写 f  ,把部分小写字母的 转换为大写
{
tiao++;
if(tiao==2 || tiao==4)//对出现的 第二位 和第四位的 小写字母 转换成大写 
{
buf[b]-=32;
}
}
b=1;
while(b<7)
printf("%c",buf[++b]);
printf("\n");
printf("please input code\n");
b=0;
while(c)
{
test[b]=getchar();
if(test[b]!=buf[b+2])
{
printf("input error,you have left %d times\n",--c);
b=0;
while( (test[b]=getchar()) != '\n');
}
else if( test[b] == buf[b+2])
{
b++;
if(b>=6)
{
printf("Hellow World !!!\n");
return 0;
}
}
}
printf(" boom!!! \n");
return 0;
}

0 0