我实际上正在尝试解决如何在c编程上正确使用这些公式。这几行是我的代码。
我的程序应该从用户获得一天的输入并给出它的等价物。在几年,几个月,几周和几天。
所以例如我有730天。 如果我要用几个月,几周来转换它... 这将是2年,每月,0,周和0天(不确定这是否正确)。 另一个例子,我有402天,那么它将是1年,1个月,1个星期,0天(我是对的吗?)。
我所拥有的代码"月"以前是 月=(天/ 365)/ 30; 并改为 月=(天%365)/ 30;
上次当我输入一个数字时,答案是正确的,然后当我输入不同的数字时,似乎是错误的。
#include<stdio.h>
#include<conio.h>
void main( )
{
int days ,yr,mn,wk,d;
printf("Enter the no of days");
scanf("%d",&days);
yr = days /365;
mn =(days /365)/30;
printf("Years= %d \t Months= %d \t Weeks =%d \t days = %d",yr,mn,wk,d);
getch();
}
所以我真的很难解决正确的配方问题。我希望我能得到一些帮助,说明没有得到正确输出的公式有什么问题。我必须使用mod。
答案 0 :(得分:1)
关键在于:对于每个连续较小的时间单位,您需要处理已经考虑过的剩余的天数。在50天的例子中,没有年,1个月;一旦你计算了这个月,仍有50-30 = 20天需要考虑。
因此,算法将是:对于每个连续较小的时间单位,计算该单位的数量,并减去其所涵盖的天数(留下剩余的天数)。
答案 1 :(得分:0)
好的,我有一个解决方案:
long yr = days/365;
days -= yr * 365;
long mn = days/30;
days -= mn * 30;
long wk = days/7;
days -= wk * 7;
// days now has remainder of days