c语言编程序 /*计算1-1/4+1/7-1/10+1/13-1/16…共n项之和*/

/*计算1-1/4+1/7-1/10+1/13-1/16…共n项之和*/#include<stdio.h>intmain(){intdenominator,flag,i,... /*计算1-1/4+1/7-1/10+1/13-1/16…共n项之和*/
#include<stdio.h>
int main()
{
int denominator,flag,i,n,b;
double item,sum;
printf("输入项数n:");
scanf("%d",&n);
flag=1,denominator=1,sum=0;
for(i=1;i<=n;i++)
{ item=flag*1.0/denominator;
sum=sum+item;
flag =-flag;
denominator=3*i-2;
}

printf("sum=%f\n",sum);
}
为什么不对???
展开
 我来答
问明6E
高粉答主

2019-06-24 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:12.9万
展开全部

#include<stdio.h>

int main(void)

{

double n,sum,i,k;

sum=0;

k=1;

printf("Enter n: ");

scanf("%lf",&n);

for(i=1;i<=n;i++){

sum=sum+k/(3*i-2);

k=-k;

}

printf("sum=%.3f",sum);

return 0;

}

输入形式

从键盘输入一个正整数n。

输入输出样例1(下划线部分表示输入)

Enter n:3

sum=0.893

输入输出样例2(下划线部分表示输入)

Enter n:10

sum=0.819

扩展资料:

scanf函数用法:

scanf("输入控制符",输入参数);

功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。

用scanf()函数以%s格式读入的数据不能含有空白符时,所有空白符都被当做数据结束的标志。所以题中函数输出的值只有空格前面的部分。

如果想要输出包括空格在内的所有数据,可以使用gets()函数读入数据。gets()函数的功能是读取字符串,并存放在指定的字符数组中,遇到换行符或文件结束标志时结束读入。换行符不作为读取串的内容,读取的换行符被转换为字符串结束标志'\0'。

风若远去何人留
2017-04-14 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450131
专业C/C++软件开发

向TA提问 私信TA
展开全部

一、算法分析:

1 分析数列规律。 正负交替,分子为1,分母为1,4,7,10,...

即第n项的分母为3*n-2

2 输入n,循环n次,计算每一项并累加。 

二、参考代码:

#include <stdio.h>
int main()
{
    int i,n;
    float r=0;
    scanf("%d",&n);//输入n值。 
    for(i = 1; i <= n; i ++)//循环执行n次。 
    {
        if(i%2==1) r+=1.0/(3*n-2);//奇数项加。
        else r-=1.0/(3*n-2);//偶数项减。
    }
    printf("%f\n", r);//输出结果。 
}

三、注意事项:

计算每项时,不能用1/(3*n-2) 这样的话,会按照整型操作,导致结果为0. 用1.0/(3*n-2)或者1/(float)(3*n-2)转为浮点型,均可。 

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qingyang8513
2014-03-17 · 超过20用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:51.1万
展开全部

for循环用错了,在计算denominator时应该使用已经更新过的i,所以i++应该放在for循环里面,代码如下:

for(i=1;i<=n;)
{
item=flag*1.0/denominator;
sum=sum+item;
flag =-flag;
i++;
denominator=3*i-2;
}

结果:

 

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
x_iam
2014-03-17 · TA获得超过180个赞
知道小有建树答主
回答量:252
采纳率:100%
帮助的人:210万
展开全部
#include<stdio.h>
double caculateSum(int n){
int i=1;
double sum=0.0;
int flag=1;
for(i=1;i<n+1;i++){
sum=sum+flag*1.0/(3*i-2);
flag=-flag;
}
return sum;
}
void main(int argc,char **argv){
int n=100;
printf("the sum is:%lf\n",caculateSum(n));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gjl0625
2014-03-17 · TA获得超过343个赞
知道小有建树答主
回答量:333
采纳率:0%
帮助的人:161万
展开全部
for循环改一下

float SUM =1.0;
if (n==1) return SUM;
for(i=2;i<=n;i++)
{
if (i==奇数)
{
SUM=SUM+1/(3n+1);
}
else
SUM=SUM-1/(3n+1);

}
return SUM;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式