Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C编程为什么我的代码不能工作?_C - Fatal编程技术网

C编程为什么我的代码不能工作?

C编程为什么我的代码不能工作?,c,C,因此,我必须为S=1+1*2+1*2*3+1*2*3*4+…n编写一个代码其中n由用户给定。 我写了这段代码 #include <stdio.h> int main (void) { int i, n, j, s, p; printf("Put a number:"); scanf("%d",&n); s = 0; for (i = 1; i <= n; i++); { p=1; }

因此,我必须为
S=1+1*2+1*2*3+1*2*3*4+…n编写一个代码其中n由用户给定。
我写了这段代码

#include <stdio.h>
int main (void)
{
    int i, n, j, s, p;
    printf("Put a number:");
    scanf("%d",&n);
    s = 0;

    for (i = 1; i <= n; i++);    
    {
     p=1;    
    }

   for (j=1;j<=i;j++)
   {
       s=s+(p*i);
   }
   printf("\n Sum=%d",s);
   return 0;
}
#包括
内部主(空)
{
int i,n,j,s,p;
printf(“输入一个数字:”);
scanf(“%d”和“&n”);
s=0;

for(i=1;i在第一个“for”结束语句后;,因此这是一个空循环。另外,第二个循环应该在第一个循环内,而不是。缩进代码不仅仅是装饰性的,它可以帮助澄清这样的代码。

我建议您编写一个计算阶乘(n)的函数首先,然后在循环中使用该函数

这样更容易理解

int fact( int n) {
   // do your factorial compututation
}

int n = 0, sum = 0;

scanf("%d", &n);

for( int i = 0; i<n; i++) 
{
   sum += fact(i);
}

我认为基本上它需要两个循环,一个用于添加阶乘值,一个用于计算阶乘的内部循环

#include <stdio.h>
int main (){
        int i,n,j,sum,factorial;
        printf("Put a number:");
        scanf("%d",&n);
        sum = 0;
        for (i=1;i<=n;i++){
                factorial = 1;
                for (j=2;j<=i;j++){
                        factorial *= j;
                }
                sum += factorial;
        }
        printf("\nSum=%d\n",sum);
        return 0;
}
#包括
int main(){
int i,n,j,和,阶乘;
printf(“输入一个数字:”);
scanf(“%d”和“&n”);
总和=0;

对于(i=1;i这是这个程序背后的主要逻辑:
使用递归函数来计算n的阶乘,并在for循环中使用它来计算1和n之间所有值的总和:

#include<stdio.h>

int factorial(int);

int main(void)
  {
   int i,n,s;
   printf("Put a number:");
   scanf("%d",&n);
   s=0;

     for(i=1;i<=n;i++)
     {
       s+=factorial(i);
     }
  printf("\n Sum=%d",s);

  }

int factorial(int x)
  {

    if(x==1)
    return 1;    
    return x*factorial(x-1);

  }
#包括
整数阶乘(int);
内部主(空)
{
int i,n,s;
printf(“输入一个数字:”);
scanf(“%d”和“&n”);
s=0;

对于(i=1;i基本上一切都错了:-)

#包括
整数阶乘(整数n)
{
int i,res=1;
对于(i=2;i这是您需要的

int f = 1;
int s = 0;
for (i = 1;i <= n;i++)
{     
    f *= i;
    s += f;
}
在下面的例子中,i总是
n+1
p
总是1,所以你有效地做了n次
i+i…

for (j=1;j<=i;j++)
{
   s=s+(p*i);
}

for(j=1;j
for(i=1;i)请正确缩进您的代码。
for(i=1;iI)删除了它,但问题是逻辑上的,而不是语法上的,而且您应该始终测试
scanf()
返回转换输入数的预期值,在本例中为
1
。因此,我复制了您的代码,在gcc中编译,调用
time a.out
并输入999999,去卫生间,回来,去喝一杯,回来,然后按CTRL+C,结果仍在计算中,然后再次调用
/a.out现在输入'Put a number:d Sum=-125961703`:)(只是开玩笑,代码适合正常输入,逻辑很好)太糟糕了,他给出了阶乘代码..我想这是家庭作业的主题..你的程序缩进非常难看:-)@Jens好的,格式化了。但是我必须手动为每一行格式化。你知道如何在文本编辑器中一次自动格式化整个程序吗?我只知道“代码示例”选项,该选项仅将所选文本突出显示为代码。如何一次格式化整个内容?谢谢。我建议GNU indent在您的计算机上缩进代码,然后粘贴。编辑窗格对特定编程语言没有缩进功能。@Jens GNU indent是一个可供windows下载的程序?@Jens我以为您会我会自己编辑我的答案,因为你在这方面有足够的声誉。或者你需要更多来编辑别人的答案?
for (i=1;i<=n;i++);    
    {
     p=1;    
    }
#include <stdio.h>

int factorial(int n)
{
    int i, res = 1;

    for(i = 2; i <= n; i++)
        res *= i;

    return res;
}

int main(void)
{
    int i, n, s = 0;
    printf("Put a number:");
    scanf("%d", &n);
    s = 0;
    for (i = 1; i <= n; i++)
        s += factorial(i);

    printf("\n Sum=%d\n", s);
    return 0;
}
int f = 1;
int s = 0;
for (i = 1;i <= n;i++)
{     
    f *= i;
    s += f;
}
{
 p=1;    
}
for (j=1;j<=i;j++)
{
   s=s+(p*i);
}