论坛: 编程破解 标题: 我在用C语言编写一六合彩程序时,使了多个随机函数,运行后把它关 复制本贴地址    
作者: sue [suweiqin]    论坛用户   登录
我在用C语言编写一六合彩程序时,使了多个随机函数,运行后把它关闭,然后再打开,发现里面选出来的号码和第一次运行时选出来的密码一模一样,关机后再运行,问题依旧,请问应如何修改?源程序如下:
#include <stdio.h>
#include <stdlib.h>

int x,y,z;
int a,b,c,d,e,f,g;
int k=925;


void run1(void);
void run367(void);
int run256(void);
void run2(void);
void run4(void);
void run5(void);
void run6(void);
void run7(void);
void run8(void);
void run9(void);

int main()
{

        run7();

      return 0;
}

void run367(void)
{
        a=rand();
        b=rand();
        c=rand();
        d=rand();
        e=rand();
        f=rand();
        g=rand();
        if((a/k+1)!=(b/k+1)&&(a/k+1)!=(c/k+1)&&(a/k+1)!=(d/k+1)&&(a/k+1)!=(e/k+1)&&(a/k+1)!=(f/k+1)&&(a/k+1)!=(g/k+1)&&(b/k+1)!=(c/k+1)&&(b/k+1)!=(d/k+1)&& (b/k+1)!=(e/k+1)&&(b/k+1)!=(f/k+1)&&(b/k+1)!=(g/k+1)&&(c/k+1)!=(d/k+1)&&(c/k+1)!=(e/k+1)&&(c/k+1)!=(f/k+1)&&(c/k+1)!=(g/k+1)&&(d/k+1)!=(e/k+1)&&(d/k+1)!=(f/k+1)&&(d/k+1)!=(g/k+1)&&(e/k+1)!=(f/k+1)&&(e/k+1)!=(g/k+1)&&(f/k+1)!=(g/k+1))
         printf("\n\n第%d注:[%d]\t[%d]\t[%d]\t[%d]\t[%d]\t[%d]\t[%d] ",x+1,a/k+1,b/k+1,c/k+1,d/k+1,e/k+1,f/k+1,g/k+1);
        else
         run367();
}

void run1(void)
{

       printf("\n\n\n预测今期南粤风采36选7的中奖号码是:");
       for(x=0;x<5;x++)
       run367();


       printf("\n按1键继续,按0键返回主菜单...");
       scanf("%d",&z);

       if(z==1)
          run1();
       if(z==0)
          run8();
       else
        {
         printf("\n你只能输入1或0:");
         scanf("%d",&z);
         run6();
        }
}

void run2(void)
{

       printf("\n\n\n预测今期南粤风采26选5的中奖号码是:");
       for(x=0;x<5;x++)
       run265();

      printf("\n按回1键继续,按0键返回主菜单...");
      scanf("%d",&z);

      if(z==1)
       run2();
       if(z==0)
         run8();
        else
        {
         printf("\n你只能输入1或0:");
         scanf("%d",&z);
         run5();
        }

}



int run265(void)
{

        a=rand();
        b=rand();
        c=rand();
        d=rand();
        e=rand();
        if((a/k+1)!=(b/k+1)&&(a/k+1)!=(c/k+1)&&(a/k+1)!=(d/k+1)&&(a/k+1)!=(e/k+1)&&(b/k+1)!=(c/k+1)&&(b/k+1)!=(d/k+1)&& (b/k+1)!=(e/k+1)&&(c/k+1)!=(d/k+1)&&(c/k+1)!=(e/k+1)&&(d/k+1)!=(e/k+1))
          printf("\n\n第%d注:[%d]\t[%d]\t[%d]\t[%d]\t[%d] ",x+1,a/k+1,b/k+2,c/k+2,d/k+3,e/k+2);
        else
  run265();
  return 0;
}

void run4(void)
{
    if(z==1)
       run1();
     if(z==2)
       run2();
      else
      {
       printf("\n错误!你只能选择1或者2");
       printf("\n请从新输入:");
       scanf("%d",&z);
       run4();
      }
}

void run5(void)
{


      if(z==1)
       run2();
       if(z==0)
         run8();
        else
        {
         printf("\n你只能输入1或0:");
         scanf("%d",&z);
         run5();
        }
}

