1

对不起,如果此步骤之前已经发布过,我没有时间来正确地编写此代码,因为我需要明天将其发送给我的编程老师,但我看不出有什么问题。它只是一个带有限制数的汇总代码......但它总是出错。我尝试用 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

4

3 回答 3

3

n传入scanf中的地址

scanf("%d", &n);

顺便说一句,您无需开始循环0即可计算总和

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

做的不多,但节省了一次迭代。

此外,当您不打算使用表达式的结果时,请使用 preincrement,因为它的开销比 postincrement 略小。

于 2013-10-31T17:36:29.113 回答
0

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

scanf("%d", &n); 

一切都会好起来的,你的老师会给你一个很好的笔记

于 2013-10-31T17:40:23.293 回答
0

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

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

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

所以,把你scanf()

scanf("%d",&n);
于 2013-10-31T17:50:17.613 回答