c语言入门级问题,小数和整数引起的问题
我在做初一的方程题时,想用c语言做,做了几个,都出来了。 可下面这个就出不来,不知为什么? main(){ double x; clrscr(); for(x=1;x<=6000;x++) if(4000+500==0.9*x){ printf("%lf",x); break; } } 改了一下,也可以成功,但不知原因。 main(){ double x; clrscr(); for(x=1;x<=6000;x++) if(4000+500==9*x/10){ printf("%lf",x); break; } } 就是0.9*x与9*x/10的问题,为什么是这样呢? 我用的是tc2.0,没有汉化的。 为什么前者不行,后者又可以呢?
第一个式子中400+500==0.9*x;式子左边是整型数据,而右边是浮点型数据,浮点型数据在存储时,存在一定的误差,所以在进行恒等于比较时,就会出错。 而第二个式子中400+500==9*x/10;式子的左右两边都是整型数据,可以进行恒等于比较,所以就是正确的。 这就是tc中的一个弱点。 希望你能明白,能接受我的回答。谢谢!
逻辑太混乱.... 两个程序都是for下面的循环有问题 for(x=1;x<=6000;x++) if(4000+500==9*x/10){ printf("%lf",x); break; } 这个逻辑比较简单,就用个while循环足够咯!你这个for循环,逻辑太混乱...虽说没有语法上的错误. if里的表述不直观,一般不这样写... if(4000+500==9*x/10)写成 if(9*x==4500).
可能是软件的问题,我用VS2005得出两者的结果是一样的。
答:正确的代码如下: main() { int a[9],i,k,j,s=0; for(i=1;i=1&&j=a[i-1]&&j>=a[k-1]) {printf(...详情>>
问:挺简单的一C函数,不过我是初学者,暂时还不会写,请好心人多多帮忙!
答:int mystrlen(char *str) { int n = 0; while (*str) { n++; str++;} return n; } voi...详情>>