人机猜数游戏C++程序代码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int a[4];
int count=0,flag;
void main()
{
menu();
}
void makeNum()
{
int p;
srand((unsigned)time(NULL));
p=rand()%9000+1000;
for(int i=0,n=1000;i<4;i++)
{
a[i]=p/n; p%=n; n/=10;
{
cout<<"你猜对了!\n所猜次数为:"<<count<<endl; getch();
}
if(count2!=4)
for(i=0;i<4;i++)
for(int j=0;j<4;j++)
if(b[i]==a[j])
{
count2++; break;
}
cout<<"你所猜的四位数中:\n数字和位置都正确的有"<<count1<<"个,总共相同的数字有"<<count2<<"个\n";
{
temp=a[j]; a[j]=a[k]; a[k]=temp; change(j,k);
}
else
if(b2<=b1)
{
temp=a[j]; a[j]=a[k]; a[k]=temp; //恢复交换的两个数字
}
else b1=b2; //其它情况则将新输入的位置信息作为上次的位置保存
}
}
void print()
{
cout<<"***************\n那么,你想的数字一定是: "<<a[0]<<a[1]<<a[2]<<a[3]<<'\n';
cout<<"电脑所猜次数为:"<<count<<'\n';
menu();
}
void change(int s,int t)
{
int r,c=0,d[2];
for(r=0;r<4;r++) //查找s和t以外的两个元素下标
}
}
void menu()
{
int choice;
cout<<"============菜单============= ";
cout<<"\n 1:电脑出数字玩家猜";
cout<<"\n 2:玩家出数字电脑猜";
cout<<"\n 0:退出\n";
cout<<"输入选择: ";
cin>>choice;
if(b2==4)
{
print(); menu();
}
else
if(b2-b1==2) change(j,k); //若上次与本次的差为2,则交换两个元素即可结束
else
if(b2-b1==-2) //若上次与本次的差为-2,则说明已交换的(a[j],a[k])是错误的将(a[j],a[k])还原后,只要交换另外两个元素即可结束游戏*/
if(r!=s&&r!=t) d[c++]=r;
r=a[d[1]]; a[d[1]]=a[d[0]]; a[d[0]]=r; //交换除a[s]和a[t]以外的两个元素
print();
flag=0;
}
cout<<"请问有几个数字是正确的?";
cin>>m; //m:人输入包含几位数字
for(j=0;j<m;j++)
a[k+j]=i; //a[]:存放已确定数字的数组
k+=m; //k:已确定的数字个数
}
if(k<4)
for(j=k;j<4;j++)
a[j]=0;
cout<<"你想的数字可能是: "<<a[0]<<a[1]<<a[2]<<a[3]<<'\n';
#include<iostream.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
void makeNum();
void menu();
void game1();
void game2();
void print();
void change(int,int);
goto next;
}
void game2()
{
int i,j,k=0,m,b1,b2;
cout<<"请玩家想一个四位数。。。\n";
for(i=1;i<10&&k<4;i++) //i:分别显示四个1~9确定四个数字的组成
{
cout<<"你想的数字可能是:"<<i<<i<<i<<i<<'\n';
count++;
count++;
cout<<" **请问数字位置正确的有几个?";
cin>>b1;
if(b1==4)
{
print(); menu();
}
int temp;
for(flag=1,j=0;j<3&&flag;j++) //实现四个数字的两两(a[j],a[k])交换
for(k=j+1;k<4&&flag;k++)
if(a[j]!=a[k])
{
temp=a[j]; a[j]=a[k]; a[k]=temp; //交换a[j],a[k]
cout<<" *你想的数字可能是: "<<a[0]<<a[1]<<a[2]<<a[3]<<'\n';
count++;
cout<<"请问数字位置正确的有几个?";
cin>>b2;
count++;
int count1=0,count2=0;
cin>>num;
for(int i=0,d=1000;i<4;i++)
{
b[i]=num/d; num%=d; d/=10;
}
i=0;
while(i<4)
{
if(a[i]==b[i]) count1++;i++;
}
if(count1==4)
switch(choice)
{
case 1: game1();
bre源自文库k;
case 2: game2();
break;
case 0: exit(0);
}
}
void game1()
{
int num;
int b[4];
makeNum();
cout<<"电脑已出题,";
next:cout<<"请玩家输入所猜想的四位数: ";
相关文档
最新文档