帮我看看我的C语言程序有什么问题 为什么总是不对

来源:百度知道 编辑:UC知道 时间:2024/09/28 15:22:10
我想要实现的功能是利用C来计算双色球抽多少次奖才能抽到自己的号,可是程序编译没有问题,怎么算都在100以内 怎么可能呢? 哪位仁兄帮我看看 在线等!
#include "stdio.h"
#include "time.h"
#include "stdlib.h"
void main()
{
int i,p,b[5],a[5],x,j,sum=0;
printf("请输入蓝色球号码(1-16),输完后请按回车键\n");
scanf("%d",&x);
printf("请输入红色球号码(1-33),输完后按回车输下一位\n");
for(i=0;i<6;i++)
scanf("%d",&b[i]);
srand(time(NULL));
do
{
p=1+rand()%16;
sum=sum+1;
}while(p!=x);
for(i=0;i<6;i++)
{
a[i]=1+rand()%33;
for(j=0;j<i;j++)
{
if(a[i]==a[j])
{
i--;
break;
}
}
if(a[i]!=b[0]&&a[i]!=b[1]&&a[i]!=b[2]&&a[i]!=b[3]&&a[i]!=b[4]&&a[i]!=b[5])
{
i--;
sum=sum+1;
}
}
printf("%d",sum);
}

我想如果要选到你所选的号的话,首先每一个数都得相同才是.我下面的程序能判断每一个是否相同,而后判断是否进行下一轮选号,你可以看它的输出结果.但似乎没有结果,可能次数实在太多.
我想这就应该有一个选号的规则在里面,不然如果太随机的话,这个运算量似乎太大了.不清楚要算到什么时候才算一个完.
#include "stdio.h"
#include "time.h"
#include "stdlib.h"
void main()
{
int i,p,b[5],a[5],x,j,sum=0;
printf("请输入蓝色球号码(1-16),输完后请按回车键\n");
scanf("%d",&x);
printf("请输入红色球号码(1-33),输完后按回车输下一位\n");
for(i=0;i<6;i++)
scanf("%d",&b[i]);
srand(time(NULL));
/*do
{
p=1+rand()%16;
sum=sum+1;
}while(p!=x);*/
while(1)
{
p=1+rand()%16;
for(i=0;i<6;i++)
a[i]=1+rand()%33;
/* for(j=0;j<i;j++)
{
if(a[i]==a[j])
{
i--;
break;
}
} */
//if(a[i]!=b[0]&&a[i]!=b[1]&&a[i]!=b[2]&&a[i]!=b[3]&&a[i]!=b[4]&&a[i]!=b[5])
if(a[i]==b[0]&&a[i]==b[1]&&a[i]==b[2]&&a[i]==b[3]