2014-01-25 2 views
0

Как цикл работает в этом примере, особенно если odd инициализируется значением 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

Что означает «квадрат» и «нечетный», связанный с циклом и счетчиком? Ничего. И карандаш и лист бумаги ответят на ваш вопрос. – WhozCraig

+0

, пожалуйста, прочитайте процесс, как для работы цикла – JackXu

ответ

6

Это использует математический трюк. Сумма первых N нечетных чисел всегда является квадратом.

Например:

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

odd первоначально установлен на 3, а square начинается с 1.

Everytime через петлю, square печатается, то odd добавляется к square, а затем 2 добавлено к odd, что делает его очередным нечетным числом.

+1

Интересный математический трюк, он никогда не видел его раньше. –

+0

Мне интересно знать это –

+0

@DonRoby - Я думал, что это было очень образно для лектора. –

0

Поскольку мы начинаем с 1

На первый square = 1 т.е. square^2 и odd = 3 т.е. 2*square+1 так, следующий будет квадрат^2 + 2 * квадрат + 1 -> (квадрат + 1)^2

так вообще было бы square^2+2*n+sumOfOddNum(n)

где sumOfOddNum(n) является сумма первых п oddnumbers, которые как указывалось в п^2

так, square^2+2*n*square+n^2 [square = 1] станет (square+n)^2

Смежные вопросы