回 帖 发 新 帖 刷新版面

主题:[讨论]输入浮点数就出错,求助!

/*取石头小游戏*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    int a,b,left,i=1;
    int cp(int a);
    int man();
    srand((unsigned)time(NULL));
    
    printf ("游戏规则:\n");
    printf ("有n个小石子,玩家和电脑轮流从中取石子。每次只能取1个或2个石子,不能不取,对谁都一样。最后取完所有石子的那个赢。\n\n");
    printf ("游戏开始!\n\n");

    while(i)
    {
        left=rand()%28+3;
        printf ("总共有%d个石头.\n",left);        //系统自动生成石头数,石头数在3-30之间。
        
        while (i)
        {
            a=man(left);
            left=left-a;
            if (left==0) 
            {
                printf ("玩家胜利!\n\n");
                break;
            }
            b=cp(left);
            left=left-b;
            printf ("还剩下%d个石头.\n\n",left);
            if (left==0) 
            {
                printf ("电脑胜利!\n\n");
                break;
            }
        }

        printf ("新一轮游戏开始!\n\n\n\n");
    }

    return 0;


    

}



int man(int c)        //玩家输入函数.
{
    int a,i=1;
    while (i)
    {    
        printf ("你要取出石头数:");
        scanf ("%d",&a);    
        if (!(c==1))        //避免当剩下一个石头时候输入2导致石头数为负值。
        {
            if (a==1 || a==2) i=0;        //确保输入石头数符合规则!
            else printf ("输入错误,请重新输入!\n");
        }
        else        
        {
            if(a==1) i=0;
            else printf ("亲,只剩下一个石头了,请重新输入!\n");
        }

    }
    return (a);
}

int cp(int a)        //电脑智能取石头数。当石头数为双数时候取一个,单数时候取两个。
{
    int b;
    if (a>2)
    {
        if (a%2==0) b=1;
        else b=2;
        printf ("电脑取出了%d个石头。\n",b);
    }
    else        //避免剩下两个石头时候,电脑仍然取一个。
    {
        if (a==2) b=2;
        else b=1;
        printf ("电脑取出了%d个石头。\n",b);
    }
    return (b);
}



如果输入的是带小数点的,比如说1.5,2.4之类的··程序就会出错!重复显示一些内容!!
求助!!

回复列表 (共1个回复)

沙发

数据类型是int.......

我来回复

您尚未登录,请登录后再回复。点此登录或注册