【发布时间】:2018-06-09 10:38:03
【问题描述】:
所以,我正在编写一个 C 代码,用于计算给定数字的长度。我现在知道正确的方法来解决它。但是,我不明白为什么下面的原始代码是错误的。谁能帮我调试一下?
编辑:我还想知道为什么 while 中的参数应该是 "dgts != 0" 或 "dgts > 0" ?比如,你能解释一下这意味着什么以及为什么有意义吗?
#include <stdio.h>
#include <cs50.h>
int lngth (int dgts);
int main(void){
int num = get_long_long();
int length = lngth(num);
printf("%i",length);
}
int lngth (int dgts){
int cnt = 0;
int y = dgts;
while (dgts !=0 ){
y = y/10;
cnt ++;
printf("%i\n",cnt);
}
return cnt;
}
【问题讨论】:
-
长度取决于编码。
99可以表示为ninety nine。两者都表达相同的知识,一个长度为 2,另一个为 11。 -
while (dgts !=0 ){ y = y/10;你没有改变dgts所以这里无限循环,应该是while (y){ y /= 10; -
This article 能帮上大忙。
-
虽然您的问题的解决方案已经给出,但我仍然建议您学习使用 GDB 等调试器来单步调试您的代码。
-
@Jean-FrançoisFabre 并且有了这个解释,很明显
0也是一个边缘情况(并且没有在解决方案中解决)。
标签: c loops while-loop do-while cs50