Добавьте четные числа, используя одномерный массив размером 10 в C - PullRequest
0 голосов
/ 17 октября 2019

программа для вычисления суммы всех четных элементов из одномерного массива размером 10.

#include<stdio.h>
void main(){
    int i,count=0;
    int a[10]; //one dimensional array with size 10
    for(i=0;i<=11;i++){
        a[i]=i; //assigning values to array
        if(i%2==0){
            count=count+a[i]; //add even numbers
        }
    }
    printf("%d",count); //output
}

Я ожидал, что будет 30, но фактический результат - 20.

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Этот цикл

for(i=0;i<=11;i++){

вызывает неопределенное поведение, поскольку в цикле предпринимается попытка получить доступ к памяти вне массива.

Если массив имеет N элементов, то допустимый диапазониз индексов [0, N). Поэтому перепишите цикл, как

for(i=0;i < 10;i++){

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

#include <stdio.h>

int main(void) 
{
    enum { N = 10 };
    int count = 0;
    int a[N];

    for ( int i = 0; i < N; i++ )
    {
        a[i] = i;

        if ( i % 2 == 0 )
        {
            count += a[i];
        }
    }

    printf( "%d\n", count ); 

    return 0;
}

Обратите внимание, что согласно стандарту C функция main без параметров должна быть объявлена ​​как

int main( void )
0 голосов
/ 17 октября 2019

Вы назначаете [10] и [11], которые не определены.

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