#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写的。
1条答案
按热度按时间wpx232ag1#
您的代码中存在一些问题:
c = b * a;
计算一个中间结果,但不是一个有用的结果。您应该计算c = c * b;
将当前阶乘乘以下一个整数以获得下一个阶乘。c = c * b;
,必须在循环开始之前将c
初始化为1
。printf("%d", c);
只输出数字。您应该输出一个空格或换行符来分隔数字。scanf("%d", &a)
可能无法转换用户输入的数字(例如,如果用户键入A
)。a
将保持未初始化状态,从而在以后的表达式中使用它时导致未定义的行为。应测试scanf()
是否成功并返回1
(成功转换的次数)。以下是修改后的版本:
建议使用
for
循环将循环变量的初始化、递增和测试集中在一个位置: