c语言知道一年有365天求年月日

c语言知道一年有365天求年月日,第1张

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 一年12个月。

[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] 每个月对应的天数。

[31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365] 前N个月的累计天数 设此数组为D。

假如你想判断第n天是几月几日:

n-D1<=0: 一月;

否则,n-D2<=0: 二月;

否则,n-D3<=0: 三月;

否则,n-D11<=0; 11月;

否则,12月。

就是这个思路,判断年份也可以这样,但是最后的日,就不必了吧。

题主还可以发挥自己的想象力,找其他的办法。程序员就是要脑筋灵活,遇到问题积极主动的多思考。

最后,好心提醒题主,程序员慎入啊!

以上。

#include <stdioh>

#define YEAR 365

int leap(int year)

{

int n;

n=(year%4==0&&year%4!=0||year%400==0);

return(n);

}

void count(int year, int month) /基:2000年1月/

{

int i,day,first_day,flag,year1,year2,temp=6;

flag=leap(year);

year1=year/100; /相差几百年/

year2=year%100; /中间几十年/

if(year>=2000) /大于2000年/

{

year1-=20;

day=year1/4; /百闰年数/

day+=(YEAR+24)year1+YEARyear2+(year2-1)/4; /2000年至现年总天数/

if(year>2000)day++; /加上2000年闰年2月的29天/

switch(month)

{

case 1:day+=0;break;

case 2:day+=31;break; /加上月份天数/

case 3:day+=59+flag;break;

case 4:day+=90+flag;break;

case 5:day+=120+flag;break;

case 6:day+=151+flag;break;

case 7:day+=181+flag;break;

case 8:day+=212+flag;break;

case 9:day+=243+flag;break;

case 10:day+=273+flag;break;

case 11:day+=304+flag;break;

case 12:day+=334+flag;break;

}

day+=temp; /加上2000年1月1号是星期六/

first_day=day%7; /对7取余,为1号星期/

}

else /以下25行,计算<2000年,算法同上/

{

year1=20-1-year1;

year2=100-year2-1; /倒减,应多减1/

day=year1/4;

day+=36524year1+365year2+year2/4;

switch(month)

{

case 12:day+=31;break;

case 11:day+=61;break;

case 10:day+=92;break;

case 9:day+=122;break;

case 8:day+=153;break;

case 7:day+=184;break;

case 6:day+=214;break;

case 5:day+=245;break;

case 4:day+=275;break;

case 3:day+=306;break;

case 2:day+=334+flag;break;

case 1:day+=365+flag;break;

}

day-=temp; /减去1号的6天/

day=day%7;

first_day=(7-day)%7; /反对称/

}

switch(month)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:month=31;break;

case 4:

case 6:

case 9:

case 11:month=30;break;

case 2:month=28+flag;

}

printf(" SUN MON TUE WED THU FRI SAT\n");

for(i=1;i<=4first_day;i++) /输出空格/

printf(" ");

for(i=0;i<month;i++)

{

printf("%4d",i+1); /输出日历/

if((first_day+i)%7==6)printf("\n");

}

printf("\n");

}

void main()

{

int year,i;

printf("please input year :\n");

while(scanf("%d",&year)!=1)

{

printf("输入错误,请重新输入");

fflush(stdin);

}

for(i=1;i<13;i++)

{

printf("month:%d\n",i);

count(year,i);

}

}

