【发布时间】:2015-01-13 03:35:28
【问题描述】:
我的问题是: 编写一个名为 days() 的 C 函数,该函数确定从 1/1/1900 日期算起作为结构传递的任何日期的天数。将 Date 结构变量的地址传递给 days() 函数。在 main() 中编写一个程序,输入用户的月、日和年,将输入写入 Date 结构变量,调用 days() 函数并显示结果。使用以下日期结构:
struct date
{
int month;
int day;
int year;
};
在编写此函数时,请使用所有年份为 360 天且每个月包含 30 天的约定。该函数应返回传递给它的任何日期结构的天数。
这是我目前所拥有的,每次都计算为 0:
struct date
{
int month;
int day;
int year;
};
int main()
{
int monthMain, dayMain, yearMain; //declaring the int variables
int totalDays;
printf("Enter a Month: "); //requesting user to input the month
scanf("%d", &monthMain); //accepting the user input for month
printf("Enter a Day: "); //requesting user to input the day
scanf("%d", &dayMain); //accepting the user input for day
printf("Enter a Year: "); //requesting user to input the year
scanf("%d", &yearMain); //accepting the user input for year
totalDays = days();
printf("the date you entered = %d days", totalDays);
return 0;
}
int days(struct date *d)
{
int yearCalc, daysAmount;
int monthMain, dayMain, yearMain; //declaring the int variables
yearCalc = 1900 * 360;
yearMain = (yearMain * 360) - yearCalc;
if(monthMain == 1)
{
monthMain = 0;
daysAmount = monthMain + dayMain + yearMain;
}
if(monthMain == 2)
{
monthMain = 30;
daysAmount = monthMain + dayMain + yearMain;
}
if(monthMain == 3)
{
monthMain = 60;
daysAmount = monthMain + dayMain + yearMain;
}
if(monthMain == 4)
{
monthMain = 90;
daysAmount = monthMain + dayMain + yearMain;
}
if(monthMain == 5)
{
monthMain = 120;
daysAmount = monthMain + dayMain + yearMain;
}
if(monthMain == 6)
{
monthMain = 150;
daysAmount = monthMain + dayMain + yearMain;
}
if(monthMain == 7)
{
monthMain = 180;
daysAmount = monthMain + dayMain + yearMain;
}
if(monthMain == 8)
{
monthMain = 210;
daysAmount = monthMain + dayMain + yearMain;
}
if(monthMain == 9)
{
monthMain = 240;
daysAmount = monthMain + dayMain + yearMain;
}
if(monthMain == 10)
{
monthMain = 270;
daysAmount = monthMain + dayMain + yearMain;
}
if(monthMain == 11)
{
monthMain = 300;
daysAmount = monthMain + dayMain + yearMain;
}
if(monthMain == 12)
{
monthMain = 360;
daysAmount = monthMain + dayMain + yearMain;
}
return daysAmount;
}
任何帮助都会很棒:)
【问题讨论】:
-
由于
daysAmount = monthMain + dayMain + yearMain;的计算每次都相同,您可以将其移到if语句集之后。在第 11 个月和第 12 个月之间从 300 跳到 360 是错误的。有一个简单的算法给出了一个有效的月份数,用于推断之前一年中的天数(对于这些漂亮的简单统一大小的月份):(month_number - 1) * 30给出了你想要的答案。您是否添加了任何打印语句来查看为什么会得到 0?
标签: c