void run6(void)
{


      if(z==1)
       run1();
       if(z==0)
         run8();
        else
        {
         printf("\n你只能输入1或0:");
         scanf("%d",&z);
         run6();
        }
}

void run7(void)
{

  printf("Microsoft 六合采预测系统  [Version 1.00.2003]\n");
  printf("(C)版权所有 1986-2003 Microsoft Crop.\n");
  printf("作者:***  Email: suweiqin2003@yahoo.com.cn\n");
  printf("\n\n\n请输入你的注册码:");
  scanf("%ld",&z);

  if(z==*********)
    run8();
    else
    run9();
}

void run8(void)
{
    printf("\n\n\n南粤风采中奖号码预测系统\n");
    printf("\n1.南粤风采36选7\n");
    printf("\n2.南粤风采26选5\n");
    printf("\n\n请选择其中一项:");
    scanf("%d",&z);

    if(z==1)
     run1();
     if(z==2)
      run2();
      else
      {
       printf("\n错误!你只能选择1或者2\n");
       printf("\n请从新输入:");
       scanf("%d",&z);
       run4();
      }
}

void run9(void)
{
  printf("\n\n\n请输入你的注册码:");
  scanf("%ld",&z);

  if(z==19860909)
    run8();
    else
    run9();
}


[此贴被 sue(suweiqin) 在 08月14日10时25分 编辑过]

地主 发表时间: 08/12 08:27

回复: shesh [shesh]   版主   登录
   srand( (unsigned)time( NULL ) );
   printf( "  %6d\n", rand() );

得先用时间发散一下


B1层 发表时间: 08/12 09:08

回复: 286 [unique]   版主   登录
因为系统每次采用的种子(seed)都相同,换个种子就行了。
方法见无班主的。

B2层 发表时间: 08/12 09:11

回复: tommy_he [tommy_he]   版主   登录
随机的采数不正确!

B3层 发表时间: 08/13 05:00

回复: mingming8 [mingming8]   论坛用户   登录
这么长,我能学会么?

B4层 发表时间: 08/14 22:14

回复: 286 [unique]   版主   登录
#include <stdio.h>
#include <stdlib.h>

int z;
int a[7],m;
int i,j,k;


void run(int n);

int main()
{
printf("Microsoft 六合采预测系统  [Version 1.00.2003]\n");
printf("(C)版权所有 1986-2003 20cn Co.,Ltd.\n");
printf("作者:***  Email: suweiqin2003@yahoo.com.cn\n");

z=0;
while(z!=1)
{
printf("\n\n\n请输入你的注册码:");
scanf("%ld",&z);
}

    srand((unsigned)time(NULL));   

printf("\n\n\n南粤风采中奖号码预测系统\n");
    
    
while (1)
{
printf("\n0.退出系统\n");
printf("\n1.南粤风采36选7\n");
printf("\n2.南粤风采26选5\n");
printf("\n\n请选择其中一项:");

scanf("%d",&z);

if (z==0)
{
printf("谢谢使用.\n\n");
break;
}
if (z==1)
run(7);
else
if (z==2)
run(5);
else
{
printf("\n错误!你只能选择0,1或者2\n");
printf("\n请重新输入:");
}
}
return 0;
}

void run(int n)
{
int mod=36;
if (n==5)
mod=26;

for (k=0;k<5;k++)
{
for (i=0;i<n;i++)
{
m=0;
while (m==0)
{
m=1;
a[i]=rand()%mod;
for (j=0;j<i;j++)
if (a[i]==a[j])
m=0;
}
}


printf("\n\n第%d注:",k+1);
for (i=0;i<n;i++)
printf("[%d]\t",a[i]);
}

if (n==7)
printf("\n\n\n预测今期南粤风采36选7的中奖号码是:");
else
printf("\n\n\n预测今期南粤风采26选5的中奖号码是:");

scanf("%d",&z);

if (z==286)
{
printf("乖乖,你重头奖了,快去领奖吧。\n\n\n\n");
exit(0);
}
else
printf("继续努力。\n\n\n\n");
}


B5层 发表时间: 08/15 11:21

论坛: 编程破解

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

粤ICP备05087286号