这个应该符合你的要求:
#include"stdio.h"
#include"stdlib.h"
#include"time.h"
int A=0,B=0;
int pd(int a[])/*判断是否有相同位相等与否*/
{int i,j,leap=1;
for(i=0;i<3;i++)
for(j=i+1;j<4;j++)
if(a[i]==a[j])
leap=0;
return leap;
}
int sl(int a)/*判断输入的数字是否合法*/
{int b=0,leap=0,dl[4];
if(a>=1000&&a<=9999)
{dl[0]=a/1000;
dl[1]=a%1000/100;
dl[2]=a%100/10;
dl[3]=a%10;
b=pd(dl);/*判断四位数的合法性*/
}
if(b==1)
leap=1;
return leap;
}
void chuli(int a[],int b[])/*判断猜测情况*/
{int i,j;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(a[i]==b[j])
{
printf("%d 对,",b[j]);
if(i==j)
printf("位置也对!\n");
else printf("但位置不对!\n");
}
}
void main()
{int a[4],b[4],k,m,z,i=0,j,c;
printf(" 这是一个猜数字的游戏,根据系统提示猜一个四位数。\n (注意:正确的数字是每一位都不重复的四位数)祝你好运~~\n");
while(1)
{srand((unsigned)time(NULL));
z=(rand()%100)*(rand()%100);
if(sl(z))
{k=z;
break;
}
}
for(j=3;j>=0;j--)
{ a[j]=k%10; k/=10;}
while(1)
{ printf("输入你猜的数字:\n");
scanf("%d",&m);
if(m==z)
{ printf("恭喜你答对了O(∩_∩)O\n");
break;
}
i++;
for(j=3;j>=0;j--)
{ b[j]=m%10; m/=10;}
chuli(a,b);
if(i==8)
{ printf("你都错了8次了,还要猜吗?(1:yes,2:no)\n");
scanf("%d",&c);
if(c==2)
break;
}
else if(i==15)
{
printf("别猜了,正确答案:%d\n",k);
break;
}
else
printf("猜的不正确,还差点,加油啊!\n");
}
}
这是一个猜数字游戏,已调试
#include"stdio.h"
#include"stdlib.h"
#include"time.h"
int A=0,B=0;
int pd(int a[])/*判断是否有相同位相等与否*/
{int i,j,leap=1;
for(i=0;i<3;i++)
for(j=i+1;j<4;j++)
if(a[i]==a[j])
leap=0;
return leap;
}
int sl(int a)/*判断输入的数字是否合法*/
{int b=0,leap=0,dl[4];
if(a>=1000&&a<=9999)
{dl[0]=a/1000;
dl[1]=a%1000/100;
dl[2]=a%100/10;
dl[3]=a%10;
b=pd(dl);/*判断四位数的合法性*/
}
if(b==1)
leap=1;
return leap;
}
void chuli(int a[],int b[])/*判断猜测情况*/
{int i,j;
for(i=0;i<4;i++)
if(a[i]==b[i])
B++;
for(i=0;i<4;i++)
for(j=i+1;j<4;j++)
if(a[i]==b[j])
A++;
printf("%dA%dB\n",A,B);
}
void main()
{int a[4],b[4],k,m,z,i=0,c;
printf("这是一个猜数字的游戏,根据系统提示猜其中B前面的数字表示数字正确而且位置正确的数的个数,而A前的数字表示数字正确而位置不对的数的个数,(注意:正确的数字是每一位都不重复的四位数)祝你好运~~\n");
while(1)
{srand((unsigned)time(NULL));
z=(rand()%100)*(rand()%100);
if(sl(z))
{k=z;
break;
}
}
a[0]=k/1000;
a[1]=k%1000/100;
a[2]=k%100/10;
a[3]=k%10;
while(1)
{printf("输入你猜的数字:\n");
scanf("%d",&m);
b[0]=m/1000;
b[1]=m%1000/100;
b[2]=m%100/10;
b[3]=m%10;
chuli(a,b);
if(i==8)
{printf("你都错了8次了,还要猜吗?(1:yes,2:no)\n");
scanf("%d",&c);
if(c==2)
break;
}
else if(i==15)
printf("正确答案:%d\n",k);
else if(B==4)
{printf("恭喜你答对了O(∩_∩)O\n");
break;
}
else
printf("猜的不正确,还差点,加油啊!\n");
A=0;B=0;
i++;
}
}
# include
void main()
{
int a,b,c=0,i=0,r=0; /*分别定义玩家输入的数、电脑产生的随机数、玩的次数、玩家胜利的次数、电
脑胜利的次数*/
char D; /*定义y或Y的字符*/
clrscr(); /*清空*/
printf("Welcome Wan Cai Shu You Xi\n"); /*欢迎玩猜数游戏*/
printf("Xiang Kai Shi Ma?Y/N\n"); /*想开始吗?选择Y或N*/
D=getch(); /*输入Y或N*/
while(D=='y'||D=='Y') /*判断D等于y,或,D等于Y*/
{
CL:while(c<3) /*判断C小于3,如果小于执行下列程序*/
{
b=rand()%100; /*产生一个100以内的随机树*/
printf("Qing Shu Ru 1~100 Yi Nei De Shu\n"); /*请输入1到100以内的书*/
scanf("%d",&a); /*从键盘上输入一个数*/
if(a==b) /*如果a等于b*/
printf("Ni Cai Dui Le\n"),i=i+1; /*你猜对了,并累加i*/
else /*否则*/
printf("Sorry,Ni Cai Cuo Le\n"),r=r+1; /*对不起,你猜错了,并累加r*/
printf("Shui Ji Shu Shi%d,\n",b); /*随机数是*/
c=c+1; /*累加C*/
}
c=0; /*重新把赋0*/
if(i>r) /*判断i是否大于r*/
printf("Ni WIN\n"); /*你赢了*/
else /*否则*/
printf("Computer WIN\n"); /*电脑赢了*/
i=0; /*重新把i赋0*/
r=0; /*重新把r赋0*/
printf("Hai Xiang Zai Wan Ma?Y/N"); /*还想在玩吗?选择Y或N*/
D=getch(); /*输入Y或N*/
while(D=='y'||D=='Y') /*判断D等于y,或,D等于Y*/
{
goto CL; /*执行CL指向的程序*/
}
exit(); /*退出*/
}
}
rand()%x+100,得到一个至少3位,在100+x以下的数,题的后半部分没看懂。
楼主,你把分都给我吧,我告诉你,请自己到GOOGLE去搜索吧,不会有人喜欢写这些游戏的,真的。
我有,我以前写过,哈哈,==给你贴出来