Вывод моего кода C на 1 больше ожидаемого значения. Зачем? - PullRequest
0 голосов
/ 05 апреля 2019

Я отслеживаю код, но ожидаемый конечный результат на 1 меньше, чем фактический результат. Также возвращение функции меня смущает. Я не понимаю, что это значит, возвращая (b + 2) в function1. Где я должен добавить 2? Я положил результат в комментариях для ясности.

#include <stdio.h>
int function1(int info[], int size, int a, int b)
{
   //info:3 5 7 9 11 13 15 17 //size=9 //a=i->1..9 //b=(i-1)*(i-1)
    if (a<5)//1 3 
    {
        info[a]=b-1;//-1 3
        //b=0 4 
        //a=1 ->-1 //a=3 ->3 
        printf("info[%d]=%d\n",a,info[a]);
    }
    else //5 7 9
    {
        info[a]=b+1;//info[a]=17 37 65
        //b=16 36 64 
        //a=5 ->17 //a=7 ->37 //a=9 ->65    
        printf("info[%d]=%d\n",a,info[a]);
    }
return(b+2); //what's happening here?
}
int main()
{
    int info[9],i,j,a,b;
    info[0]=1;

    for (i=1; i<9; i++) 
        info[i]=info[i-1]+2; // 3 5 7 9 11 13 15 17
    i=1;
    while (i<=9)
    {
        j = function1(info,9, i,(i-1)*(i-1));
        printf("while:i=%d j=%d\n\n",i,j); //1 2//3 6//5 18//7 38//9 66
        i = i + 2;//1 3 5 7 9
    }
    printf("\n");
}
Expected:
info[1]=-1
while:i=1 j=-1

info[3]=3
while:i=3 j=3

info[5]=17
while:i=5 j=17

info[7]=37
while:i=7 j=37

info[9]=65
while:i=9 j=65

Actual:
info[1]=-1
while:i=1 j=2

info[3]=3
while:i=3 j=6

info[5]=17
while:i=5 j=18

info[7]=37
while:i=7 j=38

info[9]=65
while:i=9 j=66

1 Ответ

0 голосов
/ 05 апреля 2019

Я только что понял, что я делаю не так.Мне просто нужно добавить 2 с b, чтобы получить значения j, потому что function1 говорит, чтобы вернуть (b + 2).Значения info [a] не являются фактическими данными.

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