2013-01-01 2 views
0

Очевидно, что это [hometask] и совершенно новый вопрос, который я задаю. Я попытался понять это самостоятельно, меняя код несколько раз, но все же получаю неправильные результаты от факториала. Идея программы заключается в печати таблицы факториалов для целых чисел от 1 до 10. Для того, чтобы получить трюк сделано, моя идея состояла в том, чтобы использовать вложенные в то время как и заявления, как показано в коде ниже:Получение неправильного результата при вычислении факториалов в C. =

#include <stdio.h> 

int main (void) 

{ 
    int n, factorial, u; 
    u = n; 

    printf ("Table to calculate factorials from 1 to 10\n"); 
    printf ("n     Factorial to n\n"); 

    for (n = 1; n <= 10; n= n+1) 

    { 

     while (u <= n) 
     factorial = n * u; 
     u = u - 1; 
     printf ("%i     %i\n", n, factorial); 


    } 

    return 0; 

} 

Однако, я получаю неправильные результаты в консоли. Думаю, я испортил алгоритм для вычисления факториалов или программной логики. Я попытался изменить код, но все равно застрял. Любая помощь будет оценена по достоинству. Спасибо и с Новым Годом!

ответ

1

У вас на самом деле появилось несколько проблем, вплоть до того, что трудно сказать, в чем вы намерены, в первую очередь. u является унифицированным, в цикле while отсутствуют фигурные скобки, и вы назначаете неправильное значение factorial.

Вот один из способов исправить ситуацию.

for (n = 1; n <= 10; ++n) 
{ 
    factorial = 1; 

    for (u = 1; u<=n; ++u) 
    { 
     factorial *= u; 
    } 

    printf ("%i     %i\n", n, factorial); 
} 
+0

Спасибо! теперь работает. Вы правы - я пропустил фигурные скобки и начал использовать переменную u перед ее инициализацией. Получил это сейчас. Благодаря! – wondersz1

+0

Если вы установите factorial в 1 перед циклом, а затем умножьте на n внутри цикла, вам совсем не нужен второй цикл. Гораздо проще. –

+0

@ Маты Хорошая точка. Я просто пытался сделать что-то похожее на то, как оно уже было написано, используя существующие переменные. – Antimony

0

Если вы хотите использовать свою оригинальную идею:

#include <stdio.h> 

int main (void)  
{ 
    int n, factorial, u; 

    printf ("Table to calculate factorials from 1 to 10\n"); 
    printf ("n     Factorial to n\n"); 

    for (n = 1; n <= 10; n= n+1)  
    { 
     factorial = u = 1; 

     while (u <= n) 
     { 
      factorial *= u; 
      u = u - 1; 
     } 
     printf ("%i     %i\n", n, factorial); 


    } 

    return 0; 

} 
+0

Спасибо! Я испортил его алгоритмом вычисления факториалов в моем исходном коде и (как было сказано выше) пропустил фигурные скобки. Ценю вашу помощь! – wondersz1

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