我正在尝试制作一个程序,只有当该数字可以被2整除时才将数字除以2.我这样做是为了如果数字除以2的结果是浮点数,则除以2 ,像这样:
int p;
printf("Percentage please: ");
scanf("%d", &p);
while (((p/2) != // a floating point value)
{
p = p/2;
}
但问题是我不确定C标准库中是否有函数,如isint()
或iswholenumber()
。有没有任何功能或任何方式我可以实现类似的东西?
任何帮助将不胜感激。
答案 0 :(得分:2)
您正在寻找模运算,它返回除法的其余部分,因此:
if( n % 2 == 1) // the number is not divisible by 2
if( n % 2 == 0) // divisible by 2
答案 1 :(得分:0)
当您划分两个int
时,结果始终为int
(编辑:截断):
1/2 --> 0
2/2 --> 1
3/2 --> 1
所以逻辑p/2 is not a float
没有意义。相反,正如其他人所建议的那样,你想使用模运算符来返回除法的其余部分:
if( n % 2 ) // not divisible by 2
{
}
else // divisible by 2
{
}
注意:由于所有未评估为0的整数等同于true
,因此您无需检查n % 2 != 0
。
答案 2 :(得分:-2)
你可以要求用户输入一个字符串,然后使用int.TryParse
int x;
if (int.TryParse(inputString, out x))
{
// input is an integer.
}