您的位置:

关于c语言110猜谜的信息

本文目录一览:

C语言题目 编程实现数字猜谜游戏!

一个函数用于生成一个随机数

再用一个函数进行三次循环

如果循环中输入的数字猜对了就返回1如果三次循环结束则返回0

主数字判断返回的结果如果是1则表示猜对否则表示猜错

然后询问是否继续进行猜数字游戏

下面是一个简单的代码

#include stdio.h

#include time.h

void clean_input_buf(void)

{

    while(getchar() != '\n');

}

int make_num(int num)

{

    srand(num);

    return 1+rand()%20;

}

int guess_num(void)

{

    int i=3;

    int n;

    int num;

    num=make_num(clock());

    while(i)

    {

        printf("请输入一个你猜的数字:");

        scanf("%d",n);

        if(n == num)

            return 1;

        clean_input_buf();

        --i;

    }

    return 0;

}

int main(int argc,char **argv)

{

    char c;

    printf("猜数字游戏!\n游戏要猜测的数字为1-20,每个数字可以猜测3次!\n");

    while(1)

    {

        if(guess_num() == 1)

            printf("恭喜你,你猜中了!\n");

        else

            printf("很遗憾,你猜错了!\n");

redo:

        printf("还要继续游戏吗?继续输入Y否则输入N!\nY/N:");

        c=getchar();

        clean_input_buf();

        if(c == 'Y' || c == 'y')

            continue;

        else if(c == 'N' || c == 'n')

            break;

        else

        {

            printf("输入错误,请重新输入!\n");

            goto redo;

        }

    }

    return 0;

}

c语言猜数字游戏源代码

小游戏2048:

#includestdio.h

#includestdlib.h

#includeconio.h

#includetime.h

#includewindows.h

int  jsk( );   //计算空格数

void rsgm( );  //重置游戏

void inkey( );  //按键输入

void left( );   //向左移动

void right( );  //向右移动

void up( );  //向上移动

void down( );  //向下移动

void show( );   //输出界面

void adnum( ); //添加随机数

void yes( );   //游戏是否结束(1是0否)

void gtxy(int x, int y); //控制光标位置的函数

int a[4][4];   //存储16个格子中的数字

int score = 0;  //每局得分

int best = 0;  //最高得分

int ifnum;  //是否需要添加数字(1是0否)

int over;   //游戏结束标志(1是0否)

int i,j,k;

int main( )

{ rsgm( );  //重置游戏

  inkey( );  //按键输入

  return 0;

}

void Color(int a)   //设定字符颜色的函数(a应为1-15)

{  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);  }

void rsgm( )   //重置游戏

{ score = 0; ifnum = 1; over = 0; srand((unsigned)time(0));  //启动随机数发生器

int n = rand( ) % 16;   //随机函数产生0-15的数字

for (i = 0; i 4; i++)

{for (j = 0; j 4; j++)

   { if (n == 0) { int k = rand( ) % 3; if (k == 0 || k == 1) { a[i][j] = 2; }

                        else { a[i][j] = 4; } n--; }

     else { a[i][j] = 0; n--; }

   }

}

adnum( );

system("cls");

CONSOLE_CURSOR_INFO gb={1,0};  //以下两行是隐藏光标的设置,gb代指光标

SetConsoleCursorInfo( GetStdHandle(STD_OUTPUT_HANDLE), gb );

Color(14);   //设置字体淡黄色

printf("\n\n\t\t  2048小游戏"); Color(7);   //恢复白字黑底

printf("\n\t┌──────┬──────┬──────┬──────┐");

printf("\n\t│      │      │      │      │");

printf("\n\t├──────┼──────┼──────┼──────┤");

printf("\n\t│      │      │      │      │");

printf("\n\t├──────┼──────┼──────┼──────┤");

printf("\n\t│      │      │      │      │");

printf("\n\t├──────┼──────┼──────┼──────┤");

printf("\n\t│      │      │      │      │");

printf("\n\t└──────┴──────┴──────┴──────┘");

show( );

}

void show( )   //输出界面

{ for(i=0;i4;i++)

for(j=0;j4;j++)

   { gtxy(7*j+9,2*i+4);   //gtxy(7*j+9, 2*i+4)是光标到指定位置输出数字

     if(a[i][j]==0){printf("      "); Color(7); printf("│");}

     else if(a[i][j]10){ if (a[i][j] == 2) { Color(14); }

                                else if (a[i][j] == 4) { Color(13); }

                                else if (a[i][j] == 8) { Color(12); }

                                printf("   %d  ", a[i][j]); Color(7 ); printf("│");

                              }

    else if (a[i][j] 100){if (a[i][j] == 16) { Color(12); }

                                   else if (a[i][j] == 32) { Color(10); }

                                   else if (a[i][j] == 64) { Color(2 ); }

                                   printf("  %d  ", a[i][j]); Color(7); printf("│");

                                 }

   else if (a[i][j] 1000) {if (a[i][j] == 128) { Color(9); }

                                       else if (a[i][j] == 256) { Color(1); }

                                       else if (a[i][j] == 512) { Color(13); }

                                       printf("  %d ", a[i][j]); Color(7); printf("│");

                                     }

    else if (a[i][j] 10000) {if (a[i][j] == 1024) { Color(5); }

                                         else { Color(15); }

                                         printf(" %d ", a[i][j]); Color(7); printf("│");

                                       }

}

if (jsk( ) == 0)

  {  yes( );  if (over) { gtxy(9,12); Color(10);

                                printf("\n\n  游戏结束!是否继续? [ Y/N ]:"); }

  }

}

void inkey( )   //按键输入

{ int key;

while (1)

    { key = getch( );

      if (over) { if (key == 89|| key == 121) { rsgm( ); continue; }

                      else  if (key == 78|| key == 110) { return; }

                      else  continue; }

      ifnum = 0;

     if(key==224)key=getch( );

        switch (key)

            { case 75: left( ); break;

              case 77: right( ); break;

              case 72: up( ); break;

              case 80: down( );break;

}

  if (score best) { best = score; }

  if (ifnum) { adnum( ); show( ); }

}

}

int jsk( )   //计算空格数

{ int n = 0;

for (i = 0; i 4; i++)

   { for (j = 0; j 4; j++) { if ( a[i][j] == 0) {n++;}  }   }

return n;

}

void left( )   //向左移动

{ for (i = 0; i 4; i++)

{for (j = 1, k = 0; j 4; j++)

    { if (a[i][j] 0)

       { if ( a[i][k] == a[i][j])

             { a[i][k] *= 2;  k++;

                score = score + 2 * a[i][j];

                a[i][j] = 0;  ifnum = 1; }

          else if ( a[i][k] == 0) { a[i][k] = a[i][j]; a[i][j] = 0; ifnum = 1; }

          else { a[i][k + 1] = a[i][j]; if ((k + 1) != j) { a[i][j] = 0; ifnum = 1; }

          k++; }

       }

     }

}

}

void right( )   //向右移动

{for (i = 0; i 4; i++)

  {for (j = 2, k = 3; j = 0; j--)

     {if (a[i][j] 0)

        { if (a[i][k] == a[i][j])

               {a[i][k] *= 2; k--; score = score + 2 * a[i][j]; a[i][j] = 0; ifnum = 1; }

    else if ( a[i][k] == 0) {a[i][k] = a[i][j]; a[i][j] = 0; ifnum = 1; }

    else { a[i][k - 1] = a[i][j]; if ((k - 1) != j) { a[i][j] = 0; ifnum = 1; } k--; }

   }

     }

}

}

void up( )   //向上移动

{for (i = 0; i 4; i++)

{for (j = 1, k = 0; j 4; j++)

     {if (a[j][i] 0)

         {if ( a[k][i] == a[j][i]) { a[k][i] *= 2; k++;score = score + 2 * a[j][i];

                                           a[j][i] = 0; ifnum = 1; }

          else if ( a[k][i] == 0) { a[k][i] = a[j][i]; a[j][i] = 0; ifnum = 1; }

          else { a[k + 1][i] = a[j][i]; if ((k + 1) != j) { a[j][i] = 0; ifnum = 1; }

          k++; }

   }

    }

}

}

void down( )   //向下移动

{ for (i = 0; i 4; i++)

{for (j = 2, k = 3; j = 0; j--)

  {if (a[j][i] 0)

     {if (a[k][i] == a[j][i])

          {a[k][i] *= 2; k--;score = score + 2 * a[j][i]; a[j][i] = 0; ifnum = 1; }

       else if (a[k][i] == 0) {a[k][i] = a[j][i]; a[j][i] = 0; ifnum = 1; }

       else {a[k - 1][i] = a[j][i];

                if ((k - 1) != j) {a[j][i] = 0; ifnum = 1; } k--; }

      }

   }

}

}

void adnum( )   //添加随机数

{ srand(time(0)); int n = rand( ) % jsk( );

for (int i = 0; i 4; i++)

   {for (int j = 0; j 4; j++)

      { if (a[i][j] == 0) {if (n != 0) { n--; }

        else {int k = rand( ) % 3;

                if (k == 0 || k == 1) {a[i][j] = 2; return; }

                else {a[i][j] = 4; return; } }

      }

   }

}

}

void yes( )   //游戏是否结束

{ for (int i = 0; i 4; i++)

{for (int j = 0; j 3; j++)

     {if (a[i][j] == a[i][j + 1] || a[j][i] == a[j + 1][i]) {over = 0; return; }}

}

over = 1;

}

void gtxy(int x, int y)   //控制光标位置的函数

{ COORD zb;   //zb代指坐标

zb.X = x;

zb.Y = y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), zb);

}

C语言猜谜小游戏

把int count = 3;定义在do里面,要不然你循环过去后count=0;这句count0就永不成立。

还有就是在scanf("%c", another_game);前要清空缓冲区。

第一种用fflush(stdin)清除缓存,也就是清楚缓存中上一次输入残留下来的回车键

第二种scanf(" %c", another_game);;在%c前加上一个空格

第三种在scanf("%c", another_game);前加getchar();用于吃掉回车键,避免被%c接收

c语言编程 ——数字迷

#includestdio.h

intmain()

{

intT,R,e,n,i,g,v,q,Q,C,E,G,I,N,V;

inta,b,c;

#includestdio.h

intmain()

{

intT,R,e,n,i,g,v,q,Q,C,E,G,I,N,V;

inta,b,c;

for(i=4;i=9;i=i+5){

for(v=8;v=9;v++){

for(e=1;e=9;e=e+2){

for(n=0;n=9;n++){

for(g=0;g=9;g++){

for(c=1;c=9;c++){

for(q=0;q=9;q++){

a=v*10000+i*1000+n*100+g*10+1;

b=(c*1000+i*100+n*10+q)*2;

c=100000+e*1000+n*100+10+e;

if((a+b)==c){

printf("%d:%d",C,c);

printf("%d:%d",E,e);

printf("%d:%d",G,g);

printf("%d:%d",I,i);

printf("%d:%d",N,n);

printf("%d:%d",Q,q);

printf("R:0 ");

printf("T:1 ");

printf("%d:%d",V,v);}}}}}}}}

return 0;

}