C语言 输入一个正整数n 计算1/1+1/4+1/7+....+1/(3n-2)

这是我编的 结果 r总是等于1.00 错在哪里??

#include<stdio.h>
main()
{
int n,i;
double r=0,x;
scanf("%d",&n);
for(i=1;i<=n;i++)
{ x=1/(3*i-2);
r=r+x;
}
printf("%.2f",r);
return 0;
}

第1个回答  2016-11-25
#include<stdio.h>
main()
{
int n,i;
double r=0,x;
scanf("%d",&n);
for(i=1;i<=n;i++)
{ x=1/(3*(double)i-2);//这里i强制转换要不然x值都是整数
r=r+x;
}
printf("%.2f",r);
return 0;
}本回答被提问者采纳
第2个回答  2016-11-25
因为c的除法 如果都是整数 结果也会是整数 舍去小数位
你需要把3改成3.0

C语言 输入一个正整数n 计算1\/1+1\/4+1\/7+...+1\/(3n-2)
{ int n,i;double r=0,x;scanf("%d",&n);for(i=1;i<=n;i++){ x=1\/(3*(double)i-2);\/\/这里i强制转换要不然x值都是整数 r=r+x;} printf("%.2f",r);return 0;}

c语言编程序 \/*计算1-1\/4+1\/7-1\/10+1\/13-1\/16…共n项之和*\/
Enter n:3 sum=0.893 输入输出样例2(下划线部分表示输入)Enter n:10 sum=0.819

C语言程序填空 输入一个正整数 n (1<n<=10),再输入n 个整数,输出平均值...
1、输入一个正整数 n (1<n<=10),再输入n 个整数,输出平均值(保留2 位小数)。sum = 0;for(i = 0;i < n;i++){ sum += a[i];} aver=sum*1.0\/n;2、index = 0;for(i = 1;i < n;i++){ if(a[i] > a[index]){ index = i;} } 命题 1 对于B=36N+1 形数...

用C语言编程:求1!+4!+7!+...+(3n+1)!的和。要求n从键盘输入(n〈10...
main(){ int i,j,t,n;long s=0;printf("输入n:\\n");scanf("%d",&n);for(i=0;i<=n;i++){ t=1;for(j=1;j<=3*i+1;j++)t*=j;s+=t;} printf("和s为:%ld\\n",s);}

1+1\/2+1\/3+1\/3+……+1\/n 的算法程序,快些
则1+1\/2+1\/3+1\/4+...1\/n = ln(n+1) +r 欧拉近似地计算了r的值,约为0.5772156649。这个数值也被称作欧拉常数。如果用C语言编程求解 include<stdio.h> int main(){ int k,i=0;double S=0;scanf("%d",&n);while(i<n){ i++;S+=1.0\/i;} printf("%d\\n",S);} 注意:...

c语言 有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数...
请编程,由键盘输入一个整数N(N<100),将N分解成若干个整数,输出这些数的乘积,且要保证M是最大的。匿名 | 浏览3652 次 |举报 我有更好的答案邀请更新 2013-07-21 最佳答案 最优化问题,尽量都分成3,不足部分就分成2。对于n < 4,可以验证其分解成几个正整数的和的乘积是小于 n 的。对于n >= 4,...

C语言四个数从小到大排列的程序
Cmax=n(n-1)\/2=O(n2)Mmax=3n(n-1)\/2=O(n2)冒泡排序的最坏时间复杂度为O(n2)。(3)算法的平均时间复杂度为O(n2)虽然冒泡排序不一定要进行n-1趟,但由于它的记录移动次数较多,故平均时间性能比直接插入排序要差得多。(4)算法稳定性 冒泡排序是就地排序,且它是稳定的。

求一个正整数n,它的所有约数之和等于3n+3
思路:它的所有约数除了1和它本身,则3n+3-(n+1)=2n+2.其中必然是二对以上的约数。经计算这个数是20。(1+20)+(10+2)+(4+5)=43=2n+3

如何用c语言计算小数点后位数(float本身都无法精确)
1、先把浮点数变成字符串,再通过小数点确定小点后面的位数。2、例程:include <stdio.h>#include <string.h>void main() { char * ptr; char strFloat[20]; float number=100.25432; sprintf(strFloat, "%f", number); ptr = strstr(strFloat, "."); if (ptr != ...

计算1+3+5+7+...+101的结果
用公式算 (首数+尾数)*项数\/2 项数=(尾数-首数)\/相临两个数的差+1 (101-1)\/(3-1)+1=51 (1+101)*51\/2=5202\/2=2601

相似回答