Yahoo奇摩知識+ 將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+ 網站將會轉為唯讀模式。其他 Yahoo奇摩產品與服務或您的 Yahoo奇摩帳號都不會受影響。如需關於 Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

請問一下~~~~!

題目:從1+2+3+...一直加到哪個數的結果最接近1000~?

{各位大大幫個忙一下,我已經想破頭啦~!}

我已經把流程圖畫完了,卻不知從何下手~!

3 個解答

評分
  • 2 0 年前
    最佳解答

    the answer from 小四 can only apply to 1000 only. the following program can apply to any number as long as you properly define "limit".

    #include <stdlib.h>

    #include <stdio.h>

    #include <string.h>

    #define limit 1000

    int main(int argc, char *argv[])

    {

    int i, j, answer;

    for (i=0; i<limit; i++)

    {

    j=(i*i+i)/2;

    if (j<=limit) answer=i;

    else break;

    }

    i--;

    j=(i*i+i)/2;

    printf("1+2+3+...+%d is %d, which is the closest to %d\n", answer, j, limit);

    return 0;

    }

  • ?
    Lv 4
    2 0 年前

    int main(int argc, char* argv[])

    {

    int i = 0;

    int oldDif;

    int newDif = 1000;

    int a = 0;

    do

    {

    i++;

    oldDif = newDif;

    a = a + i;

    newDif = abs(1000 - a);

    }while(oldDif >= newDif);

    printf("1+2+...+%d = %d 最接近 1000", i-1, a-i);

    return 0;

    }

    2005-10-20 12:35:20 補充:

    By using a single accumulate plus, you can find the sum of number. Davi uses a *,+ and / to calculate the sum each time in the loop, which is wasting CPU power and unintellegible.

    2005-10-20 12:39:42 補充:

    您所選的是一個錯誤答案

    if (j<=limit) answer=i;

    注意題目是最接近1000不是小於1000

    有可能 大於limit 但最接近哦

  • 2 0 年前

    1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44=990

    快的方法(1+44)*22=990

    (第一數+最後一數)*共幾組 =答案

    參考資料: 之前學的
還有問題?馬上發問,尋求解答。