2014-04-18 49 views
0

我有一個C程序,我想輸入一年中的一天,它返回月和月的一天,但當我運行它,它提供了所有的月份前幾個月,我只想輸出一個月。我不知道爲什麼這裏是代碼我有一個C程序,需要一年的一天,但我有麻煩

#include <stdio.h> 

void SplitDate(int dayofyear, int year, int *month, int *day); 

int main() { 
    int month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 
    int year, dayofyear, *day; 

    printf("Enter the day of the year: "); 
    scanf("%d", &dayofyear); 
    printf("Enter the year: "); 
    scanf("%d", &year); 
    printf("Day %d of year %d falls on:\n ",dayofyear, year); 

    SplitDate(dayofyear, year, month, day); 
} 

void SplitDate(int dayofyear, int year, int *month, int *day) 
{ 
    if(dayofyear >=1 || dayofyear <= 31) 
    { 
    printf("month = 1 day = %d\n",dayofyear); 
    } 

    if(dayofyear >=32 || dayofyear <= 60) 
    { 
    printf("month = 2 day = %d\n", dayofyear - 31); 
    } 

    if(dayofyear >=61 || dayofyear <=92) 
    { 
    printf("month = 3 day = %d\n", dayofyear - 59); 
    } 
} 
+3

函數'SplitDate'中的'if'條件應該使用'&&',而不是'||'。 – AntonH

+0

我知道這很簡單,但我認爲我將不得不使用或...謝謝你,@AntonH – user3538507

+0

儘量大聲說出你的條件,我發現它有時有助於在'和'和'或'之間做出選擇更清晰。 – AntonH

回答

0

首先,如前所述,||必須對您想要AND條件,而不是一個或一個改爲&&

之後,您必須在比較後從SplitDate()返回。一種方法是使用return

void SplitDate(int dayofyear, int year, int *month, int *day) 
{ 
    if(dayofyear >=1 && dayofyear <= 31) 
    { 
     printf("month = 1 day = %d\n",dayofyear); 
     return; 
    } 
    if(dayofyear >=32 && dayofyear <= 60) 
    { 
     printf("month = 2 day = %d\n", dayofyear - 31); 
     return; 
    } 
    if(dayofyear >=61 && dayofyear <=92) 
    { 
     printf("month = 3 day = %d\n", dayofyear - 59); 
     return; 
    } 
} 

另一種可能更好的方法是使用if-else結構。

void SplitDate(int dayofyear, int year, int *month, int *day) 
{ 
    if(dayofyear >=1 && dayofyear <= 31) 
    { 
     printf("month = 1 day = %d\n",dayofyear); 
    } 
    else if(dayofyear >=32 && dayofyear <= 60) 
    { 
     printf("month = 2 day = %d\n", dayofyear - 31); 
    } 
    else if(dayofyear >=61 && dayofyear <=92) 
    { 
     printf("month = 3 day = %d\n", dayofyear - 59); 
    } 
} 
+0

謝謝@RobertoReale我真的很感激它 – user3538507

+0

謝謝。如果它是一個有用的答案,你會把它標記爲這樣嗎? :) –

+0

我該怎麼做@RobertoReale? – user3538507

相關問題