2015-07-21 32 views
0
#include<stdio.h> 
#include<conio.h> 
#include<math.h> 
int main() 
    { 
     int x,n; 
     float sum=0; 
     printf("Length and Value"); 
     scanf("%d%d",&n,&x); 

     for(int i=1;i<=n;i++) 
     { 
      sum+=(pow(x,2*i+1) * pow(-1,i+1)); 
     } 
     printf("%f",sum); 
     return 0; 
    } 

我试图用C语言来解决这个系列。我在上面的代码中做错了什么?要打印该系列答案 - > x^3 - x^5 + x^7 - x^9 +

+0

请避免使用诸如_“somethin'”_,_“doin'”_等字样。这不是聊天室。 –

+0

好的,谢谢你的帮助。 –

+0

不客气,FYR,你可能想参加[旅游](http://stackoverflow.com/tour)并阅读[如何问](http://stackoverflow.com/help/how-to-问) –

回答

3

是的,你有点不对。在您的代码

printf("%f",sum); 

sumint使用%f打印的价值intundefined behaviour

函数pow()返回double。您可能需要将sum更改为double

如果你不介意使用自己的版本,一个更好看的实现,而无需使用pow()

  1. 商店现有的值。
  2. 每次迭代乘以x * x
  3. 注意-ve符号用于偶数编号的迭代。第一
+1

omG,谢谢兄弟! –

+0

现在怎么样?我只是改变了它。 –

+0

那么如果你不介意,你可以通过编写代码告诉我吗?那么很容易理解。 –

0

第一件事,你printf有一个int错误的格式说明:使用%d来代替。但对于非整数x,无论如何您都需要重构为double,因此%f可能会保留。

其次,不要使用pow:它不会很精确(可能实现为exp(log)),并且您不需要从头开始评估每个术语的功效。

保持运行功率:即最初计算x * x * x,然后在后续条件中继续乘以x * x。不要忘记交替的迹象:你可以通过乘以-1来实现。

0

您正在尝试查找x^3,x^5即奇数中的功率。所以在for循环中做一些改动。写这个而不是你的代码。如果你给一个大X或N值,那么最好是申报金额为长数据类型

#include<stdio.h> 
#include<conio.h> 
#include<math.h> 
int main() 
    { 
     int x,n; 
     long sum=0; 
     printf("Length and Value"); 
     scanf("%d%d",&n,&x); 

     for(int i=2;i<=n;i+=2) 
     { 
      sum+=(pow(x,i+1) * pow(-1,i)); 
     } 
     printf("%l",sum); 
     return 0; 
    } 
+3

'pow(-1,i)'很糟糕。 – Bathsheba

+0

它可以做不同的方式 – Poushali

0

首先,您要评估一系列发散的以外的所有分和圆半径一(作为一个复杂的系列)。如果您使用int为X,你会一次比一次值越来越大,振荡0附近与||x|| < 1号试试吧(这意味着doublefloat对于x)

所有张贴,也有用其他答案尽快达到预期的价值。