| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1123 人关注过本帖
标题:输入浮点数就出错,求助!
只看楼主 加入收藏
翰墨香
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-10-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
输入浮点数就出错,求助!
/*取石头小游戏*/
#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····程序就出错了,重复输出

你要取出石头数:输入错误,请重新输入!
你要取出石头数:输入错误,请重新输入!
你要取出石头数:输入错误,请重新输入!
你要取出石头数:输入错误,请重新输入!


求组



搜索更多相关主题的帖子: 小石子 include 小游戏 游戏 while 
2011-10-06 12:00
dcren007
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-10-4
收藏
得分:0 
我完全看不懂啊,我是菜鸟
2011-10-06 12:07
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 楼主 翰墨香
知道浮点数还能问这个问题?看看书上对格式化输入函数scanf的讲解

总有那身价贱的人给作业贴回复完整的代码
2011-10-06 12:24
翰墨香
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-10-6
收藏
得分:0 
回复 3楼 embed_xuel
好··我去看看!!!
2011-10-06 12:39
翰墨香
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-10-6
收藏
得分:0 
回复 3楼 embed_xuel
书上没讲啊老兄!!!帮帮忙啊大哥!
2011-10-06 13:06
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
scanf ("%d",&a);//明明输入整形,你输入浮点数,不出错说明编译器有问题。
2011-10-06 13:34
翰墨香
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-10-6
收藏
得分:0 
回复 6楼 hjywyj
我当然知道啊!!

我是说假如用户输入的是浮点型!!应该怎样纠错,警告!!!
2011-10-06 13:38
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:20 
程序代码:
int man(int c)        //玩家输入函数.
{
    int i=1;
    double a;
    while (i)
    {   
         while(true)
         {
        printf ("你要取出石头数:");
        scanf ("%lf",&a);
        if(a-(int)a)
        printf("请输入整数\n");
        else break;
        } 
        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);
}
收到的鲜花
  • 翰墨香2011-10-06 15:21 送鲜花  3朵   附言:那个(a-(int a))是什么意思?我是说功能?书 ...
  • 翰墨香2011-10-06 15:26 送鲜花  3朵   附言:我知道了!如果输入浮点数的话a-(int)a就 ...
2011-10-06 13:45
翰墨香
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-10-6
收藏
得分:0 
回复 8楼 hjywyj
谢谢了!!刚自己想出来!上来就看到答案了!不过还是谢谢你!!!!
2011-10-06 15:16
快速回复:输入浮点数就出错,求助!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016157 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved