引用了大佬了,加入了自己的一些改进改进版本
- 自己添加的
//【题目:输入某年某月某日,判断这一天是这一年的第几天】
#include<stdio.h>
int main()
{
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //输入一年中所有月份
int i,y,m,d,s,sh,day=0; //i用来循环计数,y用来判断是否是闰年,闰年二月会多一天
printf("请输入 年 月 日,中间可以用空格隔开:");
scanf("%d %d %d",&y,&m,&d);
if(y%400==0 || (y%100!=0&&y%4==0)) //判断闰年
{
month[2]+=1;
}
for(i=0;i<m;i++)
{
day+=month[i]; //day计算天数,把前面的天数加在一起
}
for(sh=13;m<=sh;sh--)
{
s+=month[sh];
printf("%d",sh);
}
day+=d;
s+=month[m]-d;
printf("今年已经过去了:%d 天\n还剩下:%d 天\n记得珍惜剩下的日子~\n",day,s);
return 0;
}
//2023 10 8 281
//2001 05 16 136
- 方法一for写法
//题目:输入某年某月某日,判断这一天是这一年的第几天?
#include<stdio.h>
int main()
{
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i,y,m,d,day=0;
scanf("%d %d %d",&y,&m,&d);
if(y%400==0 || (y%100!=0&&y%4==0)) //判断闰年
{
month[2]+=1;
}
for(i=0;i<m;i++)
{
day+=month[i];
}
day+=d;
printf("%d",day);
return 0;
}
//2023 10 8 281
//2001 05 16 136
- 方法二 switch写法
#include<stdio.h> int main() { int y,m,d,sum=0,flag=0; scanf("%d %d %d",&y,&m,&d); switch(m) { case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:sum=0;break; } if((y%400==0)||(y%100!=0&&y%4==0)) //判断闰年 flag=1; if(m>2 && flag) { sum+=1; } sum+=d; printf("%d",sum); return 0; } //跟上面一样只是改成了switch写法,可见for循环有多好用
这么看来for循环比switch循环方便了很多啊!