#include< stdio.h> #include<stdlib.h> #include<time.h> #define MANY 4 #define TIME_OUT 8/定义变量及函数/ int a,b,u; void game(); void ab(int answer[],int guess[]); void same(int num[]);/主日录/ void menu() { char choice,ch; do { do { system("cls"); printf("\t\t\t\t简单猜数字\n\n\n\n"); printf("\t\t\t\t1.开始游戏\n\n"); printf("\t\t\t\t2.使用说明\n\n"); printf("\t\t\t\t3.退出游戏\n\n"); printf("\t\t\t请输入(1-3):"); fflush(stdin); choice=getchar(); } while(choice!='1'&&choice!='2'&&choice!='3'); switch(choice) { case'1':
{
game();
break;
}
case'2':
{
system("cls");
printf("\t\t\t\t欢迎使用本程序\n\n\n");
printf("游戏说明:输入%d位数字,输入后会有提示XAYB,X表示有几个数字与答案数字相同且位置相同。\n ",MANY);
printf("Y表示有几位数字与答案数字相同但位置不正确。\n");printf("例如:答案数字是5764,如果输入5481,则会提示1AlB. \n");
printf("祝你愉快! \n\n");
printf("按任意键返回主目录.....n");
break;
}
case'3':
{
printf("硝定要退出吗? (y/n):");
fflush(stdin);
ch=getchar();
if(ch=='y'||ch=='Y')
exit(0);
else
continue;
}
}
} while(1); }
/游戏部分/ void game() { int guess[MANY],answer[MANY]; int times,i,m,j; time_t t; char wantplay,temp; srand((unsigned)time(&t)); do { /生成MANY个随机数/ do { u=0; for(i=0;i<MANY;i++)guess[i]=rand()%10; same(guess); } while(u); printf("请输入%d位不相同的数:\n" ,MANY); for(times=1;times<=TIME_OUT+1;times++) { /超过限定数次/ if(times==(TIME_OUT+1)) { printf("正确答案是:"); for(m=0;m<MANY;m++); printf("%d",guess[m]); printf("\n猜了%d次都没猜中",TIME_OUT); break; } printf("第%d次:",times);/玩家输入/ fflush(stdin); for(j=0;j<MANY;j++) { temp=getchar(); answer[i]=temp-48; /temp是char型/ } /检查输入有没有重复/ u=0; same(answer); if(u) { printf("你输入的数字有重复,请重新输入\n"); continue; } ab(answer,guess); /判断输入数字正确的个数/ if(a==MANY) { printf("恭喜!你猜对了"); break; } else printf("%dA%dB\n",a,b); }
printf("还想玩吗?(y/n):"); fflush(stdin); wantplay=getchar(); if(wantplay=='y'||wantplay=='Y') { system("cls"); continue; } else menu(); } while(wantplay=='y'||wantplay=='Y'); }
/判断输入的数或生成的数有没有重复的函数/ void same(int num[])
{
int i,j;
for(i=0;i<MANY-1;i++)
for(j=i+1;j<MANY;j++)
if(num[i]==num[j])
u=1;
}
/提示XAYB的函数/ void ab(int answer[],int guess[]) { int i,j; a=b=0; for(i=0;i<MANY;i++) for(j=0;j<MANY;j++) if(answer[i]==guess[j]) if(i==j) a++; else b++;
} /主函数/ void main() { menu(); }
#include<stdio.h>
#include<stdlib.h>//rand()函数、cls清理屏幕函数都用此头文件
#include<time.h>//time时间戳
void caidan()//这是一个菜单
{
printf("*********************\n");
printf("***** 开始:1 *****\n");
printf("***** 退出:0 *****\n");
printf("*********************\n");
}
void game()//这是游戏函数
{
int rat = rand()%100+1;
int num = 0;
while (1)
{
printf("请输入你的数字:>");
scanf("%d", &num);
if (rat < num)
{
printf("你猜大了\n");
}
else if (rat >num)
{
printf("你猜小了\n");
}
else
{
printf("恭喜你,你猜对了\n");
break;
}
}
system("cls");
}
int main()
{
int n = 0;
srand((unsigned)time(NULL));
do
{
caidan();
printf("请选择:>");
scanf("%d", &n);
switch (n)
{
case 0:printf("你已退出游戏\n"); break;
case 1:game(); break;
default:printf("请输入正确的数字\n");break;
}
} while (n);
return 0;
}
你好,可以参考此代码。