我是编程新人,请高手帮忙弄个排行榜,纠结了一天了
若游戏胜出且成绩在前五名,可输入并记录对应的用户姓名,并添加到积分榜中。操作菜单中相应选项改为“2:积分榜!”,用于把积分榜中保存的前五名用户姓名、猜数个数、尝试次数、成绩显示出来。能对积分榜的成绩进行排序和输出。
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#include<stdlib.h>
struct Billboard
{char d[100];
int t;
int y;
int u;
}board[5],board1,board2;
int main()
{
int j=0,k=0,l=0,z=0;
int p=0,o=0,q=0,w=0,e=0;
int g=4,h=10,n=0;
int r=h;
int i=0,a[100],b[100];
char c[100];
FILE *fp;
do
{ printf("**********猜数字游戏**********\n");
printf("1:开始游戏\n");
printf("2:查看上次成绩\n");
printf("3:帮助信息\n");
printf("4:系统设置\n");
printf("0:退出程序\n");
printf("******************************\n");
printf("请输入一个序号:");
scanf("%d",&i);
do
{if(i<0||i>4){printf("错误,请再次输入一个序号:");
scanf("%d",&i);}
switch(i)
{case 0:return 0;break;
case 1:
srand(time(0));
for(j=0;j<g;j++) //生成数
{
a[j]=rand()%10;
for(k=0;k<=j-1;k++)
{if(a[j]==a[k])
{a[j]=rand()%10;
k=-1;}}}
for(j=0;j<g;j++)
printf("%d ",a[j]);
printf("请输入%d个一位数,用空格隔开:",g); //输入
do
{
do
{
do
{p=0;
for(j=0;j<g;j++)
scanf("%d",&b[j]);
for(j=0;j<g;j++)
{if(b[j]>=0&&b[j]<=9)p++;
}
if(p!=g)
{printf("错误输入两位数,请重新输入%d个一位数,用空格隔开:",g);
p=0;}
}while(p!=g);
o=0;
n=0;
for(l=0;l<g;l++)
n=n+l;
for(j=0;j<g;j++)
{for(k=0;k<=j-1;k++)
{ if(b[j]!=b[k])o++;}}
if(j==g)
{if(o!=n){printf("错误输入重复数,请重新输入%d个一位数,用空格隔开:",g);}}
}while(o!=n);
n=0;
q=0;
w=0;
for(j=0;j<g;j++)
{ for(k=0;k<g;k++)
if(a[j]==b[k])
{if(j==k)q++;
else w++;}}
if(q==g){r=r*10;
printf("你获得了%d分\n",r);
printf("请输入你的姓名:");
scanf("%s",c);
break;}
r--;
if(r==0){printf("很遗憾你没答对,游戏结束\n");break;}
else {printf("有%d个数数值和位置都相同!有%d个数数值相同,但位置不同。你还有%d次机会\n",q,w,r);
printf("请再次输入%d个一位数,用空格隔开:",g);}
}while(q!=g||r==1);
break;
case 2:
if((fp=fopen("d:\\s.txt","r"))==NULL)
{printf("error");exit(0);}
for(j=0;j<5;j++)
{
fscanf(fp,"%s %d %d %d\n",board[i].d,&board[i].t,&board[i].y,&board[i].u);
printf("%-10s %4d %4d %4d\n",board[j].d,board[j].t,board[j].y,board[j].u);}
fclose(fp);
break;
case 3:printf("游戏规则:1、系统默认随机生成4个各不相同个位数,由玩家自己输入4个个位数,通过逻辑思 维猜出数字\n");
printf(" 2、系统默认尝试次数为10次,用越少次数猜对分数越高,分数高者进入排行榜。\n");
printf(" 3、若想修改猜的个数和尝试次数,请进入4:系统设置中进行设置\n");break;
case 4:
printf("修改要猜的数字的个数:");
scanf("%d",&g);
printf("\n修改可以尝试的次数:");
scanf("%d",&h);break;}
}while(i<0||i>4);
printf("按0返回主界面\n");
scanf("%d",&e);
while(e!=0)
{printf("错误,按0返回主界面\n");
scanf("%d",&e);}
system("cls");}while(e==0);
system("PAUSE");
return 0;}