标题:求大神帮我把这个代码注释一下。。。萌新不懂
取消只看楼主
a18018953026
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-9-5
结帖率:0
已结贴  问题点数:20 回复次数:3 
求大神帮我把这个代码注释一下。。。萌新不懂
#include <stdio.h>
#include <stdlib.h>
#define M 4 //猜几个数字
//交换
void swap(int*a,int*b)
{
    int t=*a;
    *a=*b;
    *b=t;
}
//将数组随机打乱
void random_shuffle(int* a,int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        int x=rand()%n;
        int y=rand()%n;
        if(x!=y) swap(a+x,a+y);
    }
}
//生成数位不重复的M位全部数据,存在数组a中,并打乱,备用
int  gen(int* a)
{
    int count=0,i,j;
    int max=1;
    for(i=0;i<M;++i,max*=10);   
    for(i=0;i<max;++i)
    {
        _Bool flag[10]={0};
        int t=i;
        for(j=0;j<M;++j)
          if(flag[t%10]) break;
          else flag[t%10]=1,t/=10;
        if(j==M)
          a[count++]=i;        
    }
    random_shuffle(a,count);
    return count;
}
void test(int answer,int player,int* A,int* B)
{
    int i=0,j;   
    int answer_a[M]={0},player_a[M]={0};
    *A=*B=0;

    while(answer||player)
    {
        answer_a[i]=answer%10;
        player_a[i++]=player%10;
        answer/=10;
        player/=10;
    }
    for(i=0;i<M;++i)
        for(j=0;j<M;++j)
           if(player_a[i]==answer_a[j])
               if(i==j) ++*A;
                 else ++*B;

}
//参数AB是上一轮猜测的反馈,
//如果得到猜中的信息表示下一把的开始
int guess(int A,int B)
{
    //你的工作在这个函数
    int x;
    scanf("%d",&x);
    return x;
}
int main()
{
   srand(2);
   int i;
//初始生成数据
   int len;
   for(len=1,i=0;i<M;++i)
           len*=10-i;
   int a[len];
   gen(a);
//开玩
   int  n=1;//玩n把
   int count=0;//总猜测次数
   while(n--)
   {
       //每把从猜中开始,例如玩4个数,4A0B为猜中,
    //此时进入下一把,会有新的数供猜测
    //printf("%d\n",a[n]);
       int A=M,B=0;
       int count_cur=0;
       do
       {
           int player=guess(A,B);
        ++count_cur;
           test(a[n],player,&A,&B);
           printf("%d:%0*d,%dA%dB\n",count_cur,M,player,A,B);
    }while(A!=M||B);
       count+=count_cur;
   }
   return 0;
}

 
搜索更多相关主题的帖子: int for count answer player 
2017-09-05 15:14
a18018953026
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-9-5
得分:0 
回复 2楼 wp231957
可以的啊
2017-09-05 16:31
a18018953026
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-9-5
得分:0 
回复 2楼 wp231957
代码就是那个猜数字的
2017-09-05 16:32
a18018953026
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-9-5
得分:0 
回复 2楼 wp231957
代码就是那个猜数字的
2017-09-05 16:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480495-1-1.html




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

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