主题:[讨论]输入浮点数就出错,求助!
/*取石头小游戏*/
#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之类的··程序就会出错!重复显示一些内容!!
求助!!
#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之类的··程序就会出错!重复显示一些内容!!
求助!!