|c|系列 1+2x+3x^2+4x^3+....nx^(n-1)
|c| Series 1+2x+3x^2+4x^3+....nx^(n-1)
首先,我搜索了一下,发现所有问题都相似,但不完全是这个。
这是我第一次 post 来这里,我是编程初学者,目前正在学习用 C 编写代码。
现在已经为这段代码苦苦挣扎了大约 5 个小时。
问题是在 C 中创建一个程序,仅使用循环(不使用 pow()
,仅使用 stdio.h
库)。
问题是让用户给你两个数字 - X 和 N
程序将打印以下等式的结果:
1+2x+3x^2+4x^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);
}
我不会给你代码,但你应该遵循的推理
首先你必须以某种方式从用户那里获取数据(作为参数,从 stdio...随便)
x = getFromUser
n = getFromUser
然后您需要初始化一个临时结果
result = 0
你要加多少次? -> 恰好 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
}
等等;你不能使用战俘。所以你必须自己编程(我想这就是练习的想法)
那么你需要一个函数,它必须 return 一个 int (实际上,它可能 return 甚至是无理数,但我认为他们不会要求你这样做)
int customPow(int base, int exponent) {
//Put your for in here, and may the pow be with you
}
代码需要自己琢磨,不过大致思路如下:
创建你自己的 pow 函数 returns 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;
}
您无需尝试创建 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;
}
基于全能@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);
}
首先,我搜索了一下,发现所有问题都相似,但不完全是这个。
这是我第一次 post 来这里,我是编程初学者,目前正在学习用 C 编写代码。 现在已经为这段代码苦苦挣扎了大约 5 个小时。
问题是在 C 中创建一个程序,仅使用循环(不使用 pow()
,仅使用 stdio.h
库)。
问题是让用户给你两个数字 - X 和 N 程序将打印以下等式的结果:
1+2x+3x^2+4x^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);
}
我不会给你代码,但你应该遵循的推理
首先你必须以某种方式从用户那里获取数据(作为参数,从 stdio...随便)
x = getFromUser
n = getFromUser
然后您需要初始化一个临时结果
result = 0
你要加多少次? -> 恰好 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
}
等等;你不能使用战俘。所以你必须自己编程(我想这就是练习的想法)
那么你需要一个函数,它必须 return 一个 int (实际上,它可能 return 甚至是无理数,但我认为他们不会要求你这样做)
int customPow(int base, int exponent) {
//Put your for in here, and may the pow be with you
}
代码需要自己琢磨,不过大致思路如下:
创建你自己的 pow 函数 returns 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;
}
您无需尝试创建 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;
}
基于全能@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);
}