c语言编程序 /*计算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 分析数列规律。 正负交替,分子为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)转为浮点型,均可。
#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));
}
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;