首页 > 试题广场 > (选做)模拟文曲星上的猜数游戏,先由计算机随机生成一个各位相
[问答题]

(选做)模拟文曲星上的猜数游戏,先由计算机随机生成一个各位相异的4位数字,由用户来猜,根据用户猜测的结果给出提示xAyB。其中,A前面的数字表示有几位数字不仅数字猜对了,而且位置也正确,B前面的数字表示有几位数字猜对了,但是位置不正确。最多允许用户猜的次数由用户从键盘输入。如果猜对,则提示“Congratula-tions!”;如果在规定次数以内仍然猜不对,则给出示“Sorry,you haven't guess the rightnumber!”。程序结束之前,在屏幕上显示这个正确的数字。

#include <stdio.h>
#
include <stdlib.h>
#include <math.h>
int main()
{
    int i,j;
    int num[5];
    int guessnum;
    double guess[5];
    int maxguess,x,y;
    printf("请输入猜数次数:");
    scanf("%d",&maxguess);
    for(i=1;i<=4;i++)
    {
        num[i]=rand()%10; 
        printf("%d",num[i]);
    
    int flag=0;
    while(maxguess--)
    {
        flag=1;x=0;y=0;
        
        printf("请输入所猜数字:");
        scanf("%d",&guessnum);
        for(i=1;i<=4;i++)
        {
            guess[5-i]=guessnum%10;
            guessnum=guessnum/10;
        }
        
        for(i=1;i<=4;i++)
        {
            if(guess[i]!=num[i]) 
            {
                flag=0;
                for(j=1;j<=4;j++)
                {
                    if(guess[j]==num[i]&&i!=j)
                        y++;
                }
            }
            else x++;
        }        
        if(flag==1) {printf("Congratulation!");break;}
        else
        {
            printf("%dA%dB\n",x,y);
        }
    }
    if(maxguess<=0) printf("Sorry, you haven't guess the right number!\m");
    return 0;

发表于 2020-02-26 18:32:29 回复(0)