C 从1.1.1开始计算天数
因此,我必须编写一个从1.1.1开始计算日期的程序。此外,我必须一直使用公历(即使从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
#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;
}