• C语言猜数字游戏


    猜数字游戏,各式各样的实现方式,我这边提供一个实现方式,希望可以帮到新手。

    老程序猿就不要看了,黑呵呵

    源代码1
    include stdio.h
    include stdlib.h
    include time.h
    void generate(int a[]);                //4位数随机生成函数
    void deal(int num,int b[]);            //对用户所猜数处理
    void judge(int a[]);                    //多余函数!!!!
    void compare(int a[],int b[],int c[]);    //比较函数,用于进行比较
    int main()
    {
    int i,j;                          //定义变量
    int m=0,n=0;                      //m代表相同的位数,n代表不同的位数
    int a[4],b[4],c[4];             //a存储随机数,b存储用户猜测数,c存储标志
    int num;
    generate(a);
    printf("已经产生系统随机数,且4位数各个位的数字不相同
    ");
    while(1)
    {
    printf("1.查看随机数输入1
    ");
    printf("1.进行猜测输入2
    ");
    printf("请输入你的选择:");
    scanf("%d",&j);
    switch(j)
    {
    case 1:
    {
    for(i=0;i {
    printf("%d",a[i]);
    }
    printf("
    ");
    };
    break;
    case 2:
    /*{
    printf("请输入你猜测的数:");
    scanf("%d",&num);
    deal(num,b);
    compare(a,b,c);
    printf("相同的数位为第:");
    for(i=0;i {
    if(c[i]==1)
    printf("%d ",(i+1));
    }
    printf("位");
    printf("
    ");
    };*/
    {
    printf("请输入你猜测的数:");
    scanf("%d",&num);
    deal(num,b);
    compare(a,b,c);
    for(i=0;i {
    if(c[i]==1)
    m++;
    else
    n++;
    }
    printf("相同的数位有:%d位,不同的数位有:%d位
    ",m,n);
    m=0;
    n=0;
    };
    break;
    }
    }
    return 0;
    }
    /**********************
    *	4位数随机生成函数
    *	@para int a[]
    *	@return ;
    ***********************/
    void generate(int a[])
    {
    int i,j;
    srand((unsigned)time(0));
    for(i=0;i {
    a[i]=rand()%10;
    for(j=0;j {
    if(a[j]==a[i])
    {
    j=0;
    a[i]=rand()%10;
    }
    }
    }
    }
    /**************************
    *	用户所猜数处理
    *	@para int a
    *	@return int*
    ***************************/
    void deal(int num,int b[])
    {
    int i;
    int flag=1000;
    for(i=0;i {
    b[i] = num/flag;
    num-=num/flag*flag;
    flag/=10;
    }
    }
    /**************************
    *	比较函数,用于进行比较
    *	@para
    *	@return
    ***************************/
    void compare(int a[],int b[],int c[])
    {
    int i;
    for(i=0;i {
    if(a[i]==b[i])
    {
    c[i]=1;
    }
    else
    {
    c[i]=0;
    }
    }
    }
    
    源代码2
    include stdio.h
    include cstdlib
    /*定义一些必要的数组,用来存放数据*/
    int b[10],c[10],d[10],e[10], f[10],w[10];
    void fenjie(int n,int s[]){                          //分解函数,用于分解四位数的个、十、百、千位
    s[0]=n/1000;
    s[1]=n/100-s[0]*10;
    s[2]=n/10-s[0]*100-s[1]*10;
    s[3]=n%10;
    }
    int Isequeal(int y,int w[])                      //判断函数,用于判断用户输入的初始被猜数字是否有重复数字
    {
    w[0]=y/1000;
    w[1]=y/100-w[0]*10;
    w[2]=y/10-w[0]*100-w[1]*10;
    w[3]=y%10;
    if(w[0]!=w[1]  && w[0]!=w[2]  && w[0]!=w[3]  && w[1]!=w[2]  && w[1]!=w[3]  &&  w[2]!=w[3] )
    {
    printf("您输入的被猜的数字符合要求
    ");
        return 0;
    }
    else 
    {
    printf("您输入的被猜的数字中有重复数字,不符合要求,请重新输入:
    ");
    return -1;
    }
    }
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    int main(void)                     //主函数
    {
    
    int a;            //定义用户输入的被猜数据
    int p;	       
    printf ("请输入一个需要被猜的数值:
    ");
       A: scanf("%d",&a);
      if(Isequeal(a,w) ==0)    //如果用户输入的数字符合要求
       {
       fenjie(a,b);
       int cont=0;                          //定义用户猜的次数
    while(1){
    cont++;
    int x;                           //定义用户输入的猜测数据
    printf("第%d次猜:    ",cont);
    scanf("%d",&x);
    fenjie(x,c);                  //分解用户输入的猜测数据
        int j=0, t=0,v=0,i=0;
        for(i=0;i d[i]=1;
    e[i]=1;
    f[i]=-1;
    }
    for(i=0;i for(j=0;j if(e[i]==2)
    continue;
    if(b[i]==c[j]){
    if(d[j]){
    if(e[i]==1){
    t++;
    }else{
    d[f[i]]=1;
    }
    d[j]=0;
    e[i]=0;
    f[i]=j;
    }
    if(i==j){
    v++;
    e[i]==2;
    }
    }
    }
    }
        printf("系统提示:%d个数字位置相同,%d个数字位置不同
    ",v,4-v);
    if(v==4){
    printf("恭喜你猜对了,你一共猜了%d 次
    ",cont);
    break;
    }
    } 
       printf("您一共猜了%d次",cont);
       }
    else 
    {
    goto A;                                                   //goto语句用于判断是否重复
    }
    return 0;
    }
    
    非系统生成随机数源代码
    #include stdio.h
    #include stdlib.h
    #include time.h
    void deal(int num,int b[]);
    void compare(int a[],int b[],int c[]);
    int main()
    {
    int i,j,flag=1;
    int m=0,n=0;                      
    //m代表相同的位数,n代表不同的位数
    int a[4],b[4],c[4];             
    //a存储随机数,b存储用户猜测数,c存储标志
    int num,z;
    printf("请输入想要猜的数字:");
    scanf("%d",&z);
    deal(z,a);
    while(1)
    {
    for(i=0;i {
    for(j=i+1;j {
    if(a[i]==a[j])
    {
    flag=0;
    }
    }
    }
    if(flag==1)
    {
    break;
    }
    else
    {
    printf("输入的数字不符合规定,请重新输入:");
    scanf("%d",&z);
    deal(z,a);
    flag=1;
    }
    }
    while(1)
    {
    
    printf("请输入你猜测的数:");
    scanf("%d",&num);
    deal(num,b);
    compare(a,b,c);
    for(i=0;i {
    if(c[i]==1)
    m++;
    else
    n++;
    }
    printf("相同的数位有:%d位,不同的数位有:%d位
    ",m,n);
    m=0;
    n=0;
    }
    return 0;
    }
    void deal(int num,int b[])
    {
    int i;
    int flag=1000;
    for(i=0;i {
    b[i] = num/flag;
    num-=num/flag*flag;
    flag/=10;
    }
    }
    void compare(int a[],int b[],int c[])
    {
    int i;
    for(i=0;i {
    if(a[i]==b[i])
    {
    c[i]=1;
    }
    else
    {
    c[i]=0;
    }
    }
    }
    
    
    
    玩笑图片
    经典代码程序,也是感受面向过程编程的实例。
  • 相关阅读:
    论财务的意义
    项目忙乱的原因
    回家的路
    但问耕耘
    做自己的主角
    坚持的意义
    觉醒的意义
    梦想的力量
    把自己当作一件艺术品
    九宫格年度计划
  • 原文地址:https://www.cnblogs.com/1996jiwei/p/5964268.html
Copyright © 2020-2023  润新知