baidu_28942405 2015-06-11 05:10 采纳率: 0%
浏览 1512

C语言小白请大神帮忙改一下代码,谢谢。

#include
#include
#include
#include
#include

void choose();//选择函数
void shu();//猜数字函数
void paihang();//排行榜
void repaihang(int n);//更新排行榜
void replace();//初始化排行榜(没有记录时的排行榜)

typedef struct {
char name[10];
int score;
}re;

int main()
{
printf("-------------------猜数游戏--------------------\n");
printf(" 1. 开始游戏\n");
printf(" 2. 排行榜\n");
printf(" 3. 退出游戏\n\n");
choose();

}

void choose()
{
int n;
printf("请输入序号:");
scanf("%d",&n);
switch(n)
{
case 1:
system("cls");
shu();
break;
case 2:
paihang();
break;
case 3:
exit(0);
break;
}

}

void shu()
{

int a[4],b[4],i,j,n;
srand((unsigned int)time(0));

for(i=0;i<4;i++)a[i]=1+rand()%10;
printf("请输入四个数字:");


for(j=1;j<=10;j++)
{
for(i=0;i<4;i++)
    scanf("%d",&b[i]);
if(b[0]==-1||b[1]==-1||b[2]==-1||b[3]==-1)
    break;
for(i=0;i<4;i++)
{
    if(a[i]==b[i])
        printf("第%d个数对了,你真棒!\n",i+1);
    if(a[i]>b[i])
        printf("第%d个数小了!\n",i+1);
    if(a[i]<b[i])
        printf("第%d个数大了!\n",i+1);     
}
if(a[0]==b[0]&&a[1]==b[1]&&a[2]==b[2]&&a[3]==b[3])
{
    printf("全部猜对了,你用了%d次机会,你真棒!\n",j);

    printf("是否存入排行榜:1.是   2.否\n");
    scanf("%d",&n);
    if(n==1)
        repaihang(j);

}

}
printf("按任意键继续...\n");
getch();
}

void paihang()
{

int i,j,num=0;
re r[5];
re p;//临时结构体
FILE *fp=NULL;
char bang[10]="paihang";

fp=fopen(bang,"rb");
if(fp==NULL)
{
    printf("打开失败!按任意键结束...\n");
    getch();
}
if(fread(&r[num],sizeof(re),1,fp)!=NULL)
    num++;
fclose(fp);
if(num<1)
{
    replace();
}
if(num>1)
{
    for(i=0;i<num;i++)
        for(j=i+1;j<num;j++)
        {
            if(r[i].score>r[j].score)
            {
                strcpy(p.name=r[i].name);
                p.score=r[i].score;
                strcpy(r[i].name=r[j].name);
                r[i].score=r[j].score;
                strcpy(r[j].name=p.name);
                r[j].score=p.score;
            }
        }

    fp=fopen(bang,"wb+");
    if(fp==NULL)
    {
        printf("打开失败!按任意键结束...\n");
        getch();
    }
    for(i=0;i<num;i++)
        if(fwrite(&r[num],sizeof(re),1,fp)!=1)
            printf("error\n");
    fclose(fp);
    printf("排行榜如下所示:\n\n");
    printf("名字\t分数\n");
    if(fread(&r[num],sizeof(re),1,fp)!=NULL)
        printf("%s\t%d\n",p.name,p.score);
    fclose(fp);
}

}

void repaihang(int n)
{
int i,j,num=0,max=0;
re r[5];
re p;
FILE *fp;
char bang[10]="paihang";

fp=fopen(bang,"rb");
if((fread(&r[num],sizeof(re),1,fp)!=NULL)&&num<5)
    num++;
fclose(fp);
if(num<5)//排名不满5个
{
    printf("你的名字是:");
    scanf("%s",r[num].name);
    r[num].score=n;
    num++;
}
else//排名满5个,找出分数最高(成绩最低)的玩家
{
    for(i=0;i<5;i++)
    {
        if(r[i].score>max)
        {
            max=r[i].score;
            j=i;
        }

    }
    if(n<=r[j].score)
    {
        printf("你的名字是:");
        scanf("%s",r[j].name);
        r[j].score=n;
    }
    fp=fopen(bang,"wb");
    for(i=0;i<num;i++)
        if(fwrite(&r[num],sizeof(re),1,fp)!=1)
            printf("error\n");
    fclose(fp);
    fp=fopen(bang,"rb");
    printf("排行榜为:\n");
    printf("名字\t分数\n");
    if(fread(&r[num],sizeof(re),1,fp)!=NULL)
        printf("%s\t%d\n",p.name,p.score);
    fclose(fp);
}

}

void replace()
{
FILE *fp;
re c;
char bang[10]="paihang";
if((fp=fopen(bang,"rb"))==NULL)
{
strcpy(c.name,"player");
c.score=10;
printf("%s\t%d\n",c.name,c.score);
}
fclose(fp);
}

  • 写回答

5条回答

  • 大河行脚 2015-06-11 05:15
    关注

    这么多代码是没有人愿意看的,更何况你不说哪里出了问题,完全就是个伸手党

    评论

报告相同问题?

悬赏问题

  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程