祖安呆木木 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 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退