c语言代码比较18bb/16

kata:
在这里插入图片描述
比如说:

dig_pow(89, 1) should return 1 since 8¹ + 9² = 89 = 89 * 1
dig_pow(92, 1) should return -1 since there is no k such as 9¹ + 2² equals 92 * k
dig_pow(695, 2) should return 2 since 6² + 9³ + 5⁴= 1390 = 695 * 2
dig_pow(46288, 3) should return 51 since 4³ + 6⁴+ 2⁵ + 8⁶ + 8⁷ = 2360688 = 46288 * 51

我的代码:
在这里插入图片描述

正常的使用while (n)循环来获得各位上的数。

别人的代码:
在这里插入图片描述

亮点在于用了数学方法 常用对数 来求位数;

虽然它或许可以直接用ceil向上取整

别人的代码2:
在这里插入图片描述

这个避免了使用循环来求各位上的数字,而是将其转存为字符串;
这里介绍一下sprintf函数:

该函数在stdio.h中
用于将数据格式化后存入字符数组中。
sprintf:存到字符数组
printf:发送到console
函数声明是:

int sprintf(char *str, const char *format, ...)

第一个参数是目标字符数组,第二个是格式说明,第三个是数据
注意中间的格式说明不一定单是说明符,
也可以是sprintf(str, "Pi 的值 = %f", M_PI);

最后用三目运算符代替if判断

- ‘0’  可以认为是将字符0转成数字0,,实际是减去字符0的ascii码,因为没有字符型,都是int存储,表面形式无所谓

猜你喜欢

转载自blog.csdn.net/qq_42987633/article/details/83934710
bb
今日推荐