| C |系列1 + 2x + 3x ^ 2 + 4x ^ 3 + .... nx ^(n-1)

时间:2015-08-13 15:51:03

标签: c series

首先,我搜索过,我发现的所有问题都很相似,但不完全是这个问题。

这是我在这里的第一篇文章,我是编程的初学者,目前正在学习用C语言编写代码。 现在大约5个小时一直在努力使用这段代码。

问题是在C中创建程序,仅使用循环(而不使用pow(),仅使用stdio.h库。

问题是让用户给你两个数字 - X和N. 程序将打印以下等式的结果:

1 + 2×+ 3×^ 2 + 4×^ 3 + ... +的 NX ^(N-1)

例如输入 - X = 2 N = 3

1*2^0 + 2*2^1 + 3*2^2

该程序将打印的内容为“ 17

这是我到目前为止的尝试,我接触了Power函数,但我找不到一种方法可以将其纳入程序本身。

#include <stdio.h>

int main(void)    
{
    int i, j=0, b = 0;
    float x, n;
    double sum = 0, sumt=0;
    do{
        printf("Please enter two numbers \n");
        flushall;
        scanf("%f %f", &n, &x);
    } while (x <= 0);
    for (i = 1; i <= n; i++){
        sum = x*x;
    }

    sumt += sum;
    printf("%f", sum);
}

4 个答案:

答案 0 :(得分:5)

您不需要尝试创建pow的实现,而是需要利用表达式之间的关系。

n - 期限是nx^(n-1)n-1 - 该字词为(n-1)x^(n-2)

如果我们将n - 术语表示为T(n)并将n-1 - 术语表示为T(n-1)

T(n) = T(n-1)*x*n/(n-1)

考虑到第一个学期的起始值,

T(1) = 1

您可以使用上述公式计算后续术语。

以下代码应该有效。

// Initialize the values for N=1
term = 1;
sum = 1;

// Iterate starting from 2
for (i = 2; i <= n; i++){
    term *= x*i/(i-1);
    sum += term;
}

答案 1 :(得分:0)

我不会给你代码,但你应该遵循的原因

首先,你必须以某种方式从用户那里获取数据(作为参数,来自stdio ...无论如何)

x = getFromUser
n = getFromUser

然后您需要初始化临时结果

result = 0

您需要添加多少次? - &GT;恰好n次

for(ii=0;ii<n;ii++) {
    result = result + pow((ii*x),(ii-1)) //There is something missing here, I'll let you guess what
}

但等等;你不能用pow。所以你必须自己编程(我猜这是练习的想法)

然后你需要一个函数,它必须返回一个int(实际上,它可能返回甚至是无理数,但我认为它们不会要求你这样做)

int customPow(int base, int exponent) {
 //Put your for in here, and may the pow be with you
}

答案 2 :(得分:0)

您需要自己弄清楚代码,但总体思路如下:

创建自己的pow函数,返回x * n。

int pow(int x, int n){
   //use a for or while loop to calculate x (*x)n times. 
   //pay attention to the base cases (i.e., when n = 0, or 1 etc)
}

ans = 0;
for(i = 0 to N-1){
   ans = ans + pow(x,i-1)*i;
}

答案 3 :(得分:0)

工作计划基于全能的@R_Sahu(和其他人; D)给出的提示 **

#include <stdio.h>
int main(void)  
{
int i, j = 0, c = 0;
float x, n, b = 0;
double term, sum;
do {
    printf("Enter Two Numbers\n");
    flushall;
    scanf("%f%f", &n, &x);
} while (x < 0);
for (i = 2; i < n + 2; i++)
{

    term = 1;
    sum = 1;


    for (i = 2; i <= n; i++){
        term *= x*i / (i - 1);
        sum += term;
    }
}
printf("The answer is %.lf  ", sum);

}