zhaoshuhan_ 2024-05-21 09:15 采纳率: 83.3%
浏览 1
已结题

用C语言编写这样的程序

编写一个自定义函数fun(intn),该函数的功能是求整数n的阶乘,在主函数main中调用此自定义函数,求解1(阶乘)+2(阶乘)+……n(阶乘),运行时由用户从键盘输入,如果输入的不是整数,则屏幕输出“输入非法!请重新输入!”

  • 写回答

4条回答 默认 最新

  • 关注

    上午好☀️☀️☀️️
    本答案参考ChatGPT-3.5

    问题分析:

    1. 需要定义一个自定义函数 fun(intn) 求整数 n 的阶乘;
    2. 主函数 main 中需要调用此自定义函数,计算 1! + 2! + … + n!
    3. 运行时需要根据用户输入的 n 判断是否合法,如果输入的不是整数,则需要输出“输入非法!请重新输入!”。

    解决方案:

    1. 定义函数 fun(intn) 求整数 n 的阶乘:

      int fun(int n) {
          if (n == 0) {
              return 1;   // 0 的阶乘为 1
          } else if (n < 0) {
              return -1;  // 非正整数没有阶乘,返回 -1 表示输入不合法
          } else {
              int i, result = 1;
              for (i = 1; i <= n; i++) {
                  result *= i; // 计算阶乘
              }
              return result;
          }
      }
      
    2. 主函数 main 中调用 fun(intn) 函数,计算 1! + 2! + … + n!

      int main() {
          int n, i, sum = 0;
          printf("请输入整数 n:");
          if (scanf("%d", &n) != 1) { // 判断输入是否合法
              printf("输入非法!请重新输入!");
              return 0; // 程序结束
          }
          for (i = 1; i <= n; i++) {
              sum += fun(i); // 计算阶乘的和
          }
          printf("1! + 2! + … + %d! = %d\n", n, sum);
          return 0;
      }
      

      注意:在读取用户输入的整数时,需要使用 scanf 函数,并判断返回值是否为 1,如果不为 1 则说明输入非法,需要输出提示信息并结束程序。

    修改后的正确代码:

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

报告相同问题?

问题事件

  • 系统已结题 5月29日
  • 已采纳回答 5月21日
  • 创建了问题 5月21日

悬赏问题

  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 为什么在iis上部署网站,服务器可以访问,但是本地电脑访问不了
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法
  • ¥15 Opencv配置出错
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像