题目:从键盘输入一个小于1000的正数,要求输出它的平方根(如果平方根不是整数,则输出其整数部分)。要求在输入数据后先对其进行检查是否为小于1000的正数,若不是,则要求重新输入。
解答:
从键盘输入一个小于1000的正数,首先定义一个整型存储数据,比如 int a;
要求是正数,否则提示重新输入。则这里可以通过if(a>0)来判定。
输出平方根需要用到math.h 里面的sqrt()函数。
这里还有一个判断,也就是平方根的结果如果不是整数则输出整数部分,这里还隐含着一个分支是:如果是整数则直接输出平方根。
那么如何判断一个数是否为整数,可以采用以下方式:
如果上面平方根的结果存储为double类型,如 double b;则将b强制性转换为int类型后再和b比较,如果还相等,则b原来就是整数。
double b;
if((int)b==b)
{
整数,比如当b=1.1,则int(b)=1,此时经过类型转换后的1已经舍弃了小数部分,肯定不等于原来的b
}
代码如下:
上面的可以简写成:
注意:以下写法是错误的,
上面的写法虽然是控制了0个小数点,但是会导致四舍五入。比如看下面的例子:
如果直接由float转为%d会因为字节长度问题导致严重错误。
如果是由%.0f输出,则系统自动四舍五入。
所以只能用(int)a的方式。