在C中来判断输入的是浮点数是整数的DEMO。
通过表达式m-(int)m是否大于0来判断或者把输入作为字符串读入,然后检索字符串中是否有"."来判断
#include
#define FIRST_DEMO //计算浮点数的位数
//#define SECOND_DEMO
//#define THIRD_DEMO //把输入作为字符串读入
int main(void)
{
#ifdef FIRST_DEMO
/*判断是否浮点数并计算位数*/
float source_data;
int num=0;
scanf("%f",&source_data);
while((source_data-(int)source_data)>0)
{
num=num+1;
source_data=source_data*10;
}
if (num==0)
{
printf("输入的是一个整数%d\n",(int)source_data);
}
else
{
printf("输入的是一个浮点数,有%d位小数\n",num);
}
#elif defined SECOND_DEMO
/*判断是浮点数还是整数*/
float m;
int n=0;
scanf("%f",&m);
if ((m-(int)m)>0)
{
printf("%f是浮点数\n",m);
}
else
{
printf("%d是整数\n",(int)m);
}
#elif defined THIRD_DEMO
/*实现方法是把输入作为字符串读入,然后根据“.”还判断*/
int int_data=0;
double double_data=0.0;
char buffer[10]="";
scanf("%s",buffer);
if (NULL==(strchr(buffer,'.')))
{
sscanf(buffer,"%d",&int_data);
printf("输入的是整型数据===%d\n",int_data);
}
else
{
sscanf(buffer,"%lf",&double_data);
printf("输入的是浮点型数据===%lf\n",double_data);
}
#endif
system("pause");
return 0;
}