c语言1.2 详解while
在写c语言的过程中有时会添加调试语句来看自己写到哪了,例如上一篇的计算整数有几位的代码
#include<stdio.h>
int main()4
int x;//定义变量
int n=0;
("%d",&x);
n++;
x/=10;
while(x>0) {
n++;
x/=10;
}
printf("%d\n",n);
return 0;
}
只需要在while的循环里面加个printf("%d,%d",x,n);
就可以查看每次循环的步骤
例如输入一个123456进去,运行之后就会把每次整除以及整除一次10,n自加一次显示出来

或者也会经常见到在代码中加printf(“hr1/2/3......”);这也是一种用来调试的手段,来让自己分清自己的代码写到哪了。
而代码会有逻辑错误,即便成功编译了或者运行成功了也会有逻辑错误
如果把整除x/=10;去掉,只留一个自增n++;那么代码就会无限循环下去

上面用了两次n++; x/=10;
如果把第一次的去掉,当然程序也可以顺利运行,并可以仍可以计算出123456为6位数。
不过需要验证
测试程序常使用边界数据,如有效范围两端的数据,特殊的倍数等。
以上面的为例,假设去掉第一段n++;x/=10;了,就不能在计算0,0也是个位数,在输入的时候就不会达成while(x>0)的的条件
在前面多加一段n++,就会在0的基础上先+1,之后再继续整除,就不会出现无法计数0的情况
同样也可以写成这样

用如果,否则的语句也可以避免无法计数0的情况,如果0没有构成x>0这一条件,while就不会执行循环,否则就执行n++;然后程序结束,最后仍计数0为1位数
不过要记得在提交作业的时候,要把输入的调试用的语句加上//注释,避免系统报错。