百度之星編程題一 —

來源:互聯網
上載者:User

題目描述:一個正整數有可能可以被表示為n(n>=2)個連續正整數之和,如: 

15=1+2+3+4+5 

15=4+5+6 

15=7+8

請編寫程式,根據輸入的任何一個正整數,找出符合這種要求的所有連續正整數序列。 

輸入資料:一個正整數,以命令列參數的形式提供給程式。 

輸出資料:在標準輸出上列印出符合題目描述的全部正整數序列,每行一個序列,每個序列都從該序列的最小正整數開始、以從小到大的順序列印。如果
結 果有多個序列,按各序列的最小正整數的大小從小到大列印各序列。此外,序列不允許重複,序列內的整數用一個空格分隔。如果沒有符合要求的序列,輸
出 “NONE”。  

 

本人只搜到第一題可做,其餘幾題需要下載一些檔案,我沒下載到,有興趣的朋友可以給我下,在此先謝謝了。此題所寫程式如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void help();

int main(int argc, char* argv[])
{
    int sum = 0, x, flag, num;
    if(argc == 1 || (strcmp(argv[1], "/?") == 0) || (strcmp(argv[1], "help") == 0))
    {
        help();
        return 0;
    }
    for(int y = 1; y < argc; y++)
    {
        flag = 0;
        num = atoi(argv[y]);
       
        for(int i = 1; i <= num/2; i++)
        {
            for(x = i; x <= num/2 + 1; x++)
            {
                sum += x;                  //逐漸把連續的數字相加起來
                if(sum > num)             //如果最終比所給數字大,則跳出重新從下一個起點數字開始計算
                {
                    sum = 0;
                    break;
                }
                else if(sum == num)            //如果相等,則說明了存在連續的數字,輸出來
                {
                    flag = 1;
                    printf("/t%d = ", num);
                    for(int j = i; j <= x; j++)
                        printf("%d ", j);
                    sum = 0;
                    printf("/n");
                    break;
                }
            }
        }
        if(0 == flag)
            printf("/t%d NONE/n", num);
        printf("/n");
    }
    return 0;
}
void help()
{
    printf("/ticf 的協助文檔/n");
    printf("/t/ticf [num] [num].../n");
    printf("/t/ticf icf 15 13 10 .../n");
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.