提起输入年份输出属相c语言,大家都知道,有人问关于c语言 已知1972年属鼠,输入一个四位的整数(1000-2999之间)代表年份,显示这一年属相是什么?另外,还有人想问C语言编程: 已知2015年是羊年,编程实现,输入任意年份,输出该年属相。(使用switch,你知道这是怎么回事?其实输入年份输出属相用c语言while语句,下面就一起来看看编写程序,输入一个年份,判断该年属相(提示switch-case),希望能够帮助到大家!

输入年份输出属相c语言

int main(){

char p[12][4]={“鼠”,”牛”,”虎”,”兔”,”龙”,”蛇”,”马”,”羊”,”鸡”,”猴”,”狗”,”猪”};

int year0=;   //年是鼠年,作为基准

int year,n;

printf(“请输入一个年份n”);

scanf(“%d”,&year); 

n=year-year0;

n=n%12;

if (n<0) n+=12;   //求余时,n可能是负数,如果是负数则加12 

printf(“%d年属%sn”,year,p[n]);

关于c语言 已知年属鼠,输入一个四位的整数(-之间)代表年份,显示这一年属相是什么?

//c++的

#include

#include

usingnamespacestd;

intmain()//year用来记录输入的年份

intyear;

cin>>year;

//生肖相同的年份对于模12同余

//所以建立一个生肖数组

stringZodiacSigns[12]={“Rat”,”Ox”,”Tiger”,”Hare”,”Dragon”,”Snake”,”Horse”,”Sheep”,”Monkey”,”Cock”,”Dog”,”Boar”};

//(year-)对模12取余,即对应于数组中相应的生肖

//此处为防止(year-)为负数,给year加了

//其实加、等也都是可以的,只要是不小于的12的倍数即可

cout<<ZodiacSigns[((year+-)%12)];

return0;

C语言编程: 已知年是羊年,编程实现,输入任意年份,输出该年属相。(使用switch

int main()    int year;

    printf(“请输入年份:”);

    scanf(“%d”,&year);

输入年份输出属相用c语言while语句

    year=(year-)%12;

    if(year<0) year+=12;

    switch(year)

    {

        case 0:printf(“今年是羊年!n”);break;

        case 1:printf(“今年是猴年!n”);break;

        case 2:printf(“今年年!n”);break;

        case 3:printf(“今年是狗年!n”);break;

        case 4:printf(“今年是猪年!n”);break;

        case 5:printf(“今年是鼠年!n”);break;

        case 6:printf(“今年是牛年!n”);break;

        case 7:printf(“今年是虎年!n”);break;

        case 8:printf(“今年是兔年!n”);break;

        case 9:printf(“今年是龙年!n”);break;

        case 10:printf(“今年是蛇年!n”);break;

        case 11:printf(“今年是马年!n”);break;

    }

    return 0;

以上就是与编写程序,输入一个年份,判断该年属相(提示switch-case)相关内容,是关于关于c语言 已知1972年属鼠,输入一个四位的整数(1000-2999之间)代表年份,显示这一年属相是什么?的分享。看完输入年份输出属相c语言后,希望这对大家有所帮助!

#include<stadioh>

main()

{ int year,year1,month,month1,day,day1,age;

printf("请输入您的生日:");

scanf("%d %d %d",&year,&month,&day);

printf("请输入当前日期:");

scanf("%d %d %d",&year1,&month1,&day1);

if(year1==year)

age=0;

else

{age=year1-year;

if(month1<month||(month1==month&&day1<day))

age=age-1;

}

printf("您的年龄是:%d",age);

}

intjudgeyear(int year)

{

 if(0==year%400||(0==year%4&&year%100!=0)return 1; //不太记得C里面取余是%、\还是/

 return 0;

}

void main()

{

 int year=0,month=0,day=0,i=0,date=0;

 printf("请输入年:\n");

 scanf("%d",&year);

 printf("请输入月:\n");

 scanf("%d",&month);

 printf("请输入日:\n");

 scanf("%d",&day);

 for(i=1;i<month;i++)

 {

switch(i)

{

 case 1:

 case 3:

 case 5:

 case 7:

 case 8:

 case 10:

 case 12:date+=31;break;

 case 4:

 case 6:

 case 9:

 case 11:date+=30;break;

 case 2:

1==judgeyear(year)

 date+=29:

 date+=28;

break;

}

 }

 printf("指定的日期是当年的第%d天。",date);

 return;

}

#include<stdioh>

#include<windowsh>

int menu()

{

char ch;

int x;

system("cls");

printf("请选择相应的菜单:\n");

printf("\n");

printf("查询某年某月某日是星期几,输入1回车:\n");

printf("查询某年是否是闰年,输入2回车:\n");

printf("打印某年的全年日历,输入3回车:\n");

printf("退出,输入0回车:\n");

printf("\n");

scanf("%d",&x);

if(x==0)

{

printf("确认退出 Y/N ");

ch=getchar();

scanf("%c",&ch);

if(ch=='Y')

exit(0);

else

main();

}

return x;

}

int judge_week(year,mon,day)

{

int sum,i,flag=0;

if(year%400==0)

flag=1;

else if(year%4==0 && year%100!=0)

flag=1;

sum=30(mon-1)+day;

for(i=1;i<=mon-1;i++)

{

if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10 || i==12)

sum+=1;

if(i==2)

{

if(flag==1)

sum-=1;

if(flag==0)

sum-=2;

}

}

return sum;

}

look_week()

{

int year,mon,day,C,S,k;

char ch,week[7][3]={"日","一","二","三","四","五","六"};

system("cls");

printf("请输入要查询的年月日\nyear month day\n");

scanf("%d %d %d",&year,&mon,&day);

if(year<0 || mon<0 || mon>12 || day<0 || day>31)

{

system("cls");

printf("输入的年月日不正确,请重新输入!");

Sleep(3000);

look_week();

}

C=judge_week(year,mon,day);

S=year-1+(year-1)/4+(year-1)/100+(year-1)/400+C+2;

if(year<=2000 && year>=1901)

S=S+2;

else if(year<=1900)

S+=4;

k=S%7;

system("cls");

printf("\n%d年%d月%d日是星期%s\n\n",year,mon,day,week[k]);

printf("是否要继续查询 Y/N ");

getchar();

ch=getchar();

if(ch=='Y')

look_week();

else

main();

}

look_runnian()

{

int flag=0,year;

char ch;

system("cls");

printf("请输入要查询的年份: ");

scanf("%d",&year);

if(year%400==0)

flag=1;

else if(year%4==0 && year%100!=0)

flag=1;

system("cls");

if(flag==1)

printf("%d是润年\n",year);

else

printf("%d不是润年\n",year);

printf("是否要继续查询 Y/N ");

getchar();

ch=getchar();

if(ch=='Y')

look_runnian();

else

main();

}

print_calendar()

{

int i,j=0,k,C,S,flag=0,m,year,mon,d[31];

char ch,week[7][3]={"日","一","二","三","四","五","六"};

system("cls");

printf("请输入要打印日历的年、月:\nyear month\n");

scanf("%d %d",&year,&mon);

C=judge_week(year,mon,1);

S=year-1+(year-1)/4+(year-1)/100+(year-1)/400+C+2;

if(year<=2000 && year>=1901)

S=S+2;

else if(year<=1900)

S+=4;

k=S%7;

if(year%400==0)

flag=1;

else if(year%4==0 && year%100!=0)

flag=1;

if(mon==1 || mon==3 || mon==5 || mon==7 || mon==8 || mon==10 || mon==12)

m=31;

else if(mon==2)

{

if(flag==1)

m=29;

if(flag==0)

m=28;

}

else

m=30;

for(i=1;i<=m;i++)

d[j++]=i;

system("cls");

printf("%d年%d月的日历如下:\n\n",year,mon);

for(i=0;i<7;i++)

printf("%s\t",week[i]);

putchar(10);

for(i=0;i<k;i++)

printf("\t");

j=k;

for(i=0;i<m;i++)

{

printf("%d\t",d[i]);

j++;

if(j%7==0)

putchar(10);

}

printf("\n\n是否要继续查询 Y/N ");

getchar();

ch=getchar();

if(ch=='Y')

print_calendar();

else

main();

}

main()

{

int a;

a=menu();

switch(a)

{

case 1:look_week();break;

case 2:look_runnian();break;

case 3:print_calendar();break;

default:

{

printf("输入有误,请重新选择相应的菜单:\n");

Sleep(3000);

main();

}

}

}

以上就是关于c语言知道一年有365天求年月日全部的内容,包括:c语言知道一年有365天求年月日、c语言万年历代码输入年份输出整年日历,输出年份和月份输出某年某月的日历、输入年份输出属相c语言,编写程序,输入一个年份,判断该年属相.(提示s等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9547128.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存