Yahoo Answers is shutting down on May 4th, 2021 (Eastern Time) and the Yahoo Answers website is now in read-only mode. There will be no changes to other Yahoo properties or services, or your Yahoo account. You can find more information about the Yahoo Answers shutdown and how to download your data on this help page.

c語言的一個]題目~zerojudge上的

Eva的家庭作業裏有很多數列填空練習。填空練習的要求是:已知數列的前四項,填出第五項。因 為已經知道這些數列只可能是等差或等比數列,她決定寫一個程式來完成這些練習。

輸入說明:

第一行是數列的數目t(0 <= t <= 20)。 以下每行均包含四個整數,表示數列的前四項。 約定數列的前五項均為不大於10的五次方的自然數,等比數列的比值也是自然數。

輸出說明:

對輸入的每個數列,輸出它的前五項。

範例輸入:

若題目沒有特別說明,則應該以多測資的方式讀取,若不知如何讀取請參考 a001 的範例程式。2

1 2 3 4

1 2 4 8

範例輸出 :

1 2 3 4 5

1 2 4 8 16

想了很久還是過不了...想請教一下正確的寫法

順便問一下要寫這些題目看什麼書最有幫助阿?

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    #include<stdio.h>

    int main()

    {

    int tmp[4],run,run2;

    while (scanf("%d" ,&run) == 1)

    {

    for (;run>0;--run)

    {

    for (run2 = 0;run2<4;++run2)

    scanf("%d" ,&tmp[run2]);

    if (tmp[3] % tmp[2])

    {

    for (run2 = 0;run2<4;++run2)

    printf("%d " ,tmp[run2]);

    printf("%d\n" ,tmp[3]+(tmp[2]-tmp[1]));

    }

    else

    {

    for (run2 = 0;run2<4;++run2)

    printf("%d " ,tmp[run2]);

    printf("%d\n" ,tmp[3]*(tmp[2]/tmp[1]));

    }

    }

    }

    return (0);

    }

    先讀取數列的數目

    設置迴圈執行的次數

    每次讀取4個數

    判斷最後兩個的數為等差或等比

    再輸出原本的和第五個數

    之所以只要判斷最後兩個數就可判斷

    是因為他限制在自然數下

    且測資只可能是等差或等比

    這證明很簡單

    可以自己證證看

    Source(s): 我自己
  • 1 decade ago

    #include <stdio.h>

    #include <stdlib.h>

    main()

    {

    int x[4],a;

    for(a=0;a<4;a++)

    {

    printf("請輸入第%d項:",a+1);

    scanf("%d",&x[a]);

    }

    if(x[0]-x[1]==x[1]-x[2] && x[1]-x[2]==x[2]-x[3])/*等差數列*/

    {

    printf("第5項為:%d\n",2*x[3]-x[2]);

    }

    else if(x[2]==0 && x[1]==0 && x[0]==0)/*公比為0 首項不為0的數列*/

    {

    printf("第5項為:0\n");

    }

    else if(x[2]==0 || x[1]==0 || x[0]==0)/*非首項為0 之後又出現非0項 簡單講 ex.1050*/

    {

    printf("此數列並不為等差/等比級數\n");

    }

    else if((double)x[1]/x[0]==(double)x[2]/x[1] && (double)x[2]/x[1]==(double)x[3]/x[2])/*等比數列*/

    {

    printf("第5項為:%.3f\n",(double)x[3]*x[3]/x[2]);

    }

    else/*其他*/

    {

    printf("此數列並不為等差/等比級數\n");

    }

    system("pause");

    return 0;

    }

    希望有幫到你

    2009-05-03 15:12:03 補充:

    差點忘了

    若4項都是0

    那......

    我也不知算等差或等比

    就....列入等差吧

    比較方便XD

    Source(s): 自己打
Still have questions? Get your answers by asking now.