w2689513326 2021-11-23 08:45 采纳率: 0%
浏览 2138

c语言程序运行超时怎么办

pta显示运行超时,但在VC6.-上可以运行

这是题目:题目描述
给你一个正整数,你能算出它的阶乘是多少吗?

输入描述:
若干行,每行一个整数n(1<=n<=20)。

输出描述:
按顺序输出每个整数的阶乘,一个结果占一行
这是我写的程序:

#include<stdio.h>
int sh(int i)
{
    int j=1,k;
    for(k=i;k>=1;k--)
        j=j*k;
    return j;
}
int main()
{
    int a[100],i=1,b;
    char ch;
    do
    {
        scanf("%d",&a[i++]);
    }while((ch=getchar())!= ' ');
    for(b=1;b<i;b++)
    {
      printf("%d\n",sh(a[b]));
    }
}

运行结果及报错内容

结果正常 但pta显示运行超时

我的解答思路和尝试过的方法


我想要达到的结果
  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-11-23 08:52
    关注

    如果每个数独立进行阶乘超时,那你应该对输入多个数进行从小到大排序,然后定义一个long long 型作为结果,用for循环从1到最大值进行不断相乘,当循环变量等于输入的某个数时,即输出相应的阶乘值。这样可以少乘很多次。

    评论

报告相同问题?

问题事件

  • 创建了问题 11月23日

悬赏问题

  • ¥15 安装python过程失败怎么解决?
  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?