我的代码有点问题,哪位大侠能给改下!!!谢谢谢谢!!!急用!
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include<windows.h>
#include<string.h>
#define max 5
static int k=0; //用来标记猜测的人数
typedef struct player
{
char name[20];
int sorce;
}PLAYER;
PLAYER rec[max];
int qushu();
void display();
void xuanze();
void sys(int a);
int tishi();
void addrec();
void recwrite();
void help();
void delrec();
void viewsname();
void sort();
void main() //主函数
{
display();
}
int qushu() //取数函数
{
srand( (unsigned)time( NULL ) ); //随机数种子设置
int i;
i=rand();
i=i%10000;
i=i+rand();
while(i<1000)
{
i=i+rand();
}
while(i>9999)
{
i=i-rand()%9000;
}
return(i);
}
void display() //开始界面
{
system("cls"); //清屏
printf("\n");
printf("\n");
printf("\n");
printf(" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
printf(" $$$$$$$$$$$$$$$$ 猜数字游戏 $$$$$$$$$$$$$$\n");
printf(" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
printf(" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
printf(" $$$$$$$$$$$$$$$$ 1:新游戏 $$$$$$$$$$$$$$$$\n");
printf(" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
printf(" $$$$$$$$$$$$$$$$ 2:浏览记录 $$$$$$$$$$$$$$\n");
printf(" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
printf(" $$$$$$$$$$$$$$$$ 3:帮助说明 $$$$$$$$$$$$$$\n");
printf(" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
printf(" $$$$$$$$$$$$$$$$ 4:清除记录 $$$$$$$$$$$$$$\n");
printf(" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
printf(" $$$$$$$$$$$$$$$$ 5:退出 $$$$$$$$$$$$$$$$$$\n");
printf(" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
printf(" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
xuanze();
}
void xuanze() //选择函数
{
int a;
printf("请输入你所选择的操作数:\n");
scanf("%d",&a);
if(a==1||a==2||a==3||a==4||a==5)
{
sys(a);
}//选择相应的操作数执行函数
else
{
printf("错误的操作数!\n");;
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
}
void sys(int a) //操作函数
{
switch(a)
{
case 1:tishi();break;
case 2:viewsname();break;
case 3:help();break;
case 4:delrec();break;
case 5:exit(0);break; //退出
}
}
int tishi() //提示函数
{
int m=0;
int n=0;
int snum;
int num;
num=qushu();
int a,b,c,d;
int af,bf,cf,df;
int i=1;
for(i=1,i<10,i++)
{
printf("请输入您猜测的数字:\n");
scanf("%d",&snum);
if(snum==num)
{k=k+1;
printf("恭喜!你猜对了!四个数就是:%d\n",num);
addrec(); //调用增加记录函数
}
else
{
a=(num-num%1000)/1000;
b=(num%1000-(num%1000)%100)/100;
c=((num%1000)%100-((num%1000)%100)%10)/10; //获取默认四个数字
d=((num%1000)%100)%10;
af=(snum-snum%1000)/1000;
bf=(snum%1000-(snum%1000)%100)/100;
cf=((snum%1000)%100-((snum%1000)%100)%10)/10; //获取输入的四个数字
df=((snum%1000)%100)%10;
if(af==b) m=m+1;
if(af==c) m=m+1;
if(af==d) m=m+1;
if(af==a) n=n+1; //数字比较
if(bf==a) m=m+1;
if(bf==c) m=m+1;
if(bf==d) m=m+1;
if(bf==b) n=n+1; //数字比较
if(cf==a) m=m+1;
if(cf==b) m=m+1;
if(cf==d) m=m+1;
if(cf==c) n=n+1; //数字比较
if(df==a) m=m+1;
if(df==b) m=m+1;
if(df==c) m=m+1;
if(df==d) n=n+1; //数字比较
printf("\n 您输入的数字位置和数字都正确的有 %d 个!\n",n);
printf("\n 您输入的数字位置不正确但数值正确的有 %d 个!\n",m);
printf("\n 您已经猜了%d次,您还有%d次\n",i,9-i);
}
}
return(i);
}
void addrec()
{ char c;
int i;
i=tishi();
rec[k].sorce=9-i;
printf("您要保存记录吗?保存请输入'y'\n");
scanf("%s",&c);
if(c!='y')
{
printf("您没有选择保存,按任意键回到主界面\n");
getchar();
display(); //调用主界面
}
else
{
printf("请输入您的尊姓大名:\n");
scanf("%s",rec[k].name);
recwrite(); //调用写入函数
printf("记录保存成功!按任意键继续回到主界面!");
getchar();
display(); //调用主界面
}
}
void recwrite() //写入记录文件
{
sort(); //调用排序函数
FILE *fp;
fp=fopen("E:\\record.txt","wb");
if(fp==NULL)
printf("写入失败!\n");
fwrite(rec,sizeof(player),max,fp);
fclose(fp);
}
void help() //帮助说明
{
system("cls"); //清屏
printf(" #------------------------------------------#\n");
printf(" #-------------数字竞猜游戏帮助-------------#\n");
printf(" #------------------------------------------#\n");
printf("\n");
printf("1.新游戏中,你可以输入四位数,来竞猜系统自动生成的四个数字!,只有九次的机会,\n");
printf(" 每次机会都有相对应的提示,九次的机会利用完了还没有猜对的话就算失败!四个数字的\n");
printf(" 相应格式在游戏中会有提示!当成功猜出系统给定的数字时候,就会统计你的成绩.当你的\n");
printf(" 成绩比记录文件中的记录好的时候就会提示你是否把记录记录到记录文件中,当你选择是\n");
printf(" 的时候就会接着提示你输入你的名字.再按回车.没有意外就会提示保存成功!\n");
printf(" 还有要说明的是记录中的分数是越低就代表成绩越好!\n");
printf("2.浏览记录有三种方式!第一种只是列出记录中的姓名;第二种是列出记录中的成绩次序\n");
printf(" 第三种是姓名跟成绩一起列出来!\n");
printf("3.清除记录就是把记录文件初始化.即是让记录文件为空!\n");
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
void delrec() //删除记录
{
FILE *fp;
fp=fopen("E:\\record.txt","rb");
fread(&rec,sizeof(player),max,fp);
for(int i=0;i<max;i++)
{
rec[i].sorce=0;
}
recwrite();
printf("删除成功!\n");
printf("\n");
printf("请按任意键继续...\n");
getchar();
display();
}
void viewsname() //按姓名和记录浏览
{
sort();
system("cls"); //清屏
printf("\n");
printf("记录列表显示如下:\n");
printf("\n");
for(int i=0;i<max;i++)
{
if(rec[i].sorce==0)printf(" <---空记录--->\n");
else
printf(" 第 %d 名: 姓名: %s 分数 %d\n",i+1,rec[i].name,rec[i].sorce);
}
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
void delrec() //删除记录
{
FILE *fp;
fp=fopen("E:\\record.txt","rb");
fread(&rec,sizeof(player),max,fp);
for(int i=0;i<max;i++)
{
rec[i].sorce=0;
}
recwrite();
printf("删除成功!\n");
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
void sort()
{
char MAXT;
char MINT;
int MAX;
int MIN;
int m;
int n;
for(m=1,m<=5,m++)
for(n=2,n<=5,n++)
if rec[m].sorce<rec[n].sorce
{
MAX=rec[n].sorce;
MIN=rec[m].sorce;
rec[m].sorce=MAX;
rec[n].sorce=MIN;
MAXT=rec[n].name;
MINT=rec[m].name;
strcpy(rec[m].name,MAXT);
strcpy(rec[n].name,MINT);
}
}