2014-01-25 132 views
0

如何循环在这个例子中特别是如果奇数初始化为值3而不是如何递增得到平方?代码如何计算平方?

#include <stdio.h> 
int main(void) 
{ 
    int i, n, odd, square; 

    printf("This program prints a table of squares.\n"); 
    printf("Enter number of entries in table :"); 
    scanf("%d", &n); 

    i = 1; 
    odd = 3; 
    for(square = 1; i <= n; odd += 2){ 
     printf("%10d%10d\n", i, square); 
     i++; 
     square += odd; 
    } 
return 0; 
} 

我需要一步一步的澄清

+0

作业?拿一支铅笔和纸,写下数值。遵循代码 –

+2

'square'和'odd'与循环条件和计数器有什么关系?没有。一支铅笔和一张纸将回答你的问题。 – WhozCraig

+0

请阅读循环工作原理 – JackXu

回答

6

这是通过使用数学技巧,请帮助。前N个奇数的总和总是一个平方。

例如:

1 
1 + 3 = 4 
1 + 3 + 5 = 9 
1 + 3 + 5 + 7 = 16 

odd最初被设置为3,并在穿过回路1.

每次square开始,square被印刷,然后odd加到square,然后2是添加到odd,使其成为下一个奇数。

+1

有趣的数学技巧,从来没有见过它。 –

+0

有趣的是,我知道这个 –

+0

@DonRoby - 我认为这对讲师非常有想象力。 –

0

由于我们是从1

开始起初square = 1square^2odd = 32*square+1 所以,下一个将是正方形^ 2 + 2 *平方+ 1 - >(正方形+ 1)^ 2

所以一般将是square^2+2*n+sumOfOddNum(n)

其中,sumOfOddNum(n)是如指出的第一n oddnumbers的总和为n^2

so,square^2+2*n*square+n^2 [square = 1]将变成(square+n)^2