weixin_47608930 2020-05-15 17:46 采纳率: 100%
浏览 120
已采纳

以下是程序的一部分。按照下面的说明完成。

  • 输入整数(n),运用sum函数求从1到n为止除去3的倍数以外数字的和。
  • 图片说明
  • 写回答

5条回答 默认 最新

  • BinaryZs 2020-05-18 10:08
    关注
    //此方法循环次数会比遍历到n的循环次数少2倍;提高效率。
    //当然,此方法并不是最优解,还有更高效的算法。
    //n值比较小的话,看不出太大差别。这里就不列举了。
    int sum(int n)
    {
        // 1. 最好限定用户输入n的最大值,防止result可能溢出。
        // 2. 还要进行n < 1的异常情况判断,这里就不加了。
        // 3. result必定是正整数,建议变量定义和函数返回值使用unsigned int类型
    
        int i, remain, num;
        int result = 3;            //排除1和2,从3开始循环。1+2=3
    
        remain = n%3;              //输入数据是否有余数。0、1、2
        num = n - remain;          //最大可整除的数
    
        if(remain == 1)            //如果余数为1,则n本身不能被整除
            result += n;
        else if(remain == 2)       //余数为2,n本身与n-1 皆不能被整除 
            result += n*2 - 1;
    
        for(i = 3; i != num; i+=3)
            result += i * 2 + 3;    // result = result + (i + 1) + (i + 2);
    
        return result;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!