用数组编程以在c中查找和

时间:2019-02-17 05:39:20

标签: c arrays

我在想code来找到数字的总和。

所以我写了下面的code

#include <stdio.h>
#include <math.h>
int main()
{
    int n,i,s=0,a[100];
    printf("enter number of numbers");
    scanf("%d",n);
    for(i=1;i<=n;i++)
    scanf("%d",&a[i]);
    s=0;
    for (i=1;i<=n;i++)
     {s=s+a[i];}
    printf("sum is%d\n",s);
}

但是在输出中它显示了分段error。即enter image description here

那怎么了?

2 个答案:

答案 0 :(得分:2)

所以这行:

scanf("%d",n);

应替换为

scanf("%d",&n);

说明:

scanf()根据格式从stdin中读取数据,并将数据存储在下一个附加参数所指向的位置。在这种情况下,格式为%d表示我们要读取一个整数,并且该整数将存储在n的位置。 &运算符用于获取变量在C中的位置。

答案 1 :(得分:2)

使用此:

scanf("%d",&n);

原因:

您必须将&放在scanf中使用的变量前面。一旦了解了指针,其原因就会变得很清楚。忘记&符号很容易,而忘记它时,程序几乎总是在运行时崩溃。

示例:

scanf("%d %d", &a, &b);
printf("%d %d", a, b);

由于上面的ab是两个变量,并且每个变量都分配了自己的地址,但是我们发送{{1}的地址来代替ab }和a。原因是,b需要修改scanf()a的值,但是它们对于b是局部的。因此,为了反映主函数的变量scanf()a中的变化,我们需要传递它们的地址。我们不能简单地按价值传递它们。 但是在使用b函数的情况下,因为我们只打算在输出控制台中打印变量的值,所以变量a和b的值将不会进行任何更改。因此不需要发送他们的地址。