求解!!!!
这题如果只用if语句怎么做,计算某日是该年的第几年
这题如果只用if语句怎么做,计算某日是该年的第几年
2017-04-06
#include<stdio.h>
#include<windows.h>
int main()
{
int year,month,day;
int m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12;
m1=31;
m2=28+m1;
m3=31+m2;
m4=30+m3;
m5=31+m4;
m6=30+m5;
m7=31+m6;
m8=31+m7;
m9=30+m8;
m10=31+m9;
m11=30+m10;
printf("请输入年月日(年月日之间用空间隔):\n");
scanf("%d%d%d",&year,&month,&day);
if(year%4==0)
{
if(month==1)
printf("是该年的第%d天\n",day);
else if(month==2)
printf("是该年的第%d天\n",day+m1);
else if(month==3)
printf("是该年的第%d天\n",day+m2+1);
else if(month==4)
printf("是该年的第%d天\n",day+m3+1);
else if(month==5)
printf("是该年的第%d天\n",day+m4+1);
else if(month==6)
printf("是该年的第%d天\n",day+m5+1);
else if(month==7)
printf("是该年的第%d天\n",day+m6+1);
else if(month==8)
printf("是该年的第%d天\n",day+m7+1);
else if(month==9)
printf("是该年的第%d天\n",day+m8+1);
else if(month==10)
printf("是该年的第%d天\n",day+m9+1);
else if(month==11)
printf("是该年的第%d天\n",day+m10+1);
else if(month==12)
printf("是该年的第%d天\n",day+m11+1);
else
printf("请输入正确月份");
}
else
{
if(month==1)
printf("是该年的第%d天\n",day);
else if(month==2)
printf("是该年的第%d天\n",day+m1);
else if(month==3)
printf("是该年的第%d天\n",day+m2);
else if(month==4)
printf("是该年的第%d天\n",day+m3);
else if(month==5)
printf("是该年的第%d天\n",day+m4);
else if(month==6)
printf("是该年的第%d天\n",day+m5);
else if(month==7)
printf("是该年的第%d天\n",day+m6);
else if(month==8)
printf("是该年的第%d天\n",day+m7);
else if(month==9)
printf("是该年的第%d天\n",day+m8);
else if(month==10)
printf("是该年的第%d天\n",day+m9);
else if(month==11)
printf("是该年的第%d天\n",day+m10);
else if(month==12)
printf("是该年的第%d天\n",day+m11);
else
printf("请输入正确月份");
}
system("pause");
return 0;
}
/*不才,因为我也是新手,所以过程略显麻烦,请见谅!*/
//我把算法优化了很多,还加了一些判定语句,这下就不会错了
#include <stdio.h>
#include<windows.h>
int ayear(int year)
{
int y;
if(year%100==0)
{
if(year%400==0)
y=1;
else
y=0;
}
else
{
if(year%4==0)
y=1;
else
y=0;
}
return y;
}
int amonth(int month)
{
int m=0,n=0;
char a[12]={0,31,28,31,30,31,30,31,31,30,31,30};
for(n;n<month;n++)
{
m+=a[n];
}
return m;
}
int judgment(int year,int month,int day)
{
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
if(day<1||day>31)
{
printf("%d月没有%d号\n",month,day);
return 0;
}
else
return 1;
}
else if(month==4||month==6||month==9||month==11)
{
if(day<1||day>30)
{
printf("%d月没有%d号\n",month,day);
return 0;
}
else
return 1;
}
else if(month==2)
{
if(year==1)
{
if(day<1||day>29)
{
printf("%d月没有%d号\n",month,day);
return 0;
}
else
return 1;
}
if(year==0)
{
if(day<1||day>28)
{
printf("%d月没有%d号\n",month,day);
return 0;
}
else
return 1;
}
}
else
{
printf("请输入正确月份\n");
return 0;
}
}
int main()
{
int year,month,day;
printf("请输入 年 月 日:\n");
scanf("%d%d%d",&year,&month,&day);
if(judgment(ayear(year),month,day)==0);
else
{
if(month>2)
printf("是该年的第%d天\n",day+amonth(month)+ayear(year));
else
printf("是该年的第%d天\n",day+amonth(month));
}
system("pause");
return 0;
}
#include<stdio.h>
int main()
{
int year=2018,month=8,day=8,sum,flag;
if(month==1)
sum=0;
else
if(month==2)
sum=31;
else
if(month==3)
sum=59;
else
if(month==4)
sum=98;
else
if(month==5)
sum=120;
else
if(month==6)
sum=151;
else
if(month==7)
sum=181;
else
if(month==8)
sum=212;
else
if(month==9)
sum=243;
else
if(month==10)
sum=273;
else
if(month==11)
sum=304;
else
if(month==12)
sum=334;
else
printf("一年之中只有12个月哦!");
sum=sum+day;
if(year%400==0||(year%4==0 && year%100!=0))
flag=1;
else
flag=0;
if(flag=1 && month>2)
sum++;
printf("%d年%d月%d日是该年的第%d天。\n",year,month,day,sum);
return 0;
}
举报