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

  • 输入整数(n),运用sum函数求从1到n为止除去3的倍数以外数字的和。
  • 图片说明
//此方法循环次数会比遍历到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;
}

sum(int n,int result) int sum (int n) {for(int i;i<n:i++){if(n%3==0) result+=i;} return result } 可以传个参数一个循环数量一个,结果,然后返回结果,或者定义在sum里面返回也行

int sum = 0;
for(int i=1;i<=n++){
    if(i%3==0){
        continue;
    }
    sum+=i;
}
    return sum;


int sum(int n) {
int i,s=0;
for (i=1;i<=n;i++) {
if (i%3 != 0) s+=i;
}
return s;
}

循环:

int sum(int n) {
    int ans=0;
    for(int i=1;i<=n;i++)
        if(i%3==0)
            ans+=1;
    return ans;
}

递推:

int sum(int n) {
    if(n==1)  return 1;
    if(n%3==0)  return sum(n-1);
    else return sum(n-1)+n;
}