-1

第一个代码为 1! 的 82!阶乘……有什么理由吗?考虑到 do 循环工作得非常好,这对我来说真的没有任何意义。如果您运行该程序,您将看到一个表格,其中给出了阶乘的所有答案。do循环是我必须做的,但我不能使用它。

知道为什么 for 循环不能正常工作吗?

#include <stdio.h>                                     /* Necessary header */
#define LAST_NUMBER 25                                 /* Macro preset to avoid magic numbers */

int main(void)                                         /* Start executive method */
{
    int Nbr;
    signed long total = Nbr;

    printf("Nbr               Nbr!");                  /* Table Headers */
    printf("\n----------------------");

    for (Nbr = 1; Nbr<=LAST_NUMBER;)              /* Loop statement begins */
    {
        total *= Nbr;
        printf("\n%2d   %15ld", Nbr, total);
                Nbr++;
                                        /* Prints both columns for table */
    }                       /* Loop ends when predefined number is reached */

    return 0;
}                                                      /* End main method */

/* The following code works fine */

#include <stdio.h>                                     /* Necessary header */
#define LAST_NUMBER 25                                 /* Macro preset to avoid magic numbers */

int main(void)                                         /* Start executive method */
{
    int Nbr = 1;
    signed long total = Nbr;

    printf("Nbr               Nbr!");                  /* Table Headers */
    printf("\n----------------------");

    do                                                 /* Loop statement begins */
    {
        total *= Nbr;
        printf("\n%2d   %15ld", Nbr, total);            /* Prints both columns for table */
        Nbr++;
    }while (Nbr<=LAST_NUMBER);                         /* Loop ends when predefined number is reached */

    return 0;
}                                                      /* End main method */
4

2 回答 2

2
int Nbr;
signed long total = Nbr;

您必须在使用变量之前对其进行初始化。

于 2012-10-15T11:53:16.217 回答
0

在第一种情况下,您在将其分配给 total 之前不进行初始化Nbr,因此其初始值为indeterminate。具有范围的变量auto(在函数或块中声明且没有static关键字)未初始化。

于 2012-10-15T11:55:15.663 回答