题目:输入一个随机四位数,你猜这个四位数。
你猜的结果与这个四位数进行比较,如果所在的位和
这个位上的数字都相同,用A表示。如果只是数字相同,
而位置不同,则用B表示。你只有10次机会!如:
随机产生的数字为:4325
你猜的数 提示你
4586-------------1A0B
3524-------------0A4B
.
.
.
你猜的结果与这个四位数进行比较,如果所在的位和
这个位上的数字都相同,用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;
}