如何使循环进行 n 次以找到第 n 项的总和?在 C 程序中
How do I make the loop go n times to find sum of nth terms? In C program
问题是:
编写一个 C 程序,使用循环 {1+2+4+8....}
确定以下数列的前 N 项之和
我试过的代码是:
#include <stdio.h>
int main(void){
int i,sum=0,n;
scanf("%d",&n);
for(i=1;i<n;i*=2)
{
sum=sum+i;
}
printf("Sum=%d\n",sum);
return 0;
}
问题是,当我输入 N 作为 5 时,它给出的输出是 7,但我期望的输出是 31。
如,5项之和=1+2+4+8+16=31
所以,我想知道如何让我的循环重复 5 次或第 n 次,以获得预期的结果。
你的问题是 i
不是每次迭代增加 1 而是乘以 2。你需要添加另一个变量来计算迭代次数。
#include <stdio.h>
int main(void){
int i,value=1,sum=0,n;
scanf("%d",&n);
for(i=0;i<n;i++)
{
sum=sum+value;
value *= 2;
}
printf("Sum=%d\n",sum);
return 0;
}
另外,因为1+2+4+...+2^(n - 1) == 2^n - 1(^代表幂),所以不用循环也可以通过位移计算.
#include <stdio.h>
int main(void){
int sum,n;
scanf("%d",&n);
sum = (1 << n) - 1; // 1 << n equals to 2^n
printf("Sum=%d\n",sum);
return 0;
}
不要更新你的变量,它的任务是跟踪术语的数量。
因为这道题是关于几何级数的,所以你可以用它的属性来计算总和,它的
级数公式之和:a(rn-1)/(r-1),其中a:第一项,r:公比
此外,为 scanf
添加错误检查。
这是它的代码片段:
#include <stdio.h>
int main(void) {
int i, sum=0,n,value=1;
if(scanf("%d", &n)!=1){
fprintf(stderr,"Please input the valid number");
return -1;
}
for (i=0;i<n;i++)
{
sum +=value;
value *=2;
}
printf("Sum=%d\n", sum);
return 0;
}
问题是: 编写一个 C 程序,使用循环 {1+2+4+8....}
确定以下数列的前 N 项之和我试过的代码是:
#include <stdio.h>
int main(void){
int i,sum=0,n;
scanf("%d",&n);
for(i=1;i<n;i*=2)
{
sum=sum+i;
}
printf("Sum=%d\n",sum);
return 0;
}
问题是,当我输入 N 作为 5 时,它给出的输出是 7,但我期望的输出是 31。
如,5项之和=1+2+4+8+16=31
所以,我想知道如何让我的循环重复 5 次或第 n 次,以获得预期的结果。
你的问题是 i
不是每次迭代增加 1 而是乘以 2。你需要添加另一个变量来计算迭代次数。
#include <stdio.h>
int main(void){
int i,value=1,sum=0,n;
scanf("%d",&n);
for(i=0;i<n;i++)
{
sum=sum+value;
value *= 2;
}
printf("Sum=%d\n",sum);
return 0;
}
另外,因为1+2+4+...+2^(n - 1) == 2^n - 1(^代表幂),所以不用循环也可以通过位移计算.
#include <stdio.h>
int main(void){
int sum,n;
scanf("%d",&n);
sum = (1 << n) - 1; // 1 << n equals to 2^n
printf("Sum=%d\n",sum);
return 0;
}
不要更新你的变量,它的任务是跟踪术语的数量。
因为这道题是关于几何级数的,所以你可以用它的属性来计算总和,它的
级数公式之和:a(rn-1)/(r-1),其中a:第一项,r:公比
此外,为 scanf
添加错误检查。
这是它的代码片段:
#include <stdio.h>
int main(void) {
int i, sum=0,n,value=1;
if(scanf("%d", &n)!=1){
fprintf(stderr,"Please input the valid number");
return -1;
}
for (i=0;i<n;i++)
{
sum +=value;
value *=2;
}
printf("Sum=%d\n", sum);
return 0;
}