2014-04-18 28 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

相关问题