c语言 有问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 06:35:02
我想遍一个“猜数字”的游戏
思路是这样的
1 产生4个随机数
2 输入4个数字与1中的数字比较
但是现在的结果是每次都是0000
好像是产生随机数的地方出了问题,但是我不知道问题在哪里
# include <stdio.h>
# include <time.h>
# include <stdlib.h>
int a[4],b[7],e[4],i,j,c,d;
int creat();
int main ()
{

int creat ();
printf("Please key in four numbers, just try!\n");
do
{
c=0;d=0;
scanf("%d%d%d%d",&a[0],&a[1],&a[2],&a[3]);
for (i=0;i<4;i++)
{
if (a[i]==b[i]) c++;
if (a[i]==b[i+1]||b[i+2]||b[i+3]) d++;
}
printf (" %d%d%d%d A%d B%d\n",a[0],a[1],a[2],a[3],c,d);
}while(c!=4);
getchar();getchar();getchar();
}
int creat ()
{
for (i=0;i<4;i++)
{
srand (time(NULL));
e[i]=rand()%10;
for(j=i;j>0;j--)
{

if (e[j]==e[i])
{
i--;
break;
}
}
}
for (i=0;i<4;i++) b[i

程序乱七八糟的,这样改了,虽然能运行,但不一定能完成要求的功能

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

int a[4],b[7],e[4],i,j,c,d;
int creat();
int main ()
{
//int creat (); //已经在main函数前面声明了,这里不需要再声明了
creat();//////////要直接调用creat()函数
printf("Please key in four numbers, just try!\n");
do
{
c=0;d=0;
scanf("%d%d%d%d",&a[0],&a[1],&a[2],&a[3]);
for (i=0;i<4;i++)
{
if (a[i]==b[i]) c++;
if (a[i]==b[i+1]||b[i+2]||b[i+3]) d++;
}
printf (" %d%d%d%d A%d B%d\n",a[0],a[1],a[2],a[3],c,d);
}while(c!=4);
getchar();//getchar();getchar();//不需要那么多
}

int creat ()
{
srand (time(NULL)); ///放在for循环外面
for (i=0;i<4;i++)
{
e[i]=rand()%10;
for(j=i-1;j>0;j--)
{
if (e[j]==e[i])
{
i--;
break;
}
}
}
for (i=0;i<4;i