不会有人不吃香菜吧 2021-10-19 18:42 采纳率: 73.7%
浏览 138
已结题

C语言:打印非负整数阶乘的函数。

其中N是用户传入的参数,其值不超过1000。如果N是非负整数,则该函数必须在一行中打印出N!的值,否则打印“Invalid input”。
请指出这段代码错在哪一步

#include <stdio.h>
void Print_Factorial ( const int N );
int main()
{
    int N;
    scanf("%d", &N);
    Print_Factorial(N);
    return 0;
}
void Print_Factorial ( const int N )
{
    int i;
    double sum=1.0;
    if(N>0){
        for (i=1; i<N+1; i++) {
            sum=sum*i;
        }
        printf("%.0f",sum);
    }
    else if(N==0)
        printf("1");
    else if (N<0){
        if (N==(int)N) {
            int n=-N;
            for (i=1; i<n+1; i++) {
                sum=sum*i;
            }
            printf("%.0f",sum);
        }
        if(N!=(int)N)
            printf("Invalid input");
    }
}


(错的部分是N<0部分)

  • 写回答

1条回答 默认 最新

  • -Undefined_ 2021-10-19 18:49
    关注

    n<0就不是非负整数了,应该输出"Invalid input"

    #include <stdio.h>
    void Print_Factorial ( const int N );
    int main() {
        int N;
        scanf("%d", &N);
        Print_Factorial(N);
        return 0;
    }
    void Print_Factorial ( const int N ) {
        int i,sum=1;
        if(N>=0) {
            for (i=1; i<N+1; i++) {
                sum=sum*i;
            }
            printf("%d",sum);
        } else
            printf("Invalid input");
        
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月27日
  • 已采纳回答 10月19日
  • 修改了问题 10月19日
  • 创建了问题 10月19日

悬赏问题

  • ¥188 需要修改一个工具,懂得汇编的人来。
  • ¥15 livecharts wpf piechart 属性
  • ¥20 数学建模,尽量用matlab回答,论文格式
  • ¥15 昨天挂载了一下u盘,然后拔了
  • ¥30 win from 窗口最大最小化,控件放大缩小,闪烁问题
  • ¥20 易康econgnition精度验证
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题