| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1287 人关注过本帖
标题:一个猜数字的游戏代码 求帮改进
只看楼主 加入收藏
c958919608
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-6-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
一个猜数字的游戏代码 求帮改进
这个是课设的作业= 但是我实在做不出来了  求帮助



#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void Guess();
void DecideA(int *pMagic,int *pGuess);
void DecideB(int  *pMagic,int *pGuess);
void DecideC(int *pMagic,int *pGuess);

int main()
{
    char a;
    printf("欢迎加入猜数字游戏!\n");
    printf("本游戏需要输入四位数(每一位范围1-9,各位上数字不重复).\n");
    printf("准备好开始了吗!Y/N:");
    a=getchar();
    if(a=='Y'||a=='y')
    {
        Guess();
    }
    else if(a=='N'||a=='n')
    {
        printf("欢迎您的使用!\n");
    }
}


void Guess()
{
    int magic[4],a;
    int guess[4];
    srand((unsigned)time(NULL));
    for(int i=0;i<4;i++)
    {
        A: ;
        magic[i]=1+rand()%9;
        for(int j=0;j<i;j++)
        {
            if(magic[j]==magic[i])
            goto A;
        }
    }
printf("请输入四位数(1-9,且各位不重复):");
    scanf("%d",&a);
    guess[0]=a/1000;
    guess[1]=(a-guess[0]*1000)/100;
    guess[2]=(a-guess[0]*1000-guess[1]*100)/10;
    guess[3]=a%10;
    DecideA(magic, guess);
    DecideB(magic, guess);
    DecideC(magic, guess);
    printf("本次猜字游戏答案为:");
    printf("%d%d%d%d\n",magic[0],magic[1],magic[2],magic[3]);
}
void DecideA(int *pMagic,int *pGuess)
{
    int t=0;
    for (int i=0; i<4; i++)
    {
        for(int j=0;j<4;j++)
        {
            if(pGuess[i]==pMagic[j])
            {
                t++;
            }
        }
    }
    printf("恭喜你!\n您本次猜对了%d个数字\n",t);
}
void DecideB(int *pMagic,int *pGuess)
{
    int b[4]={0,0,0,0};
    for (int i=0;i<4; i++)
    {
        for(int j=0;j<4;j++)
        {
            if(pGuess[i]==pMagic[j])
            {
                b[i]=pGuess[i];
            }
        }
    }
    if(b[0]!=0||b[1]!=0||b[2]!=0||b[3]!=0)
    {
        printf("您本次猜对的数字为:");
        for(int i=0;i<4;i++)
        {
            if(b[i]!=0)
            {
                printf("%d ",b[i]);
            }
        }
    }
    else
    {
        printf("您本次没有猜对的数字!\n");
    }
    printf("\n");
}
void DecideC(int *pMagic,int *pGuess)
{
    int a[4]={0,0,0,0};
    for (int i=0; i<4; i++)
    {
        if(pMagic[i]==pGuess[i])
        {
            a[i]=1;
        }
    }
    if(a[0]==0&&a[1]==0&&a[2]==0&&a[3]==0)
    {
        printf("您本次没有猜对的位置!\n");
    }
    else
    {
        printf("您本次猜对的位置为:");
        for(int i=0;i<4;i++)
        {
            a[i]=1;
        }
    }
    if(a[0]==0&&a[1]==0&&a[2]==0&&a[3]==0)
    {
        printf("您本次没有猜对的位置!\n");
    }
    else
    {
        printf("您本次猜对的位置为:");
        for(int i=0;i<4;i++)
        {
            if(a[i]==1)
            {
                printf("%d ",i+1);
            }
        }
    }
}




这个猜数字游戏    c) 每次猜测输入的数据给出类似的提示*A*B。
d)其中A前的*代表你本次猜对了多少个数字,其中B前的*代表你本次猜对的数字并且位置正确的个数。       能不能帮我把这两个要求做出来  
搜索更多相关主题的帖子: include Guess 游戏 include Guess 游戏 
2016-06-22 19:46
c958919608
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-6-22
收藏
得分:0 
这个做出来输入一组数字之后就直接推出了 并没有达到要求   求帮助
2016-06-22 19:46
c958919608
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-6-22
收藏
得分:0 
求大神帮忙a   救急   这个是作业
2016-06-22 20:11
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:10 
    char b;
    srand((unsigned)time(NULL));
    int i,j,fla=1;
    for(i=0;i<4;i++)
        {
            magic[i]=1+rand()%9;
                for(j=0;j<i;j++)
                 if(magic[i]==magic[j]) i--;            
    }//能不用goto就不要用,所以把这里修改一下。
   do
    {
       printf("请输入四位数(1-9,且各位不重复):");
    scanf("%d",&a);
    guess[0]=a/1000;
    guess[1]=(a-guess[0]*1000)/100;
    guess[2]=(a-guess[0]*1000-guess[1]*100)/10;
    guess[3]=a%10;
    DecideA(magic, guess);
    DecideB(magic, guess);
    DecideC(magic, guess);
    printf("是否继续Y or N:");
    getchar();
    b=getchar();
    if(b=='Y'||b=='y')  fla=1;
    else fla=0;
    }while(fla);//用fla 当开关,可以一直试,直到你不想试为止。这里也可以修改成你输入的数都对的时候跳出也行,你可以自己尝试修改。
void DecideC(int *pMagic,int *pGuess)
{
    int a[4]={0,0,0,0};
    int i;
    for (i=0; i<4; i++)
    {
        if(pMagic[i]==pGuess[i])
        {
            a[i]=1;
        }
    }
    if(a[0]==0&&a[1]==0&&a[2]==0&&a[3]==0)
    {
        printf("您本次没有猜对的位置\n");
    }
    else
    {
        printf("您本次猜对的位置为:");
        for(i=0;i<4;i++)
        {
            if(a[i]!=0) printf("%d\t",i);
        }
        printf("\n");
    }
   
}//这个子函数也修改了,如果你没复制错,那我就不知道怎么修改这个子函数了。
2016-06-23 00:22
c958919608
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-6-22
收藏
得分:0 
回复 4楼 linlulu001
非常感谢
2016-06-23 08:54
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:10 
void DecideC那一部分如果是要以xAxB的形式做输出的话,i应该只要计数有几个数字回答正确并且在正确的位置上没必要对于每一个在正确位置上的数字都做输出才是吧///

φ(゜▽゜*)♪
2016-06-27 20:52
快速回复:一个猜数字的游戏代码 求帮改进
数据加载中...
 
   



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

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