
C++中怎么判断输入数字类型是整型还是浮点数?
具体问题:编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除运算。如果是除法,题目保证除数不为0。输入格式:在一行中输入操作数1、运算符、操作数2,...
具体问题:编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除运算。如果是除法,题目保证除数不为0。 输入格式:在一行中输入操作数1、运算符、操作数2,其间用1个空格分隔。操作数为整数。输出格式:整数计算结果(除法为整数除),如果输入格式非法,则输出字符'E' 如输入:11 / -2,则输出:-5 如输入:3.0 + 6,则输出:E
展开
1个回答
展开全部
不需要判断输入数字类型是整型还是浮点数,而且也根本无法判断。
解决办法:用scanf读取输入数据,同时判断是否读取完毕。这是因为符合输入格式,输入流中只会剩下换行符'\n'。
代码片段如下:
int a, b; char c;
scanf("%d %c %d", &a, &c, &b);
if (getchar() != '\n') // 如果输入 3.0 + 6,那么a=3,c='.',b=0,输入流就会剩下" + 6",因此可判定输入格式非法;如果输入3 + 6,那么a=3,c='+',b=6,输入流只会剩下换行符'\n',由此判定输入格式合法
{
printf("E\n"); // 输出:E
while (getchar() != '\n'); // 清空输入流中的内容
}
解决办法:用scanf读取输入数据,同时判断是否读取完毕。这是因为符合输入格式,输入流中只会剩下换行符'\n'。
代码片段如下:
int a, b; char c;
scanf("%d %c %d", &a, &c, &b);
if (getchar() != '\n') // 如果输入 3.0 + 6,那么a=3,c='.',b=0,输入流就会剩下" + 6",因此可判定输入格式非法;如果输入3 + 6,那么a=3,c='+',b=6,输入流只会剩下换行符'\n',由此判定输入格式合法
{
printf("E\n"); // 输出:E
while (getchar() != '\n'); // 清空输入流中的内容
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询