| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5876 人关注过本帖, 1 人收藏
标题:猜数字游戏
只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 10楼 wp231957
对哦~我想到了我的是另外一个版本,1234四个数字的组合就告诉你那几个位置对了~看来这个版本8次真的不能一定猜出来~~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-03-02 17:36
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
即便改进代码后  猜8次能猜出来 也靠运气啊

请输入你猜测的数字 当前第 1次猜测:
1223
数字 1 正确  但位置不正确
个位数 3 正确  且位置正确

1A1B

请输入你猜测的数字 当前第 2次猜测:
6173
千位数 6 正确  且位置正确
数字 1 正确  但位置不正确
个位数 3 正确  且位置正确

2A1B

请输入你猜测的数字 当前第 3次猜测:
6813
千位数 6 正确  且位置正确
十位数 1 正确  且位置正确
个位数 3 正确  且位置正确

3A0B

请输入你猜测的数字 当前第 4次猜测:
6913
千位数 6 正确  且位置正确
十位数 1 正确  且位置正确
个位数 3 正确  且位置正确

3A0B

请输入你猜测的数字 当前第 5次猜测:
6013
千位数 6 正确  且位置正确
十位数 1 正确  且位置正确
个位数 3 正确  且位置正确

3A0B

请输入你猜测的数字 当前第 6次猜测:
6213
千位数 6 正确  且位置正确
十位数 1 正确  且位置正确
个位数 3 正确  且位置正确

3A0B

请输入你猜测的数字 当前第 7次猜测:
6413
千位数 6 正确  且位置正确
十位数 1 正确  且位置正确
个位数 3 正确  且位置正确

3A0B

请输入你猜测的数字 当前第 8次猜测:
6513
千位数 6 正确  且位置正确
百位数 5 正确  且位置正确
十位数 1 正确  且位置正确
个位数 3 正确  且位置正确

4A0B
猜测正确

DO IT YOURSELF !
2017-03-03 06:56
mnmn4429
Rank: 4
等 级:业余侠客
帖 子:64
专家分:245
注 册:2017-2-21
收藏
得分:0 
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
#define Max 4
int getrand[Max];
int scan[Max];
int main()
{
    int a=0,b=0,sc,i=1,j,k,count;
    rand:
    {//(1)随机产生数据
        srand((unsigned)time(NULL));
        getrand[0] = rand()%10;
        getrand[1] = rand()%10;
        getrand[2] = rand()%10;
        getrand[3] = rand()%10;
    }
    while(1)
    {

scan:{
        printf("第%d次输入",i);
        scanf("%d",&sc);//第i次输入
        scan[0] =sc/1000;
        scan[1] =sc/100%10;
        scan[2] =sc/10%10;
        scan[3] =sc%10;
     }

    //    printf("%d %d %d %d",getrand[0],getrand[1],getrand[2],getrand[3]);
        for(j=0;j<=3;j++)
        {
            for(k=0;k<j && k !=j;k++)
            {
                if(getrand[k] == getrand[j])
                //判断随机数的四个数是否重复
                    goto rand;
                //判断输入的四个数是否重复
                if(scan[k] == scan[j])
                    goto scan;
            }
        }
        for(j=0;j<=3;j++)
        {
            for(k=0;k<=3;k++)
            {
                if(getrand[k] == scan[j] && k == j)
                    a++;
                if(getrand[k] == scan[j] && k != j)
                    b++;
                //A表示位置正确且数字正确,B表示数字正确而位置不正确
               
            }
        }
        if(a != 4)
        {
            printf("%dA%dB\n",a,b);
            a=0;
            b=0;
        }
        i++;
        if(sc == getrand[0]*1000+getrand[1]*100+getrand[2]*10+getrand[3])
        //输入的和随机的一样
        {
            printf("游戏成功" );
            break;
        }        
        
        if(i == 8)
        {
            printf("游戏失败");
            break;
        }
    }
    getch();
    return 0;
}
2017-03-03 08:04
mnmn4429
Rank: 4
等 级:业余侠客
帖 子:64
专家分:245
注 册:2017-2-21
收藏
得分:0 
有不少高手啊,写了不少的代码
2017-03-03 08:11
mnmn4429
Rank: 4
等 级:业余侠客
帖 子:64
专家分:245
注 册:2017-2-21
收藏
得分:0 
菜单功能和破纪录功能没有,程序写完了,忘了看题了呵呵
2017-03-03 08:22
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
改进了一下版本   这个版本容易猜一些
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//只接受源数据为4位的整型
void split(int s,int  buf[4])
{
    for(int i=3;i>=0;i--)
    {
        buf[i]=s%10;
        s/=10;
    }
}

int main()
{
    srand((unsigned int)time(0));
    int s=0;  //s 随机获取的谜底数字
    int buf[4]={0};    //存放谜底的数组
    int ipbuf[4]={0};  //存放用户猜测的数组
    while(s<1000)
    {
        s=rand()%10000;
        split(s,buf); 
        if(buf[0]==buf[1] || buf[0]==buf[2] || buf[0]==buf[3] || buf[1]==buf[2] || buf[1]==buf[3] || buf[2]==buf[3])
           s=0;
    }
    int j=0;  //猜测的次数
    int t;  //用户猜测的数据
    int m=0;  //记录数字正确且位置正确
    int n=0;  //记录数字正确且位置不正确
    char* bit[4]={"","","",""};
    while(j<8)
    {
        printf("\n请输入你猜测的数字 当前第%2d次猜测:  \n",j+1);
        scanf("%d",&t);
        split(t,ipbuf);
        for(int i=0;i<4;i++)
        {
            for(int j=0;j<4;j++)
            {
                if(i==j && buf[i]==ipbuf[j])
                {
                    m++;
                    printf("%s位数 %d 正确  且位置正确\n",bit[i],buf[i]);
                }
                else
                    if(i!=j && buf[i]==ipbuf[j])
                    {
                        n++;
                        printf("数字 %d 正确  但位置不正确\n",buf[i]);
                    }
            }
        }
        printf("\n%dA%dB\n",m,n);
        if(m==4 && n==0)
        {
            printf("猜测正确\n");
            break;
        }
        j++;
        m=0;
        n=0;
        fflush(stdin);
    }
    if(j==8) printf("真笨啊 8次都没猜出来  告诉你谜底吧 %d\n",s);
    return 0;
}



DO IT YOURSELF !
2017-03-03 08:59
mnmn4429
Rank: 4
等 级:业余侠客
帖 子:64
专家分:245
注 册:2017-2-21
收藏
得分:0 
猜数字.rar (35.63 KB)
这回算完善了
2017-03-04 00:01
虾饺
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2017-2-27
收藏
得分:0 
回复 17楼 mnmn4429
请问这个数据结构是数组吗?
2017-03-05 19:11
mnmn4429
Rank: 4
等 级:业余侠客
帖 子:64
专家分:245
注 册:2017-2-21
收藏
得分:0 
猜数字.rar (35.62 KB)

好多版本,呵呵,更新了,看看这个,里面有源码
2017-03-05 22:05
mnmn4429
Rank: 4
等 级:业余侠客
帖 子:64
专家分:245
注 册:2017-2-21
收藏
得分:0 
亏我留了,不然上哪去找
2017-03-05 22:06
快速回复:猜数字游戏
数据加载中...
 
   



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

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