1001·题目
对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。对给定的任一不超过 1000 的正整数 n,简单地数一下,需要多少步(砍几下)才能得到 n=1。
输入格式:
每个测试输入包含 1 个测试用例,即给出正整数 n 的值。
输出格式:
输出从 n 计算到 1 需要的步数。
输入样例:
3
输出样例:
5
下面就附上代码~
遇到的bug:
问题一:
prog.c: In function ‘main’: prog.c:5: warning: ignoring return value
of ‘scanf’, declared with attribute warn_unused_result
提示你没有使用scanf的返回值,所以我加了一个if语句引用了一下scanf的值
问题二:
题目说对给定的任一不超过 1000 的正整数 n,所以我在while循环里写了一个n<=1000&&n>=1,但是我忽略了如果我输入的值是999,运行后的值将不在符合条件,所以我第一次改成了3000,结果还是有问题,一次次debug都没有发现问题。。。。然后猛然间发现,只要不是1的话他不是就一直循环吗,终于得到正解ヾ(≧▽≦*)o