繁体   English   中英

计算 c 语言中输入数字的总和

[英]calculating the sum of input numbers in c language

我想使用 c 语言中的指针概念计算输入数字的总和。但是当我编译下面给出的程序时,不会出现 sum 的正确值。 帮我找出我在下面的程序中犯的错误。

#include<stdio.h>

void main()
{   
    int g , *p;

    int sum = 0;

    int x=1;

    for(int i=1; i<3; i++ )
    {   
        scanf("%d ", &g);       
    }

        p = &g;

    while( x < 3){
    sum =  sum + *p;
    p++;
    x++;
    }

    printf("\n sum = %d ",sum);

}

你的g只有一个integer 所以:

  1. 每次调用scanf("%d ", &g); ,您将覆盖以前的值。
  2. 当您在p++; ,该指针将不再有效。 (你认为它会指向哪里?)

如果要在g中存储三个不同的值,则需要将其设为整数数组

为此,请对您的代码进行以下更改:

int g[3] , *p; // "g" can now store three different values
int x=0; // Later on - counting from 0 thru 2 in the "while" loop
//...
for (int i=0; i<3; i++) // NOTE: Arrays begin at "0" in C!
{   
    scanf("%d ", &g[i]); // Store to the element indexed by "i"       
}
//...
p = g; // For arrays, don't need the & operator: this will give address of first element

您只能在g中存储一个数字。

因此, p++; 这里会使p指向一个无效的地方。

您应该分配一个数组来存储所有输入值。

另请注意,您应该在托管环境中使用标准int main(void)而不是void main() ,这在 C89 中是非法的,在 C99 或更高版本中是实现定义的,除非您有特殊原因使用非标准签名。

#include<stdio.h>

int main(void)
{   
    int g[3] , *p;

    int sum = 0;

    int x=1;

    for(int i=1; i<3; i++ )
    {   
        scanf("%d ", &g[i]);
    }

        p = &g[1];

    while( x < 3){
    sum =  sum + *p;
    p++;
    x++;
    }

    printf("\n sum = %d ",sum);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM