您的位置:首页 > 编程语言 > C语言/C++

猜数字游戏(C语言)

2014-04-19 16:20 459 查看
题目:输入一个随机四位数,你猜这个四位数。

你猜的结果与这个四位数进行比较,如果所在的位和

这个位上的数字都相同,用A表示。如果只是数字相同,

而位置不同,则用B表示。你只有10次机会!如:

随机产生的数字为:4325

你猜的数 提示你

4586-------------1A0B

3524-------------0A4B

.

.

.


直到在10次内产生4A0B,则显示你胜利。

过程分析:

1.首先随机产生四个数(不重复)。如:4325

1)先产生一个随机数放在数组a[0]中。如:a[0]=4

2) 再产生一个与第一个不重复的随机数放在a[1]中。如:a[1]=3

3) 再用与第二步相同的办法产生第三个和第四个数放在a[2],a[3]中,分别不重复。如 a[2]=2,a[3]=5

2.用户输入一个四位数。如:4586

1)判断,并确定这个四位数没有重复。有重复则给出提示信息

2)将这个四位数的每一位拆出来放在数组b[4]中。

千位放在b[0],百位放在b[1],十位b[2],个位b[3].

3)分别比较这两数组中的值及位置是否相同。并给出提示信息。

int Acount,Bcount;

Acount=Bcount=0;

for(int i=0;i<4;i++)

for(int j=0;j<4;j++)

{

if(a[i]==b[j])

if(i==j) Acount++;

else Bcount++;

}

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define MAX 4
int a[MAX];
int b[MAX];
int Acount,Bcount;
void splitNum(int nPut)
{
	a[0]=nPut/1000;
	a[1]=nPut%1000/100;
	a[2]=nPut%100/10;
	a[3]=nPut%10;

}
void judgeRepeat(int a[MAX])
{ 
  int temp=0;
  for(int i=0;i<4;i++)
	for(int j=i+1;j<4;j++)
	{ 
		if(a[i]==a[j])  temp++;
	}
  if(temp)
	printf("提示:你输入的数中有重复!\n");
    
}
void randNumber()
{ 
  int tem[10]={0};
  int a;
  b[0]=rand()%9+1;
  for(int j=1;j<MAX;j++)
  {
   do
   {
     a=rand()%10;
   }while(a==b[j-1]||a==b[j-2]||a==b[j-3]);

   b[j]=a;

  }
  /* 
  b[0]=rand()%9+1;
  b[1]=rand()%10;
  b[2]=rand()%10;
  b[3]=rand()%10; */
 
}
void printRandNum()
{
  printf("随机产生的数为:");
  for(int i=0;i<MAX;i++)
  {
    printf("%d",b[i]);
  }
  printf("\n"); 

}
void compareNum(int a[MAX],int b[MAX])
{
 
    for(int i=0;i<4;i++)
        for(int j=0;j<4;j++)
         {
           if(a[i]==b[j])
               if(i==j)   Acount++;
                else      Bcount++;
         } 
}
int main(int args,char *agrv[])
{  int nPut;
   int count=0;
   char cYN;
   bool age=true;
   bool fail=true;
 srand(time(NULL));
 randNumber();     /*随机产生的一个四位数*/
 while(age&&count<10&&fail)
 {    

      Acount=Bcount=0;
	  printf("请输入一个不重复的四位数:");
	  scanf("%d",&nPut); 
	  count++;
	  splitNum(nPut);
	  judgeRepeat(a);
	  compareNum(a,b);
	  if(Acount==4)
	  { age=false;}
	  printf("%dA%dB\n",Acount,Bcount);
	  printf("想知道这个数吗(Y/N)?  那样你就输了!还是自己努力吧!\n");
	  getchar();
	  cYN=getchar();
	  if(cYN=='Y'||cYN=='y')   fail=false;
 }
 if(count==10)
 {
 
   printf("你输入的次数已经超过了10次!下次再来吧!");
 }
 else if(!fail)
 {
  printRandNum();
  printf("别灰心再来吧!");
 }
  else
   printf("哇!你好厉害哟,赢了!\n接着来吧!\n");
  return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: