永发信息网

C语言小程序跪求解决!

答案:5  悬赏:50  手机版
解决时间 2021-05-13 08:09
  • 提问者网友:动次大次蹦擦擦
  • 2021-05-12 23:31

任务描述:写一个游戏,小游戏,以前文曲星里发现的,名字为猜数字。首先随机用计算机生成四
个排列在一起的数,比如1234。然后会提示你输入四个数,比如说5678,这四个数有四个位置,如果有一个位置对了,
就用1A表示,有两个位置对了,就用2A表示,当然如果你四个位置都对了,那数字你就猜出来了。如果在这四个数里
面,有1个与计算机生的数相符的,就是1B表示,有两个就是2B表示。这样可能有些不好懂,看我举的例子。

例子:假如计算机生成的数为5234,提示你来猜这个数,你猜5648,这个时候,5的位置正确了,而且只有5的位置是
正确的,所以1A,而你猜的数里面,5和4是正确的数,也就是说有两个正确的数,所以提示2B这个时候,你应该输出
提示1A2B,提示玩游戏的人,继续往下猜。猜的次数超过10没猜出来,游戏结束。

 

麻烦给个简单和程序和配上说明啊!小弟跪谢了!....

最佳答案
  • 五星知识达人网友:春色三分
  • 2021-05-13 00:17

就是随机生成4个数啊,猜数字啊


//等下,帮你写了

全部回答
  • 1楼网友:时间的尘埃
  • 2021-05-13 03:48

楼主 你把QQ给我 我晚上回去给你发一个 去年课程设计我就做的这个 和你的要求一点不差 我直接把程序发给你

  • 2楼网友:神也偏爱
  • 2021-05-13 02:11
先生成随机数,之后就提示用户输入,之后就可以一个一个判断,用户输入的和随机生成的差距,这样就可以做出相关的动作了。
  • 3楼网友:人间朝暮
  • 2021-05-13 01:26

C语言流程如下:     初始化游戏循环     ↓     →→→→→→→→   生成随机数←← ←      ↑    ↓    ↑     ↑    等待一秒         ↓    ↑     ↑    删除数字序列     否    ↓    ↑     →→ → 读取用户输入     ↑    ↑    ↑     否    ↓     没         猜    ↑    ↓    ↑     对    输入了三次←否←输入正确吗         的         相    ↓    ↓    ↑     同     长←←←← 是    ↑     度    ↓         随    ↑     机    是         数    ↓         换   猜对的相同长度随机数换了三次→否→↑     了     三    ↓    ↑     次     ↓    是    ↑     是    ↓    ↑     给数字序列增加一位→→     ↓     结束 初始数字序列长度是两位数,要求玩家在规定的时间内输入数字(例如长度是两位是数时必须在4秒内输入,三位是6秒,每增加一位数时间增加2秒,如果不能在规定时间内输入视为输入错误),游戏结束后输出:   最后一次显示的随机数字;   游戏一共显示了多少次数字;   玩家猜了三次,猜对了多少次,总共用时是多少; 不要使用数组和指针,最好能在TC2上通过。

没时间来写符合你题目的,这个是我以前写过的一个猜数字游戏,系统会给出一个的1~99之间的随机数,你来猜,看多少次可以猜中. 你看用得上不. #include <stdio.h> #include <stdlib.h> #include <time.h> #include <sys/time.h> int main (int argc, char **argv) {   int d, c;   struct timeval tv;

问题存在:

我要的是按下某个键就出现一个随机数,该数显示时间可设定(实际很短),再按一下这个键时就可以较长时间显示(直至按键显示下一个随机数为止).这些随机数最好能即时选择一位、两位、三位等等的数,还有可以选择英语单词的话就更好了,如能帮助解决,在下十分感谢!如方便的话请发qq987520@.sogou.com,谢谢   gettimeofday (&tv, NULL);   srand (tv.tv_usec);   d = rand () % 100;   printf ("Please input a number:\n");   scanf ("%d", &c);   printf ("c=%d\n", c); int min_num = 1; int max_num = 99; int num=1;   while (c != d)     {     if (c > d) {   if( c < max_num )    max_num = c;      printf ("%d - %d\n", min_num ,max_num); }     else if (c < d) {   if( c > min_num )    min_num = c;    printf ("%d - %d\n", min_num ,max_num); } else   break;    scanf ("%d", &c);   num++; printf("c = %d \n",c);     }   printf ("it's true:%d,num=%d\n", c,num);   return 0; }

  • 4楼网友:青灯有味
  • 2021-05-13 01:02

可以给你个思路:随机生成的4位数字可以拆分为4个int 数:

int i = rand()%9000+1000;

int K =i/1000;

i =i%1000;

int M = i/100;

i=i%100;

int N = i/10;

int P = i%10;

这样的话  就把4位数就变为4个数字了;分别是 KMNP;再拿输入的数字来比较,分2次循环,第一次比较相同位置的

比如

int A=0,B=0;

int[] shuzi[] = new int[]{K,M,N,P};

int[] caize = new int[]{};//你猜测的数字分开

for(int l = 0;l<4;l++)

{

  if(shuzi[i] == caize[i] )

{

    A ++;//计数:正确的个数

}

  for(int j =0;j<4;J++)

{

  if(caize[i] == shuzi[j]

{

   B++;//计数 ,出现相同的次数

  continue; //跳出内循环,防止出现4444这样的情况以后 猜测为 1244 出现 2 A8B的情况

}

}

}

C语言都忘记了 只能做 C#

以上仅仅作为参考 !

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