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