加了得分榜,没写排序,没时间了。自己加一下就OK
#include
#include
#include
#include
int score=0;
void SELECT(int);
void Guess(int,int);
void Select();
void letsgo();
void NB(int);//以上的是函数原型
struct PLAYER
{
char name[10];
int plscore;
};
void save()
{ printf("您的得分是%i",score);
PLAYER player;
printf("请输入姓名:");
scanf("%s",player.name);
player.plscore=score;
FILE*fp;
if((fp=fopen("record.txt","ab"))==NULL)
{
printf("不能打开文件!");
exit(0);
}
fwrite(&player,sizeof(PLAYER),1,fp);
printf("记录保存完毕!");
fclose(fp);
}
void print()
{
printf("分数榜:");
FILE*fp;
if((fp=fopen("record.txt","rb"))==NULL)
{
printf("不能打开文件!");
exit(0);
}
PLAYER player;
while(fread(&player,sizeof(PLAYER),1,fp)==1)
{
printf("\n姓名:%s\n",player.name);
printf("分数:%i\n",player.plscore);
}
fclose(fp);
}
void main()
{
char end;
printf("\t\t欢迎光临!!\n\t在这里我将来测试你的运气!\n");
printf("请你猜下数字,但机会就只有三次!!\n");
printf("\n 1、开始游戏^__^\n 2、我是倒霉鬼,我不玩\n 3、查看分数榜");
printf("请选择1或2\n");
Select();
printf("\n按任意键退出");
fflush(stdin);
end=getchar();
if(score>0)
save();
printf("Thanks For Playing\2 886\n");
}
void Select()
{
int s;
static int lihai=0;
fflush(stdin);
scanf("%d",&s);
switch(s)
{
case 1:
letsgo();break;
case 2:
printf("唉,你不想玩,我就不逼你咯\n");exit(0);
case 3:print();
break;
default:
lihai++;
if(lihai==3||lihai==5)
{
NB(lihai);
break;
}
printf("你输入的是什么啊!重新输入< 1或 2>\n");
Select();
}
}
void letsgo()
{
int select;
printf("请你选择猜数字的难度\n");
printf("1、简单->猜测 0到 9的数字\n");
printf("2、一般->猜测 0到 99的数字\n");
printf("3、困难->猜测 0到 999的数字\n");
printf("<请不要乱选!!>\n");
scanf("%d",&select);
switch(select)
{
case 1:SELECT(10);break;
case 2:SELECT(100);break;
case 3:SELECT(1000);break;
case 4:print();
default:
{
printf("请不要乱选!!\n");
letsgo();
}
}
}
void NB(int l)
{
char a[20];
static int jihui=0;
printf("\n老大!我服了你,%d次都输入错误。\n",l);
printf("\n<可能你在捣乱~~>\n");
printf("(如果不想结束,请输入[sorry]<中括号内的>否则结束游戏)\n");
fflush(stdin);
gets(a);
if(strcmp(a,"sorry")==0||strcmp(a,"SORRY")==0)
{
jihui++;
if(jihui==2)
{
printf("\n死性不改。道歉也没有用了!\n");
goto end;
}
printf("好吧。给你次机会<请输入 1或 2>\n");
Select();
}
end:
printf("");
}
void SELECT(int n)
{
int num;
srand((unsigned)time(NULL));
num=rand()%n;
if(n==10)
{
n=3;
printf("\n你有%d次猜测的机会\n",n);
}
if(n==100)
{
n=5;
printf("\n你有%d次猜测的机会\n",n);
}
if(n==1000)
{
n=7;
printf("\n你有%d次猜测的机会\n",n);
}
Guess(num,n);
}
void Guess(int num,int n)
{
int search,k,o;
static int i=1;
char ans;
if(n==3)
k=10;
if(n==5)
k=100;
if(n==7)
k=1000;
o=(num-k/1)%k;
if(o<0)
o=0;
printf("\n请猜这个数是多少(在<%d>到<%d>):",o,(k/5+num)%k);
fflush(stdin);
scanf("%d",&search);
if(num>search)
printf("\n小了\n");
if(num printf("\n大了\n"); if(num==search) { printf("\n恭喜您了!你在第%d次猜对了\n",i); score+=10; printf("是否继续 fflush(stdin); ans=getchar(); if(ans=='y'||ans=='Y') { i=1; letsgo(); } } else { i++; if(i<=n) Guess(num,n); else { printf("\n你的%d次机会已经没有了!!,答案是%d\n",i-1,num); printf("是否继续 fflush(stdin); ans=getchar(); if(ans=='y'||ans=='Y') { i=1; letsgo(); } } } } 满意请采纳。 #include #include #include #include #include void c_input(char*str) { int i,j; input:for(i=0;i<4;i++) { str[i]=getch(); putchar(str[i]); } putchar('\n'); for(i=0;i<4;i++) { if(str[i]<'0'||str[i]>'9') { printf("无效输入,请重新输入:"); goto input; } for(j=0;j { if(str[i]==str[j]) { printf("无效输入,请重新输入:"); goto input; } } } } void c_game(const char*temp) { int i,j,ci; char in[4]; char out[5]="0A0B"; for(ci=0;ci<8;ci++) { printf("第%d次输入:",ci+1); c_input(in); for(i=0;i<4;i++) { if(in[i]==temp[i]) { out[0]++; } else { for(j=0;j<4;j++) { if(in[i]==temp[j]) { out[2]++; } } } } printf("%s\n",out); if(strcmp(out,"4A0B")==0) { printf("游戏成功,按下任意键返回主菜单。。"); getch(); return; } out[0]='0'; out[2]='0'; } printf("游戏失败,按下任意键返回主菜单。。"); getch(); } void c_rand() { int i,j; char data[]="0123456789"; char temp[4]; system("cls"); printf("**随机模式**\n\n"); for(i=0;i<4;i++) { j=rand()%(10-i); temp[i]=data[j]; data[j]=data[10-i-1]; } c_game(temp); } void c_printf() { char temp[4]; system("cls"); printf("**用户输入模式**\n\n"); printf("请输入测试数据:"); c_input(temp); system("cls"); printf("**用户输入模式**\n\n"); c_game(temp); } void main() { srand(time(NULL)); while(1) { system("cls"); printf("(1)随机产生数据\n"); printf("(2)用户输入数据\n"); printf("(3)退出游戏\n"); printf("choice:"); switch(getch()) { case'1':c_rand();break; case'2':c_printf();break; case'3':exit(1); } } } 在VC6下编译通过,但因为没有用C++特征,也可在其它C的编译器上试试 分析: 先产生一个随机数N。 然后输入数I,如果A大于N,则提示大于信息。 如果I小于N,则提示小于信息。 直到I==N,则输出成功信息。 这是我用C语言写的。 环境: WIN-C ,TORBO C,如果是C++环境把倒数第二排getch();删掉! 已经调试成功: main() { int i=0,n; srand(time(0)); n=rand()%100+1; while(i!=n) {printf("please input a number:\n"); scanf("%d",&i); if(i>n)printf("this number is too big!\n"); if(i number is too smaller!\n"); } if(i==n) printf("PASS!%3d",n); getch(); } 提示: srand(time(0)); n=rand()%100+1; 是用来生成一个1~100以内的随机数,如果你改,把100改成50或者200。如(n=rand()%50+1; )二、c语言题 猜数字游戏
三、c语言猜数字游戏编程思路
加了得分榜,没写排序,没时间了。自己加一下就OK
#include
#include
#include
#include
int score=0;
void SELECT(int);
void Guess(int,int);
void Select();
void letsgo();
void NB(int);//以上的是函数原型
struct PLAYER
{
char name[10];
int plscore;
};
void save()
{ printf("您的得分是%i",score);
PLAYER player;
printf("请输入姓名:");
scanf("%s",player.name);
player.plscore=score;
FILE*fp;
if((fp=fopen("record.txt","ab"))==NULL)
{
printf("不能打开文件!");
exit(0);
}
fwrite(&player,sizeof(PLAYER),1,fp);
printf("记录保存完毕!");
fclose(fp);
}
void print()
{
printf("分数榜:");
FILE*fp;
if((fp=fopen("record.txt","rb"))==NULL)
{
printf("不能打开文件!");
exit(0);
}
PLAYER player;
while(fread(&player,sizeof(PLAYER),1,fp)==1)
{
printf("\n姓名:%s\n",player.name);
printf("分数:%i\n",player.plscore);
}
fclose(fp);
}
void main()
{
char end;
printf("\t\t欢迎光临!!\n\t在这里我将来测试你的运气!\n");
printf("请你猜下数字,但机会就只有三次!!\n");
printf("\n 1、开始游戏^__^\n 2、我是倒霉鬼,我不玩\n 3、查看分数榜");
printf("请选择1或2\n");
Select();
printf("\n按任意键退出");
fflush(stdin);
end=getchar();
if(score>0)
save();
printf("Thanks For Playing\2 886\n");
}
void Select()
{
int s;
static int lihai=0;
fflush(stdin);
scanf("%d",&s);
switch(s)
{
case 1:
letsgo();break;
case 2:
printf("唉,你不想玩,我就不逼你咯\n");exit(0);
case 3:print();
break;
default:
lihai++;
if(lihai==3||lihai==5)
{
NB(lihai);
break;
}
printf("你输入的是什么啊!重新输入< 1或 2>\n");
Select();
}
}
void letsgo()
{
int select;
printf("请你选择猜数字的难度\n");
printf("1、简单->猜测 0到 9的数字\n");
printf("2、一般->猜测 0到 99的数字\n");
printf("3、困难->猜测 0到 999的数字\n");
printf("<请不要乱选!!>\n");
scanf("%d",&select);
switch(select)
{
case 1:SELECT(10);break;
case 2:SELECT(100);break;
case 3:SELECT(1000);break;
case 4:print();
default:
{
printf("请不要乱选!!\n");
letsgo();
}
}
}
void NB(int l)
{
char a[20];
static int jihui=0;
printf("\n老大!我服了你,%d次都输入错误。\n",l);
printf("\n<可能你在捣乱~~>\n");
printf("(如果不想结束,请输入[sorry]<中括号内的>否则结束游戏)\n");
fflush(stdin);
gets(a);
if(strcmp(a,"sorry")==0||strcmp(a,"SORRY")==0)
{
jihui++;
if(jihui==2)
{
printf("\n死性不改。道歉也没有用了!\n");
goto end;
}
printf("好吧。给你次机会<请输入 1或 2>\n");
Select();
}
end:
printf("");
}
void SELECT(int n)
{
int num;
srand((unsigned)time(NULL));
num=rand()%n;
if(n==10)
{
n=3;
printf("\n你有%d次猜测的机会\n",n);
}
if(n==100)
{
n=5;
printf("\n你有%d次猜测的机会\n",n);
}
if(n==1000)
{
n=7;
printf("\n你有%d次猜测的机会\n",n);
}
Guess(num,n);
}
void Guess(int num,int n)
{
int search,k,o;
static int i=1;
char ans;
if(n==3)
k=10;
if(n==5)
k=100;
if(n==7)
k=1000;
o=(num-k/1)%k;
if(o<0)
o=0;
printf("\n请猜这个数是多少(在<%d>到<%d>):",o,(k/5+num)%k);
fflush(stdin);
scanf("%d",&search);
if(num>search)
printf("\n小了\n");
if(num printf("\n大了\n"); if(num==search) { printf("\n恭喜您了!你在第%d次猜对了\n",i); score+=10; printf("是否继续 fflush(stdin); ans=getchar(); if(ans=='y'||ans=='Y') { i=1; letsgo(); } } else { i++; if(i<=n) Guess(num,n); else { printf("\n你的%d次机会已经没有了!!,答案是%d\n",i-1,num); printf("是否继续 fflush(stdin); ans=getchar(); if(ans=='y'||ans=='Y') { i=1; letsgo(); } } } } 满意请采纳。 #include #include #include #include #include void c_input(char*str) { int i,j; input:for(i=0;i<4;i++) { str[i]=getch(); putchar(str[i]); } putchar('\n'); for(i=0;i<4;i++) { if(str[i]<'0'||str[i]>'9') { printf("无效输入,请重新输入:"); goto input; } for(j=0;j { if(str[i]==str[j]) { printf("无效输入,请重新输入:"); goto input; } } } } void c_game(const char*temp) { int i,j,ci; char in[4]; char out[5]="0A0B"; for(ci=0;ci<8;ci++) { printf("第%d次输入:",ci+1); c_input(in); for(i=0;i<4;i++) { if(in[i]==temp[i]) { out[0]++; } else { for(j=0;j<4;j++) { if(in[i]==temp[j]) { out[2]++; } } } } printf("%s\n",out); if(strcmp(out,"4A0B")==0) { printf("游戏成功,按下任意键返回主菜单。。"); getch(); return; } out[0]='0'; out[2]='0'; } printf("游戏失败,按下任意键返回主菜单。。"); getch(); } void c_rand() { int i,j; char data[]="0123456789"; char temp[4]; system("cls"); printf("**随机模式**\n\n"); for(i=0;i<4;i++) { j=rand()%(10-i); temp[i]=data[j]; data[j]=data[10-i-1]; } c_game(temp); } void c_printf() { char temp[4]; system("cls"); printf("**用户输入模式**\n\n"); printf("请输入测试数据:"); c_input(temp); system("cls"); printf("**用户输入模式**\n\n"); c_game(temp); } void main() { srand(time(NULL)); while(1) { system("cls"); printf("(1)随机产生数据\n"); printf("(2)用户输入数据\n"); printf("(3)退出游戏\n"); printf("choice:"); switch(getch()) { case'1':c_rand();break; case'2':c_printf();break; case'3':exit(1); } } } 在VC6下编译通过,但因为没有用C++特征,也可在其它C的编译器上试试 分析: 先产生一个随机数N。 然后输入数I,如果A大于N,则提示大于信息。 如果I小于N,则提示小于信息。 直到I==N,则输出成功信息。 这是我用C语言写的。 环境: WIN-C ,TORBO C,如果是C++环境把倒数第二排getch();删掉! 已经调试成功: main() { int i=0,n; srand(time(0)); n=rand()%100+1; while(i!=n) {printf("please input a number:\n"); scanf("%d",&i); if(i>n)printf("this number is too big!\n"); if(i number is too smaller!\n"); } if(i==n) printf("PASS!%3d",n); getch(); } 提示: srand(time(0)); n=rand()%100+1; 是用来生成一个1~100以内的随机数,如果你改,把100改成50或者200。如(n=rand()%50+1; )
上一篇:猜数游戏重点知识归纳四年级
下一篇:猜数字游戏Java涉及哪些知识 二、c语言题 猜数字游戏
三、c语言猜数字游戏编程思路
相关内容