| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 443 人关注过本帖
标题:我是编程新人,请高手帮忙弄个排行榜,纠结了一天了
只看楼主 加入收藏
hl147403
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-6-6
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
我是编程新人,请高手帮忙弄个排行榜,纠结了一天了
   若游戏胜出且成绩在前五名,可输入并记录对应的用户姓名,并添加到积分榜中。操作菜单中相应选项改为“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;}


搜索更多相关主题的帖子: 排行榜 积分榜 游戏 姓名 用户 
2011-06-06 12:50
lock69
Rank: 2
等 级:论坛游民
帖 子:17
专家分:47
注 册:2009-9-23
收藏
得分:20 
兄弟,你的代码简直恐怖啊,除了你自己估计很少人能看得懂.我给你个建议
#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;
}
你看,整齐的格式既能让人看懂,也方便自己调试.限于水平,我这是帮你排了一下版,希望高手来帮你
2011-06-06 14:49
hl147403
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-6-6
收藏
得分:0 
回复 2楼 lock69
感谢,我是新人,不怎么会这方面的
2011-06-06 14:55
快速回复:我是编程新人,请高手帮忙弄个排行榜,纠结了一天了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011803 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved