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>
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);
}
为什么不对???

#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'。

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-04-14

一、算法分析:

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)转为浮点型,均可。 

第2个回答  2014-03-17

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;
}

结果:

 

第3个回答  2014-03-17
#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));
}

第4个回答  2014-03-17
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;

...\/*计算1-1\/4+1\/7-1\/10+1\/13-1\/16…共n项之和*\/
从键盘输入一个正整数n。输入输出样例1(下划线部分表示输入)Enter n:3 sum=0.893 输入输出样例2(下划线部分表示输入)Enter n:10 sum=0.819

...计算1-1\/4+1\/7-1\/10+1\/13-1\/16+…的前n 项之和,输出时保留3位_百 ...
“int main(void)”有点奇怪,我只见过void main()和int main()这两种形式;“printf("sum=%.3f",&sum);”应该为printf("sum=%.3f",sum);,输出时不需要用&符号;就这么多吧,还不行的话我也无能为力了;

...要求编写程序,计算序列 1 - 1\/4 + 1\/7 - 1\/10 + ... 的前N项之和...
i;double sum=0.0;printf("请输入数字n:");scanf("%d",&n);for(i=1;i<=n;i++)sum+=pow(-1,i+1)\/(3*i-2.0);printf("sum=%0.3f\\n",

要求编写程序,计算序列1-1\/4+1\/7-1\/10+...的前N项之和。
在编写程序计算序列1-1\/4+1\/7-1\/10+...的前N项之和时,一个巧妙的方法是通过设置一个取反标志。以下是一个简单的C语言实现:为了计算这个交错级数,我们可以利用一个取反变量。以下是代码示例:#include<stdio.h>intmain(){intn,i,flag=1;doublesum=0.0;printf("请输入数字n:");scanf("...

...计算1-1\/4+1\/7-1\/10+1\/13-1\/16+…的前n 项之和,输出时保留3位 帮...
if(i%2=0);要改为if(i%2==0);后面的一个if也是一样

C语言:求1-1\/4+1\/7-1\/10+1\/13-1\/16+……的值
include<stdio.h> include<math.h> int main(void){ double eps,item,s;int x,y;s=0.0;x=1;y=1;item=1.0;printf("Input eps: ");scanf("%lf",&eps);while(fabs(item)>=eps){ item=x*1.0\/y;s+=item;printf("%f ",s);x=-x;y+=3;} printf("s=%.6f\\n",s);return...

...n,计算1-1\/4+1\/7-1\/10+……的前 n 项之和,输出时保留3位小数。_百 ...
include<stdio.h> void main() {printf("please input a number:");int number,temp=1;double sum=0;scanf("%d",&number);for(int i=1;i<=number;i++) { sum+=1.0*temp\/(3*i-2);temp=-temp;} printf("sum is :%.3f",sum);} 你写的有点复杂 temp是符号位 这样就好了 ...

编程C语言1-1\/4+1\/7-1\/10...输入n,计算前n项和
C语言的除法\/默认两边如果是整型,则结果也是整型,例如3\/2=1,所以你要写成1.0\/(3*i-2)

C语言。1-1\/4+1\/7-1\/10+1\/13+……的前n项和算不出结果啊。求9
int main(void){ int denominator, flag;int repeat, ri;double eps, item, sum;scanf("%d", &repeat);for(ri = 1; ri <= repeat; ri++){ scanf("%lf", &eps);item=1.0;sum=0;flag=1;denominator=1;while(eps--){\/\/这里直接这样就好 sum初值为0就可以了 sum=sum+item;flag=...

C语言编程:输出级数1+1\/2+1\/4+1\/7+1\/11+...的前n项之和,n由键盘输入0<...
double s;int n,i,t,k;printf("Enter n(int n>0)...\\nn=");if(scanf("%d",&n)==1 && n>0 && n<100001){\/\/输入项数 for(s=i=0,t=k=1;i<n;s+=1.0\/k,k+=t,t++,i++);\/\/计算 if(n>4)\/\/以下按规格输出 printf("1+1\/2+1\/4+...+1\/%d",k-t+1);else ...

相似回答