用C++语言写1-1/4+1/7-1/10.......的前n项和,请问我那里写错了?为什么我的sum输出永远是1

#include<stdio.h>intmain(void){intn,i,sum=0,flag=1,item;printf("Entern");scanf("%d",&... #include<stdio.h>
int main(void){
int n,i,sum=0,flag=1,item;
printf("Enter n");
scanf("%d",&n);
for(i=1;i<=n;i=i+3){
item=flag*(1/i);
sum=sum+item;
flag=-flag;
}
printf("sum=%d\n",sum);
return 0;
}
展开
 我来答
听不清啊
高粉答主

2015-10-09 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
item和sum不能设为int型,实数要是float。
#include<stdio.h>
int main(void){
int n,i,flag=1;
float item,sum=0;
printf("Enter n");
scanf("%d",&n);
for(i=1;i<=n;i=i+3){
item=flag*(1.0/i);
sum=sum+item;
flag=-flag;
}
printf("sum=%f\n",sum);
return 0;
}
更多追问追答
追问

还是1

追答
这数字太小啊,1+3就等于4,已经超过3了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gs205642
2015-10-09 · 超过33用户采纳过TA的回答
知道答主
回答量:93
采纳率:100%
帮助的人:62.5万
展开全部

你的所有变量类型都是整型,所以小数item都是0了

#include<stdio.h>
int main(void){
int n,i,flag=1;
float sum=0,item;//或者用double
printf("Enter n");
scanf("%d",&n);
for(i=1;i<=n;i=i+3){
item=flag*(1/i);
sum=sum+item;
flag=-flag;
}
printf("sum=%d\n",sum);
return 0;
}
追问

还是不对

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
唉唉唉476
2015-10-09 · TA获得超过745个赞
知道小有建树答主
回答量:326
采纳率:0%
帮助的人:188万
展开全部
因为item你定义成了int类型
而item若有小数,则会自动地向下取整
于是tiem就一直都是0,除了刚好是1的情况
所以sum也就一直是1了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式