祖安呆木木 2021-01-14 21:01 采纳率: 100%
浏览 11
已采纳

萌新求助!c语言算n的阶乘,不知道我错在哪?

如题,写完以后不管输入什么都得0,在线蹲一个大佬OvO

源代码:

#include<stdio.h>
int main()
{
    int n;
    int a=0;
    scanf("%d",&n);
    if(n=0)
    {
            printf("%d",a);
    }
    else
    {
        do
        {
            a=n*(n-1);
            n=n-1;
        }
        while(n>=2);
    }
    printf("%d",a);
}
 

  • 写回答

3条回答 默认 最新

  • include_iostream_ 2021-01-14 21:54
    关注

    修改后程序第八行if(n=0)有错。C语言中=运算符只有赋值含义,其返回值为赋值符号右端表达式的值,也就是恒为0。应修改为判断相等==运算符(两个等号)。

    在你的第二个代码中,由于n=0的值恒为0,if(n=0)永远不会执行,则else执行。此时n为0,a为输入值。else中的do一定只执行一次(n此时值为2,不符合while条件),执行时,n-1=-1乘上a,自然就是输入的相反数。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示