这个c程序奇怪之处

来源:百度知道 编辑:UC知道 时间:2024/05/09 08:56:11
void main(){
int a;
scanf("%d",&a);
int s=0,o=0;
while(a>=1){
o+=pow(10,s);
a--;
s++;
printf("%d %d %d",a,s,o);
system("pause");
}
}

//以上的C程序,大家输入3,变量o的结果不是111,竟是110,为什麼会少1?
//输入3以上,每是3的倍数也会再少1
//为什麼?

浮点数的问题吧,可能算出来是110.9999999999,但是被转化成整型就回取整,少了1
当然我的机子也没有出现这个问题。你可能用得还是老式的16位编译器

void main()
{
int a;
scanf("%d",&a);
int s=0,o=0;
while(a>=1)
{
o+=pow(10,s);
a--;
s++;
}
printf("%d %d %d",a,s,o);
system("pause");

}

这样就行了,楼主的}打错地方了

void main()
{
int a;
scanf("%d",&a);
int s=0,o=0;
while(a>=1)
{
o+=pow(10,s);
a--;
s++;
}
printf("%d %d %d",a,s,o);
system("pause");

}

没有问题啊,我试过了,是不是楼主搞错了?

请楼主别开玩笑好不好。明显没这种现象。