c语言编程 编一个猜数字游戏

c语言编程 游戏规则:
1使用随机函数产生一个五位数,各位上的数字不重复,从一到九
.2按以下提示猜出这个五位数:
对每次输入猜测的数据:给出本次共猜对了多少个数字,猜对的数字并且位置正确的个数.

源码如下:

/* File: guess.c */

#include <stdio.h>  /* standard input & output support */

#include <stdlib.h> /* srand() rand() */

#include <time.h>   /* time() */

/* 宏定义 */

#define NUMBER_LENGTH   5   /* 随机数长度 */

#define NUMBER_LIMIT    10  /* 随机数限制, 每一位0-9 */

#define INPUT_LENTH     128 /* 输入缓冲区大小 */

char goal[NUMBER_LENGTH]    = {0};  /* 保存随机数 */

char flag[NUMBER_LIMIT]     = {0};  /* 保存随机数标志, 保证不重复 */

char input[INPUT_LENTH]     = {0};  /* 保存输入 */

/* 初始化用于保存数据的数组 */

void initData()

{

    int i = 0;

    while (i < NUMBER_LENGTH)

        goal[i++] = 0;

    

    i = 0;

    while (i < NUMBER_LIMIT)

    {

        flag[i++] = 0;

    }

}

/* 初始化用于保存缓冲区的数组 */

void initBuffer()

{

    int i = 0;

    while (i < INPUT_LENTH)

        input[i++] = 0;

}

/* 显示猜测结果 */

void display()

{

    int count = 0;

    

    int i = 0;

    while (i < NUMBER_LENGTH)

    {

        if (input[i] == goal[i])

        {

            printf("%c", 'o');

            count++;

        }

        else

        {

            printf("%c", 'x');

        }

        

        i++;

    }

    

    printf("\nRIGHT: %d bit(s)\n", count);

    

    if (count == NUMBER_LENGTH)

    {

        printf("You win! The number is %s.\n", goal);

        

        exit(0);

    }

}

/* 生成随机数 */

void general()

{

    /* 以时间作为时间种子保证生成的随机数真正具有随机性质 */

    srand((unsigned int)time(NULL));

    

    int i = 0;

    while (i < NUMBER_LENGTH)

    {

        char tmp;

        do

        {

            tmp = '0' + ((i != 0) ? (rand() % 10) : (1 + rand() % 9));

        } while (flag[tmp] != 0);

        

        flag[tmp] = 1;

        goal[i++] = tmp;

    }

}

/* 输入方法,用于猜测 */

void guess()

{

    printf("Please input the number you guessed:\n");

    scanf("%s", input);

    display();

    initBuffer();

}

/* 主函数,程序主框架 */

int main (int argc, const char * argv[])

