编写程序,输入n的值,求 :1-1/2+1/3-1/4+1/5-1/6+1/7-...+1/n
#include<stdio.h>intmain(){inti,n,m=-1,k=0;doublej,sum=0.0;scanf("%d",&n);for(i=1;i<=...
#include <stdio.h>
int main ()
{
int i,n,m=-1,k=0;
double j,sum=0.0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
m=-m;
j=m/(k+1);
sum=sum+j;
k++;
}
printf("%.4f\n",sum);
return 0;
}
运行出来无论输入多少,输出的值都是1.000.请各位高手帮忙。 展开
int main ()
{
int i,n,m=-1,k=0;
double j,sum=0.0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
m=-m;
j=m/(k+1);
sum=sum+j;
k++;
}
printf("%.4f\n",sum);
return 0;
}
运行出来无论输入多少,输出的值都是1.000.请各位高手帮忙。 展开
1个回答
展开全部
#include <stdio.h>
int main ()
{
int i,n,m=-1,k=0;
double j,sum=0.0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
m=-m;
j=m/(double)(k+1);//这里必须加入强制类型转换,否则会发生截断
sum=sum+j;
k++;
}
printf("%.4lf\n",sum);
return 0;
}
int main ()
{
int i,n,m=-1,k=0;
double j,sum=0.0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
m=-m;
j=m/(double)(k+1);//这里必须加入强制类型转换,否则会发生截断
sum=sum+j;
k++;
}
printf("%.4lf\n",sum);
return 0;
}
追问
我把程序按照你的意思改了一下,可以运行了。改成:
#include
int main ()
{
int i,n,m=-1;
double j,sum=0.0,k=0.0;(这里改了)
scanf("%d",&n);
for(i=1;i<=n;i++)
{
m=-m;
j=m/(k+1);
sum=sum+j;
k++;
}
printf("%.4f\n",sum);
return 0;
}
请问为什么k必须是实型?整型为什么不行呢?
追答
对于式子a = b / c,如果除法涉及的因子b、c都是int,那么编译器会认为b/c的结果也是int,然后将这一结果向a赋值,如果需要再强制转换为a的数据类型。而浮点数转向整数的时候是不进位的,而是舍去小数部分,即截断。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询