2016-04-01 2 views
-1

Я написал функцию для вычисления, и она также должна вернуть сумму. Однако сумма не работает нормально. Выход:Как я могу получить сумму на работу?

Enter how many numbers to print : 7 
0 1 1 2 3 5 8 
Sum of series is: 31 

Сумма должна быть 20

Код:

#include<stdio.h> 
void f(int num) 
{ 
     int k,count; 
     int sum=0; 
     int i = 0; 
     int j = 1; 
     printf("%d %d ",i,j); 
     count = 2; /* count is 2 because we already printed 0 and 1*/ 
     k = i + j; 
     while(count < num) 
     { 
      printf("%d ",k); 
          i = j; 
          j = k; 
          k = i+j; 
          sum+=k; 
          count++; 
     } 
     printf("\n"); 
     printf("Sum of F series is: %d",sum); 

     return; 
} 
int main() 
{ 
     int num; 
     printf("Enter how many numbers to print : "); 
     fflush(stdout); 
     scanf("%d",&num); 
     f(num); 
     return 0; 
} 

Любая помощь будет принята с благодарностью

+1

Вы не суммируете то, что печатаете. –

+0

это звучит как домашнее задание ......... – 8protons

ответ

1

Два изменения, которые будут сделаны -

1. Инициализировать sum к 1 -

int sum=1; //as you don't include 0 and 1 in loop 

2. Изменить положение sum+=k; заявления -

printf("%d ",k); 
sum+=k; 

Потому что прямо сейчас в вашем коде -

k = i+j; 
sum+=k; 

k, изменяется (, который неверно), прежде чем он будет добавлен в sum, что приводит к некорректному ответу.

Demo

+0

Спасибо! Он отлично работает, и я также понял, почему он сейчас не работает :) – Lurem

+0

@NickM Рад, что это сработало. Если вы напечатали серию, вы увидите, что некорректная серия создавалась :) – ameyCU