问:一张纸的厚度大约是0.08mm,对折多少次之后能达到或超过珠穆朗玛峰的高度(8848.13米)
这里需要我们求的是对折的次数,那 在循环次数不确定的情况,通常选用while或do-while循环
我们选取while进行操作,已知高度和厚度,可以像下图中的high一样进行一下定义,也可以直接像厚度一样直接输入数值,影响不大。
最重要的是思路,很明显这题是以 比较对折后的厚度和山的高度 作为循环条件的,接着咱们只要 列出对折后的厚度的运算公式 以及 循环的条件改变规律 就可以了
注意:如果公式这里你也和我一样采用的 幂运算,需要注意的就是不能直接输入2^n,而是要用Math.pow(2,n)表示!(Java的魅力)
最后!循环的条件改变规律 这里我们也需要留意一下,因为我们是先 判断是否满足循环条件再进行的改变,所以最后所求得到的数值是 改变后的但没有执行操作的!
因此,要把最后的结果再减去一次条件改变的数值,咱们这里是减去1,一定不要漏了这一步!
* 幂运算的公式:Math.pow(底数,幂)
问:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
程序分析:在10万以内判断,另外由这个数的开方数自乘得到平方数,进行比较
在循环次数确定的时候,通常选用for循环
有题目中可以知道循环的这个数的范围是在0~10万,所以我们for循环里面,就让这个数的初始值为0,范围就是小于等于10万,每次自增
紧接着我们就可以列出下面的两行等式,也就是说这个数加上100以及268之后,给它们分别开根号,得到值的表达式
后面我们需要再用到选择结构if,条件为给它们开根号后得到的值都为整数
则输出该数
注意:因为我们给一个数开根号后该数不一定为整数所以要先用double,然后我们再在if里面加上条件,如果得到的数为整数的话,则巴拉巴拉
小括号里加int就可以进行强制类型转换了!
* 这里又学到了java里的一个新表达式:
给一个数开根号:Math.sqrt(i)