为什么不';这段代码在C中不能正常运行吗?
我正在尝试学习C语言,但我的代码运行不正常。它总是给出致命错误。我认为for循环中存在问题。我如何修复它为什么不';这段代码在C中不能正常运行吗?,c,for-loop,if-statement,C,For Loop,If Statement,我正在尝试学习C语言,但我的代码运行不正常。它总是给出致命错误。我认为for循环中存在问题。我如何修复它 #include<stdio.h> int main( void ) { int a ; int b = 1 ; int i = 0 ; printf("Enter a number:"); scanf("%d",&a); if(a=0) printf("Factorial=1"); else if (a &g
#include<stdio.h>
int main( void )
{
int a ;
int b = 1 ;
int i = 0 ;
printf("Enter a number:");
scanf("%d",&a);
if(a=0)
printf("Factorial=1");
else if (a > 0){
for(i=1 ; i<=a ;i++){
b = 1;
b *= i;
}
printf("Factorial=%d",b);
}
else
printf("FATAL ERROR");
return 0;
}
#包括
内部主(空)
{
INTA;
int b=1;
int i=0;
printf(“输入一个数字:”);
scanf(“%d”和“&a”);
如果(a=0)
printf(“阶乘=1”);
如果(a>0),则为else{
对于(i=1;i如果(a==0)
不赋值,则使用比较
您想使用比较,但最终使用赋值
if(a=0)
与if(0)
相同,因此执行else
部分。1
但该部分也会查找a>0
,情况并非如此
因此,它会打印致命错误
1.发生这种情况是因为赋值表达式的结果是表达式的值
我需要做什么来计算阶乘
fact(0)=1
fact(1)=1
fact(n)=n*fact(n-1);
所以你会这样做
for(int i=1;i<=a;i++)
b*=i;
有两个主要问题。
首先是使用if(a=0)
,结果是赋值而不是比较,比较是通过if(a=0)
实现的。
其次
另外,值得一提的是,您总是出现致命错误的原因是因为您在if
条件下所做的操作。由于if(a=0)
,变量a
被赋值为0
。因此不能同时满足if
和else-if
条件,导致每次执行else
块。if(a=0)
应替换为@AditiRawat提到的if(a==0
)if(a=0)
实际上是将a
赋值给int0
。同样,正如Aditi所提到的,正确的比较运算符应该是==
@MuzafferTemelli。:如果您有什么不明白的地方,请告诉我
#include<stdio.h>
int main()
{
int a;
int b = 1 ;
int i = 0 ;
printf("Enter a number:");
scanf("%d",&a);
if(a=0)
printf("Factorial=1");
else if (a > 0){
for(i=1 ; i<=a ;i++){
b *= i; // don't overwrite value of b with 1
}
printf("Factorial=%d",b);
}
else
printf("FATAL ERROR");
return 0;
}
for(i=1 ; i<=a ;i++)
{
b = 1;
b *= i;
}
for(i=1 ; i<=a ;i++)
{
b *= i;
}