2017-09-25 69 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 *。”这似乎是适用的文档的确切部分。那也是你的解释吗?感谢您的澄清! –

相关问题