C语言编程题,计算S=1-1/2+1/3-1/4.....+1/m

如题,这是我自己编的,但是结果总是显示1.000000,麻烦各位大神帮我看看哪里错了。#includeintmain(){floats=0,t;intm,n;printf... 如题,这是我自己编的,但是结果总是显示1.000000,麻烦各位大神帮我看看哪里错了。
#include
int main()
{
float s=0,t;
int m,n;
printf("输入数值m:\n");
scanf("%d",&m);
for (n=1;n<=m;n++)
{

if(n%2==1)

t=1/n;

else t=-1/n;
s=s+t;
}
printf("%f\n",s);
return 0;
}
展开
 我来答
iiiiiiiipl
2019-07-08 · TA获得超过9921个赞
知道答主
回答量:68
采纳率:66%
帮助的人:3.7万
展开全部

n是整型,执行1/n后也是个整型。代码修改:

#include <stdio.h>

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个字节。与数值型数据不同,它的小数点位置是由输入的数据值来决定的,并且只能用于表中的字段。

参考资料:

百度百科-双精度浮点型

天愿见伊
推荐于2018-02-26
知道答主
回答量:9
采纳率:0%
帮助的人:14.2万
展开全部
由于你的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就可以表示为小数了。

希望可以帮到你!
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoaxa
2014-04-16 · TA获得超过8607个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3405万
展开全部

/*

输入数值n:10

0.645635

Press any key to continue

*/

#include <stdio.h>

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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2014-04-16
知道答主
回答量:4
采纳率:0%
帮助的人:5.3万
展开全部
#include<stdio.h>
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中调试通过,望采纳!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
流星不死
2014-04-16 · TA获得超过1662个赞
知道小有建树答主
回答量:1621
采纳率:0%
帮助的人:1300万
展开全部
# include <stdio.h>
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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式