这是我以前自己写个猜数游戏,里面有菜单功能,和你的要求完全一样。你要是要了给你了,改你的太费事了。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define M 10
int a[M],b[M],c[M];
void menu(void); /*函数声明*/
void help(void);
void game(void);
void testgame(void);
void help(void) /*帮助模块*/
{ printf(" 帮助 \n");
printf(" 猜数游戏中输入一个n位数,系统将输出果mAnB. \n");
printf(" 结果B是输入的数中有几个数字存在答案中,但是\n");
printf(" 位置与答案中位置不一致,它的个数用n表示,A的\n");
printf(" 个数m则表示输入的数中有几个数字存在答案中 \n");
printf(" 且位置也与答案中一致的个数。可以通过测试看\n");
printf(" 看。共有10次推理机会,系统将判断你最终结果。\n");
printf(" 游戏难度表示要推理数的位数。 \n");
printf(" 游戏过程中输入0退出本次游戏。 \n");
printf("\n");
}
void game(void) /*游戏模块*/
{
int n,i,j,cnt=0,temp;
int bn=0,an=0,k;
srand((unsigned)time(NULL));
printf("请选择游戏难度1~4\n");
scanf("%d",&n);
printf("你有10次机会猜这个%d位的随机数\n",n);
for(i=0;i<n;i++) /*生成n位随机数*/
{ loop: temp=c[i]=rand()%10;
if(temp!=0&&i>0)
{for(j=0;j<=i;j++)
if(temp==c[j]) {break; goto loop;}
}
if(temp==0) goto loop;
a[i]=temp;
}
for(k=0;k<10;k++)
{
an=bn=0;
printf("第%d次: ",k+1);
scanf("%d",&cnt);
if(cnt==0) break;
for(i=0;i<n;i++){
temp=cnt%10;
b[n-1-i]=temp;
cnt/=10;
if(cnt==0) break;
}
for(i=0;i<n;i++) /*确定an*/
if(b[i]==a[i]) an++;
for(i=0;i<n;i++) /*确定bn*/
for(j=0;j<n;j++)
if(b[j]==a[i]) bn++;
bn=bn-an;
printf("%dA%dB\n",an,bn);
if(an==n) { printf("棒极了!\n"); break;}
}
if(an>0&&an<n) printf("失败,下次继续努力!\n");
}
void testgame(void) /*测试游戏模块*/
{
int n,i,j,cnt=0,temp;
int bn=0,an=0,k;
srand((unsigned)time(NULL));
printf("请选择游戏难度1~4\n"); /*游戏难度表示要猜数的位数*/
scanf("%d",&n);
printf("你有10次机会猜这个%d位的随机数\n",n);
for(i=0;i<n;i++)
{ loop: temp=c[i]=rand()%10;
if(temp!=0&&i>0)
{for(j=0;j<=i;j++)
if(temp==c[j]) {break; goto loop;}
}
if(temp==0) goto loop;
a[i]=temp;
} /*生成n位随机数*/
printf("答案是:\n");
for(i=0;i<n;i++) printf("%d",a[i]);
printf("\n");
for(k=0;k<10;k++)
{
an=bn=0;
printf("第%d次: ",k+1);
scanf("%d",&cnt);
if(cnt==0) break;
for(i=0;i<n;i++){
temp=cnt%10;
b[n-1-i]=temp;
cnt/=10;
if(cnt==0) break;
}
for(i=0;i<n;i++)
if(b[i]==a[i]) an++;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(b[j]==a[i]) bn++;
bn=bn-an;
printf("%dA%dB\n",an,bn);
if(an==n) { printf("棒极了!\n"); break;}
}
if(an>0&&an<n) printf("失败,下次继续努力!\n");
}
void menu(void) /*菜单模块*/
{
printf(" 逻辑推数游戏! \n");
printf(" $--------------------------------$\n");
printf(" $ 作者: 王博 $\n");
printf(" $--------------------------------$\n");
printf(" $ 1:帮助. $\n");
printf(" $ 2:开始游戏. $\n");
printf(" $ 3:带答案进行游戏测试. $\n");
printf(" $ 4:退出游戏. $\n");
printf(" $--------------------------------$\n");
}
int main(void) /*主函数*/
{ int i;
while(1){
menu();
scanf("%d",&i);
switch(i) {
case 1 : system("cls");help();break;
case 2 : game(); break;
case 3 : testgame();break;
default : break;
}
if(i==4) break;
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考