|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
int main(void)
{
int a,b,c;
int d;
printf("输入一个分数:");
scanf("%d/%d",&a,&b);
printf("0.");
//cnt=0;
while(a!=0 && d<200)
{
c=a*10/b;
a=a*10%b;
d++;
printf("%d",c);
if(d==200)
{
printf("\n");
}
}
return 0;
}
在C语言中,如果你没有给局部变量赋初始值,它的值是不确定的。在你的代码中,这个 cnt 变量并没有被赋予初始值,其实是一种不良的编程习惯,因为它的值其实是不可预期的,这可能导致程序表现得不一致、难以调试。
但是在你的这个例子中,由于你在 while 判断条件中同时检查了 a!=0 和 cnt<200 ,足够保证了程序不会无限循环下去。也就是说,只要 a 不为0或者 cnt 到达200,循环就会停止。即使在 cnt 的值非常大甚至是负数的情况下,由于你是在每次循环中增加 cnt 的值,那么在有限的循环中它总会到达200,这也就隐式的变相保证了你的程序不会无限循环。
然而,你的这个代码在含有bug的,应该为 cnt 赋一个初始值0。因为在一些编译器或运行环境下,如果你不为 cnt 赋初始值,它将很可能是一个很大的值或者是负数,这将会使你的程序表现出不可预期的行为。在其他情况下,如果 cnt 的起始值太大,你的程序可能会打印出200个以上的数字,这并不是你想要的结果。因此,即使你的程序在某些情况下可以正常运行,但是这仍然是一个严重的编程错误,需要为 cnt 赋一个初始值0。
|
|