вычисление суммы введенных чисел на языке c - PullRequest
0 голосов
/ 03 мая 2020

Я хочу вычислить сумму входных чисел, используя концепцию указателя на c языке. Но когда я компилирую приведенную ниже программу, правильное значение для суммы не появляется. помогите мне найти ошибку, которую я сделал в приведенной ниже программе.

#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);

}

Ответы [ 2 ]

1 голос
/ 03 мая 2020

Ваш g только один целое число, поэтому:

  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

0 голосов
/ 03 мая 2020

Вы можете хранить только одно число в 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);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...