返回列表 发帖

[求助]C语言问题..CCC晕我了.

刚刚学C,为什么把FLOAT 换INT就不可以了! main() { int n; float sum=0,t=1,f=1; for(n=1;n<=20;n++) { t=t*n, f=1/t; sum=sum+f; } printf("%f",sum); } --------------------------------------------------------------------------------- main() { int n; int sum=0,t=1,f=1; for(n=1;n<=20;n++) { t=t*n, f=1/t; sum=sum+f; } printf("%d",sum); } float

[求助]C语言问题..CCC晕我了.

我虽然是学C++
但是丢了好久了~~~~
应该是与乘法后的类型转换有关
我一般编的时候都是用float的,
不知道解释的是否合理~~~~

TOP

[求助]C语言问题..CCC晕我了.

int f=1/t; 这里总会为零的,如果t!=1。

TOP

[求助]C语言问题..CCC晕我了.

按 main() { int n; float sum=0,t=1,f=1; for(n=1;n<=20;n++) { t=t*n, f=1/t; sum=sum+f; } printf("%d",sum); } 结果是0 ------------------------- main() { int n; float sum=0,t=1,f=1; for(n=1;n<=20;n++) { t=t*n, f=1/t; sum=sum+f; } printf("%d",sum); } 结果的DIVIDE ERROR! 可以说下INT和FLOAT区别吧?

TOP

[求助]C语言问题..CCC晕我了.

给你点资料
整型变量可分为以下几类:
1.基本型
类型说明符为int,在内存中占2个字节,其取值为基本整常数。
2.短整量
类型说明符为short int或short';C110F1。所占字节和取值范围均与基本型相同。
3.长整型
类型说明符为long int或long ,在内存中占4个字节,其取值为长整常数。
4.无符号型
类型说明符为unsigned。
无符号型又可与上述三种类型匹配而构成:
(1)无符号基本型 类型说明符为unsigned int或unsigned。
(2)无符号短整型 类型说明符为unsigned short
(3)无符号长整型 类型说明符为unsigned long
各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。但由于省去了符号位,故不能表示负数。 下表列出了Turbo C中各类整型量所分配的内存字节数及数的表示范围。
类型说明符    数的范围     分配字节数
int       -32768~32767     ■■
short int    -32768~32767     ■■
signed int    -32768~32767     ■■
unsigned int   0~65535        ■■
long int  -2147483648~2147483647  ■■■■
unsigned long  0~4294967295     ■■■■
整型变量的说明
变量说明的一般形式为: 类型说明符 变量名标识符,变量名标识符,...; 例如:
int a,b,c; (a,b,c为整型变量)
long x,y; (x,y为长整型变量)
unsigned p,q; (p,q为无符号整型变量)
在书写变量说明时,应注意以下几点:
1.允许在一个类型说明符后,说明多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。
2.最后一个变量名之后必须以“;”号结尾。
3.变量说明必须放在变量使用之前。一般放在函数体的开头部分。
实型变量
实型变量分为两类:单精度型和双精度型,
其类型说明符为float 单精度说明符,double 双精度说明符。在Turbo C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。
实型变量说明的格式和书写规则与整型相同。
例如: float x,y; (x,y为单精度实型量)
    double a,b,c; (a,b,c为双精度实型量)
实型常数不分单、双精度,都按双精度double型处理。

TOP

[求助]C语言问题..CCC晕我了.

想死...
int 是整型...............

TOP

[求助]C语言问题..CCC晕我了.

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC不懂。。。。。。。。。想学。。

TOP

[求助]C语言问题..CCC晕我了.

是要算1+1/2+……+1/20吧?
你要算的带小数,当然得用f了。整型是没法除的。
简单说,带小数的用float,一般的整数才用整型。

TOP

[求助]C语言问题..CCC晕我了.

另外,sum=0的位置你好象放错了。定义sum时不应该带赋值。具体你自己想吧。你赋sum=0,printf出来当然是0了。

TOP

[求助]C语言问题..CCC晕我了.

下面引用由好性情2005/04/17 01:02am 发表的内容:
另外,sum=0的位置你好象放错了。定义sum时不应该带赋值。具体你自己想吧。你赋sum=0,printf出来当然是0了。
好象你自己说错了吧,楼主是先给sum初始化为0,然后才开始计算。

TOP

[求助]C语言问题..CCC晕我了.

好象你自己说错了吧,楼主是先给sum初始化为0,然后才开始计算
你可以自己试下啊。我觉得sum应该在for后面的语句里赋初值,然后才参与计算。刚开始是声明变量吧?

TOP

[求助]C语言问题..CCC晕我了.

f 得出来的就是小数,而你定义的时候是整数,他就会舍去小数点后的
而 f=1/t,t又大以  1   所以    f   的值永远都为   0   
所以最后的  sum  也是   0   了

TOP

[求助]C语言问题..CCC晕我了.

#include #include main() {int n; float sum,t=1,f=1; for(n=1,sum=0;n<=20;n++) {t=t*n,f=1/t;sum=sum+f;} printf("%f",sum); } 用这个看看吧。仔细想想。我这没错吧。实验了再说。

TOP

[求助]C语言问题..CCC晕我了.

下面引用由好性情2005/04/17 00:58am 发表的内容:
是要算1+1/2+……+1/20吧?
你要算的带小数,当然得用f了。整型是没法除的。
简单说,带小数的用float,一般的整数才用整型。
我是算1+1/2!+1/3!+……1/20!      555
float sum=0;是正确赋值方法啊.!!!
我就是不懂要float sum=0;而不可以int sum=0;

TOP

[求助]C语言问题..CCC晕我了.

可以肯定这个sum算出来是小数吧?那你用整型就肯定不行了。不仅如此,算实型的时候中间你如果遇到分数比如5/9,要写成5.0/9.0的。
我也是菜鸟,以后多交流啊,大家互相帮助。你还学什么语言?

TOP

返回列表 回复 发帖