2017-09-25 47 views
0
#include <stdio.h> 

int main() 
{ 

    int i; //counter for the loop 
    int n; //integer 
    int series; 

    printf("Enter an integer number: "); 
    scanf("%d" , &n); 

     for(i = 1; i <= n; i++)  
    { 
     if (i % 2 == 0)    
     (series -= i * i);  
    else 
     (series += i * i);  
} 
    printf("The value of the series is: %d\n" , series); 

return 0; 
} 

所以循環僅僅是一個基本的for循環中,利用i作爲計數器,只要它是不太大於或等於n試圖創建用於計算該系列的程序= 1^2 - 2^2 + 3^2

我必須複製的系列會添加奇數並減去偶數,因此if條件會測試數字是偶數還是奇數。該程序編譯罰款,但當我輸入整數爲5時,系列的總和應該是15,但是我的程序給出總和32779.任何幫助修復我的程序將不勝感激。

+4

未初始化的變量'series'會造成的[未定義行爲 – John3136

+1

可能重複發生在C聲明的,未初始化的變量是什麼?它是否有價值?](https://stackoverflow.com/questions/1597405/what-happens-to-a-declared-uninitialized-variable-in-c-does-it-have-a-value) – John3136

+0

Can請你澄清一下? – chrisHG

回答

2

你沒有初始化series,所以它在計算開始時是一個隨機值。

#include <stdio.h> 

int main() 
{ 

    int i = 0; //counter for the loop 
    int n = 0; //integer 
    int series = 0; 

    printf("Enter an integer number: "); 
    scanf("%d" , &n); 

    for(i = 1; i <= n; i++)  
    { 
     if (i % 2 == 0)    
      (series -= i * i);  
     else 
      (series += i * i);  
    } 
    printf("The value of the series is: %d\n" , series); 

    return 0; 
} 
+0

更準確地說,'series'的值將會是「未定義的」。有關更多信息,請參閱:[未初始化變量:C語言示例](https://en.wikipedia.org/wiki/Uninitialized_variable#Example_of_the_C_language)。 –

+0

@LouisLangholtz沒有「未定義的值」之類的東西。有* indeterminate *或* unspecified *值,和*未定義的行爲*。在這種情況下,它是* indeterminate value *,並且,根據我現在不會進入的一些事情,讀取不確定值的變量可能導致未定義的行爲,或者產生未指定的值。 –

+0

@ M.M似乎維基百科的文章也可以使用完善你的建議。在參考的C標準文件[ISO/IEC 9899:TC3](http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256)中的部分** 6.7.8初始化,10 ** .pdf)指出:「如果具有自動存儲持續時間的對象未明確初始化,則其值爲* indeterminate *。」這似乎是適用的文檔的確切部分。那也是你的解釋嗎?感謝您的澄清! –

相關問題