接受日子和时间把它转换成等价的没有。年,月,周和剩余的日子

时间:2014-06-24 01:37:32

标签: c converter formula modulo

我实际上正在尝试解决如何在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。

2 个答案:

答案 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