Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 从1.1.1开始计算天数_C_Ansi_Counting_Days - Fatal编程技术网

C 从1.1.1开始计算天数

C 从1.1.1开始计算天数,c,ansi,counting,days,C,Ansi,Counting,Days,因此,我必须编写一个从1.1.1开始计算日期的程序。此外,我必须一直使用公历(即使从1.1.1开始就没有使用公历) 不管怎么说,这是我写的,但我肯定它有一些错误: #include <stdio.h> int main() { int d, m, r; printf("Podaj dzien, miesiac i rok\n"); scanf("%d %d %d", &d, &m, &r); printf("%d", iled

因此,我必须编写一个从1.1.1开始计算日期的程序。此外,我必须一直使用公历(即使从1.1.1开始就没有使用公历) 不管怎么说,这是我写的,但我肯定它有一些错误:

#include <stdio.h>
int main()

{
    int d, m, r;
    printf("Podaj dzien, miesiac i rok\n");
    scanf("%d %d %d", &d, &m, &r);
    printf("%d", iledni(d, m, r));
    return 0;
}

int iledni(int d, int m, int r)
{
    int dni,x;
    int msc[12]={0,31,59,90,120,151,181,212,243,273,304,334};
    dni=r*365+msc[m-1]+d-1;
    dni=dni+(int)((r-1)/4)-(int)((r-1)/100)+(int)((r-1)/400);
    if (m>2 && r%4 == 0 && r%100 != 0 || r%400 == 0)
        dni=dni+1;
    return dni;
}
#包括
int main()
{
int d,m,r;
printf(“Podaj dzien,miesiac i rok\n”);
scanf(“%d%d%d”、&d、&m和&r);
printf(“%d”,iledni(d,m,r));
返回0;
}
内部iledni(内部d、内部m、内部r)
{
int dni,x;
int msc[12]={0,31,59,90120151181212243273304334};
dni=r*365+msc[m-1]+d-1;
dni=dni+(int)((r-1)/4)-(int)((r-1)/100)+(int)((r-1)/400);
如果(m>2&&r%4==0&&r%100!=0 | | r%400==0)
dni=dni+1;
返回dni;
}

我的下一个任务是编写一个计算从我出生到当前日期的天数的函数,我不确定该如何输入数据,所以现在我假设它是用int main()编写的,所以我必须只更改iledni函数,但我有一些问题,确切地说,结果是错误的,而且不知道如何修复它>不知道以下内容是否有帮助,至少对于您需求的第二部分(获取从您的生日到当前日期的天数):

此函数将返回从1900-1-1开始的天数:

1900年以后的整数天(整数y、整数m、整数d){
//天数之和,相当于您的msc阵列
整数天[]={0,31,天[1]+28,天[2]+31,天[3]+30,天[4]+31,天[5]+30,天[6]+31,天[7]+31,天[8]+30,天[9]+31,天[10]+30,天[11]+31};
//如果年份是闰年,则抵消日值
//“(!(y%400)|((y%100)&&&!(y%4))”是检查闰年
int offset=m>2&(!(y%400)|(y%100)&&(!(y%4))?1:0;
//计算转换的天数
返回y-=1901,(y+1)*365+(y/4)-(y/100)+(y+1900)/400)-4天以上[m-1]+偏移量+d-1);
}
下面是一个使用示例:

int main(){

std::cout技术术语是“公历的开始”。你看。谢谢,我不知道。谢谢,在你的代码中有很多我不理解的东西(这是我编程的第二天),但我还有几天的时间才能准备好程序,所以我会弄清楚的。
#include <stdio.h>
int main()
{
    int d=17, m=8, r=2013;
    int du=25, mu=11, ru=1994;
    printf("%d", iledni(d, m, r, du, mu, ru));
    return 0;
}

int iledni(int d, int m, int r, int du, int mu, int ru)
{
    int dni,x;
    int msc[12]={0,31,59,90,120,151,181,212,243,273,304,334};
    int mscdodni[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    dni=(r-ru)*365+msc[m-1]-msc[mu]+d-1+(mscdodni[mu-1]-du);
    for (ru=1994; ru<=r; ru++)
        {
        if (ru%4 == 0 && ru%100 != 0 || ru%400 == 0)
            dni=dni+1;
        }
return dni;
}