n是整型,执行1/n后也是个整型。代码修改:
#include
int main()
{
float s=0,t;
float m=4,n;
printf("输入数值m:\n");
scanf("%f",&m);float k=1;
for(n=1;n<=m;n++)
{
t=1/n*k;
k=-k;
s=s+t;
}
printf("%f\n",s);
return 0;
}
扩展资料:
通常情况,单精度浮点数占4字节(32位)内存空间,其数值范围为-3.4E38~3.4E+38,;双精度型占8 个字节(64位)内存空间,其数值范围为-1.79769313486232E308 到1.79769313486232E308。
双精度浮点型类型数值可转换到其他类型的整数或浮点数,反之亦然。双精度浮点型常量的最后一个字符可加上“d”或“D”。其存储格式与浮点型类似,最高位为符号位,次高11位为指数位,其次52位为尾数。
双精度型就是双精度浮点型,同数值型比,它能提供更高的数值精度,采用固定存储长度的浮点数形式,每个双精度浮点型数据占8个字节。与数值型数据不同,它的小数点位置是由输入的数据值来决定的,并且只能用于表中的字段。
参考资料:
百度百科-双精度浮点型
由于你的n是int型,则1/n是整数,程序中的1/n或(-1)/n一直是0,所以s一直都是0;将t=1/n和t=(-1)/n改为t=1/(float)n和t=-1/(float)n即可,即将n强制转换为float型,这样1/n就可以表示为小数了。
希望可以帮到你!
/*
输入数值n:10
0.645635
Press any key to continue
*/
#include
int main() {
double sum = 0,i,n;
double item = 1,sign = 1;
printf("输入数值n:");
scanf("%lf",&n);
for(i = 1; i <= n; i++) {
sum += sign / i;
sign = -sign;
}
printf("%lf\n",sum);
return 0;
}
#include
int main()
{
float s=0,t;
int m,n;
printf("输入数值m:\n");
scanf_s("%d",&m);
for (n=1;n<=m;n++)
{
if(n%2==1)
t=1.0/n;
else
t=-1.0/n;
s=s+t;
}
printf("%f\n",s);
return 0;
}
//该程序已在VS中调试通过,望采纳!
# include
int main()
{
float sum = 0,t;
int m,i,f = 1;
scanf("%d",&m);
for(i=1;i<=m;i++)
{
t = 1.0/i*f;
sum += t;
f = -f;
}
printf("\n\n sum is %f",sum);
return 0;
}