Summa C程序崩溃

时间:2013-10-31 17:35:57

标签: c loops crash-reports

打扰一下,如果之前已经发布了这个版本,我没有时间让这个代码正确,因为我需要明天将它发送给我的编程老师,但我无法看出什么是错的。它只是一个带限制数的汇总代码......但它确实存在错误。我试着在C ++中编写相同的指令,它以某种方式工作。为什么!?

#include <stdio.h> 
int main()
{
    int a, n, suma;

    suma = 0;

    printf("Introduce un numero límite \n");

    scanf("%d", n);        

    for(a=0; a <= n; a++)
    {
        suma=suma+a;
    }

    printf("La suma de todos los numeros es: %d", suma);
}

忽略打印件...他们只是与用户交互:“我应该在哪里停止添加数字?总和是......”。事情都一样。

如果你能帮助我,我将非常感谢你。我是第一年,我是C的新手...

哦!所有编译警告:http://puu.sh/54Rnh.png

3 个答案:

答案 0 :(得分:3)

在scanf中传递n的地址

scanf("%d", &n);

作为旁注,您不需要从0开始循环来计算总和

for(a=1; a <= n; ++a) //start from 1

做得不多,但保存了一次迭代。

此外,如果您不打算使用表达式的结果,请使用preincrement,因为它的开销略小于后增量。

答案 1 :(得分:0)

scanf()函数需要以字符串格式n声明的相应变量("%d")的地址。将您的代码更改为:

scanf("%d", &n); 

一切都会好的,你的老师会给你一个很好的记录

答案 2 :(得分:0)

scanf() 从标准输入流中读取。要存储已读取的内容,您需要提供正确的地址。指针持有地址。

&是一元运算符,可帮助您获取操作数的地址。

&n是一个有效的指针表达式,为您提供n的地址,其中您需要存储n的值

因此,请将scanf()转为

scanf("%d",&n);