如何增加c的值?

soat7uwm  于 2022-12-17  发布在  其他
关注(0)|答案(1)|浏览(139)
#include <stdio.h>

int main() {
    // Write C code here
    int a, b = 1, c, d;
    printf("Value of a:");
    scanf("%d", &a);
    
    while (b < a) {
        c = b * a;
        printf("%d", c);
        b++;
    }

    return 0;
}

我想求一个数的阶乘,但我不知道如何把这些值相加,这是用C写的。

wpx232ag

wpx232ag1#

您的代码中存在一些问题:

  • 表达式c = b * a;计算一个中间结果,但不是一个有用的结果。您应该计算c = c * b;将当前阶乘乘以下一个整数以获得下一个阶乘。
  • 对于表达式c = c * b;,必须在循环开始之前将c初始化为1
  • printf("%d", c);只输出数字。您应该输出一个空格或换行符来分隔数字。
  • scanf("%d", &a)可能无法转换用户输入的数字(例如,如果用户键入A)。a将保持未初始化状态,从而在以后的表达式中使用它时导致未定义的行为。应测试scanf()是否成功并返回1(成功转换的次数)。

以下是修改后的版本:

#include <stdio.h>

int main() {
    int a, b = 1, c = 1;

    printf("Value of a:");
    if (scanf("%d", &a) == 1) {
        while (b < a) {
            c = c * b;
            printf("%d\n", c);
            b++;
        }
    }
    return 0;
}

建议使用for循环将循环变量的初始化、递增和测试集中在一个位置:

#include <stdio.h>

int main() {
    int a;

    printf("Value of a:");
    if (scanf("%d", &a) == 1) {
        int c = 1;
        for (int b = 1; b < a; b++) {
            c = c * b;   // one can also write c *= b;
            printf("%d\n", c);
        }
    }
    return 0;
}

相关问题