{

    initData();

    initBuffer();

    general();

    while (1) guess();

    return 0;

==============================================

运行结果见附图,希望我的回答能够对你有所帮助。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-04-12
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>

void main()/*主函数*/
{
int a,b,times=0,i,j,guess=0,answer[5],g[5];

for(i=0;i<5;i++)/*随即产生5个数*/
{
srand((unsigned int)time(NULL));/*以当前时间为种子*/
answer[i]=rand()%9+1;/*保证为1-9的数,rand产生随即0-65535的数,对9取余为0-8,都加1就是1-9了*/
for(j=0;j<i;j++)
while(answer[i]==answer[j])/*检查有没有重复的数据,有就重新生成*/
{
answer[i]=rand()%9+1;
j=-1;/*新生成的数要重新检查,此步后马上执行j++*/
}
}
printf("随即的5个数是:");
for(i=0;i<5;i++)
printf("%d",answer[i]);/*输出结果到屏幕,便于测试*/
printf("\n");

printf("请输入猜测数字:\n%");
a=0;
while(a!=5)/*a记录位置对并且数也对的,如果5个都对就是猜对了*/
{
a=0;
b=0;/*b记录数是有的,但位置不对的个数*/
times++;
printf("第 %d 次猜测:\t",times);
scanf("%d",&guess);
while(guess<12345||guess>99999)/*如果猜的数超过这个范围就是瞎猜的,肯定不对,再来一次*/
{
printf("你输入了一个非常规数据,请重新输入:\t");
scanf("%d",&guess);
}
for(i=4;i>-1;i--)/*把玩家猜的5个数放到数组中,便于检查对错*/
{
g[i]=guess%10;
guess=(guess-g[i])/10;
}
for(i=0;i<5;i++)/*检查数据对错*/
{
for(j=0;j<5;j++)
{
if(g[i]==answer[j])/*如果猜得的数与结果的某个数一样就把b加1*/
{
b++;
if(i==j)/*如果位置也对,那就是a加1了,对应的b已经加过,应该减1*/
{
a++;
b--;
}
}
}
}
printf("猜测结果:%dA%dB\n",a,b);
if(a==5)
printf("\t答案正确\n"); /*如果a=5就是猜对了*/
}
}本回答被提问者和网友采纳
第2个回答  2011-12-21
楼上厉害!给楼上分吧···

c语言 ,编写一个猜数游戏程序,输入一个设定的整数,供玩者猜。
include <stdio.h>#include <stdlib.h>#include #define GUESS_LIMIT 1000char *infos[] = { "【猜数游戏已启动】\\n数字已经设定好,请玩家进行猜测,数字范围在0~%d\\n", "猜测数字大了!请继续猜测:", "猜测数字小了!请继续猜测:", "恭喜猜中数字!!!共猜测了%d次\\n"...

用C语言编写的小游戏代码是什么?
{ printf("\\n\\n 猜 数 字 小 游 戏\\n\\n");printf(“ 猜四个数字,如数字与顺序都正确记为A,数字正确位置不对记为B.\\n”);} void start( ) \/\/开始游戏 {int m,n; \/\/m是完全猜对的个数,n是顺序不对的个数 while(1){srand((unsigned)time(NULL)); \/\/初始...

c语言小游戏:猜数字 随机一个1-100之间的数,根据数据输入进行提示_百度...
int main(void){ int value=0;int num=0;srand((unsigned int) time(NULL));num=rand()%100+1; \/\/1-100 while(1){ scanf("%d",&value);if(num>value){ printf("您猜小了\\n");} else if(num<value){ printf("您猜大了\\n");} else if(num=value){ printf("恭喜您猜对了\\...

设计一个C语言程序 猜数游戏 规则:电脑随机产生一个1-100的随机数让玩 ...
只用%d次就猜对了。\\r\\n再来一把!\\r\\n",

C语言编程,猜数字游戏,求解!
int main (){ int guess[4],answer[4]={1,3,5,2},a=0,b,times=0,i,j;;printf("please guess\\n");while(a!=4){ a=0;b=0;times++;\/\/printf("%d ",times);printf("输入你猜的数字 ");for(i=0;i<4;i++)scanf("%d",&guess[i]); \/\/你要说清楚放在哪!不然...

用C语言编写一段猜数字游戏,跟一般的不一样,规则如下
int main(void){ int a,low,k,he,d;k=50; \/\/k为答案数 low=1;he=100;scanf("%d",&a);while(a!=k){ if(a<k){ low=a;printf("猜数的范围是:%d到%d\\n",low,he);} if(a>k){ he=a;printf("猜数的范围是:%d到%d\\n",low,he);} scanf("%d",&a);} printf("答案...

猜数字游戏C语言编程
void main(){ int magic,guess,k;char over,c;printf("退出游戏请输入z\\n");do { srand (time(NULL));magic=rand()%100+1;printf("请输入猜测的数字1~100\\n");for(k=0;guess!=magic;k++){ scanf("%d",&guess);if (guess==magic)printf("恭喜,你猜对了!\\n");scanf("%c",&...

C语言 编写一个猜数字游戏,规则:使用随机函数产生一个5位数,输入猜测...
include void main(){ intA=0,B,i,j,k=0,a[5],g[5];printf("请输入你猜测的一个5位数数字\\n");scanf("%d",&k);while(k<12345||k>99999){ printf("你输入了一个非常规数据,请重新输入\\n");scanf("%d",&k);} srand((unsignedint)time(NULL));for(i=0;i<5;i++){ a[i...

c语言设计一个猜数游戏,电脑会自动提示大了或小了,直到猜对为止
include "time.h"include "stdlib.h"int main(int argc, char* argv[]){ int r;int g;srand(time(0));r = rand()%1000;\/\/产生一个小于1000的随机数,让大家猜 printf("请输入你猜的数:");scanf("%d",&g);while(g != r)\/\/没猜中就循环 { if(g > r){ printf("大了,请...

【c语言】编写一个猜数字游戏
include void circle(int i){ int n ;printf("请输入您所猜的数字(0-100) \\n");scanf("%d",&n);if(i<n){ printf("the number is larger,input agine.\\n");circle(i);} if(i>n){ printf("the number is smaller.input agine \\n");circle(i);} if(i==n)\/\/?不是 printf...

相似回答