【C语言】猜数字小游戏

来源:互联网 发布:液压自动车床编程 编辑:程序博客网 时间:2024/05/21 07:49

题目:由计算机“想”一个四位数,请人猜这个四位数是多少。人输入这个四位数后,计算机首先判断这四位数中有几个猜对了,并且在猜对的数字中又有几个位置也是对的,将结果显示出来,给人以提示,请人再猜,直到人猜出计算机所想的四位数为止。请编程实现这个游戏,游戏结束时,显示猜一个数用了几次。

解答:

#include <stdio.h>#include "stdafx.h"#include <stdlib.h>#include <math.h>#include<time.h>void main(){    int randomNumbers[4];//4个随机数数组    srand(time(0));//初始化随机函数发生器,不初始化的话每次取得随机数都是一样的    //获得随机数    for (int i = 0; i < 4; i++)    {        randomNumbers[i] = rand() % 10;        printf("%d", randomNumbers[i]);    }    //不停猜,直到正确    int count = 0;    while (1)    {        int guessNumber = 0;//你输入的猜的数字        int guessNumbers[4];//4个猜数字的数组,guessNumber分割而成        int tempRandomNumbers[4];//新建一个临时数组,存储随机数组的值        //输入        printf("\n猜数字:");        scanf_s("%d", &guessNumber);        for (int i = 3; i >= 0; i--)        {            tempRandomNumbers[i] = randomNumbers[i];//复制            //分割输入的数字,存储在数组中            guessNumbers[i] = guessNumber % 10;            guessNumber = guessNumber / 10;        }        //计算有几个数字和位置都正确        int y = 0;        for (int i = 0; i < 4; i++) {            if (randomNumbers[i] == guessNumbers[i]) {                y++;            }        }        //将两个数组都重新从小到大排序(冒泡排序)        int temp;        for (int i = 0; i < 4; i++)            for (int j = i + 1; j < 4; j++)            {                //排序随机数数组                if (tempRandomNumbers[i] > tempRandomNumbers[j])                {                    temp = tempRandomNumbers[j];                    tempRandomNumbers[j] = tempRandomNumbers[i];                    tempRandomNumbers[i] = temp;                }                //排序所猜数数组                if (guessNumbers[i] > guessNumbers[j])                {                    temp = guessNumbers[j];                    guessNumbers[j] = guessNumbers[i];                    guessNumbers[i] = temp;                }            }        //计算有几个数字正确        int x = 0;        int a = 0, b = 0;        while (1)        {            if (tempRandomNumbers[a] == guessNumbers[b])             {                a++;                b++;                x++;            }            else if (tempRandomNumbers[a] > guessNumbers[b])            {                b++;            }            else if (tempRandomNumbers[a] < guessNumbers[b])            {                a++;            }            if (x == 4 || a == 4 || b == 4)                break;        }        //输出        printf("数字正确的有:%d个\n", x);        printf("数字和位置都正确的有:%d个\n", y);        count++;        if (y == 4)            break;    }    printf("共猜了%d次数字\n", count);    system("pause");}

结果:
这里写图片描述

0 0
原创粉丝点击