(把算法直接扔给计算机,是不太好的!!!要经过思考)
int b,d; //声明 整型数 b,d并未赋初值
scanf("%d",&b); //输入 整数b (万一输入的不是有效数字呢)
while(b>=1 && b<=9) // while( 会产生死循环)
{
d=b;
}
while(d>=1) //如果 d==2 那么b==2
{
b=b*d; //有 b=2*2(正确的应该为b=2*1,如何解决,若把 d=d-1 放在前面,则 当d==1时 d==0,b=1*0=0 也不符合)
d=d-1; //其实 当 输入1时 也就是 scanf 得到1 ,这个可以不作运算,因为1的阶乘就是1
} //所以修改如下
printf("%d",b);
system("pause");
return 0;
要求算1~9中任意数的阶乘,能运行,但是结果不正确.....这个要咋改啊
修改后如下(供参考)
int b,d; //声明 整型数 b,d并未赋初值
scanf("%d",&b); //
if(b>1 && b<=9) // ( 进行1---9的数据判断)
{
d=b;
/* } *///去掉这个括号
while(d>1) // 大于1才进行连乘
{
d=d-1; //位置上调
b=b*d; //
}
}// if 的结束括号 要移动到这里,因为范围内的数据才进行连乘
printf("%d",b);
system("pause");
return 0;
int b,d; //声明 整型数 b,d并未赋初值
scanf("%d",&b); //输入 整数b (万一输入的不是有效数字呢)
while(b>=1 && b<=9) // while( 会产生死循环)
{
d=b;
}
while(d>=1) //如果 d==2 那么b==2
{
b=b*d; //有 b=2*2(正确的应该为b=2*1,如何解决,若把 d=d-1 放在前面,则 当d==1时 d==0,b=1*0=0 也不符合)
d=d-1; //其实 当 输入1时 也就是 scanf 得到1 ,这个可以不作运算,因为1的阶乘就是1
} //所以修改如下
printf("%d",b);
system("pause");
return 0;
要求算1~9中任意数的阶乘,能运行,但是结果不正确.....这个要咋改啊
修改后如下(供参考)
int b,d; //声明 整型数 b,d并未赋初值
scanf("%d",&b); //
if(b>1 && b<=9) // ( 进行1---9的数据判断)
{
d=b;
/* } *///去掉这个括号
while(d>1) // 大于1才进行连乘
{
d=d-1; //位置上调
b=b*d; //
}
}// if 的结束括号 要移动到这里,因为范围内的数据才进行连乘
printf("%d",b);
system("pause");
return 0;
[此贴子已经被作者于2022-5-30 17:50编辑过]
学C语言从底层开始,学编程从问题开始,一日学会C!!!