本文共 3722 字,大约阅读时间需要 12 分钟。
返回:
(1)定义一个结构体变量(包括年、月、日),要求输入年、月、日,计算输出该日是该年的第几天。
#includestruct Date{ int year; int month; int day;};int main(){ struct Date date; printf("input year,month,day:"); scanf("%d %d %d", &date.year, &date.month, &date.day); int days; //计算days printf("%d月%d日是%d年的第%d天.\n", date.month, date.day, date.year, days); return 0;}
[参考解答]
参考解答1:#includestruct Date{ int year; int month; int day;};int main(){ struct Date date; printf("input year,month,day:"); scanf("%d %d %d", &date.year, &date.month, &date.day); int days; //计算daysswitch(date.month) { case 1: days=date.day; break; case 2: days=date.day+31; break; case 3: days=date.day+59; break; case 4: days=date.day+90; break; case 5: days=date.day+120; break; case 6: days=date.day+151; break; case 7: days=date.day+181; break; case 8: days=date.day+212; break; case 9: days=date.day+243; break; case 10: days=date.day+273; break; case 11: days=date.day+304; break; case 12: days=date.day+334; break; } if ((date.year %4== 0 && date.year % 100 != 0 ||date.year % 400 == 0) && date.month >=3) days+=1; printf("%d月%d日是%d年的第%d天.\n", date.month, date.day, date.year, days); return 0;}
参考解答2:
#includestruct Date{ int year; int month; int day;};int d[13]= { 0,31,28,31,30,31,30,31,31,30,31,30,31};int main(){ struct Date date; printf("input year,month,day:"); scanf("%d %d %d", &date.year, &date.month, &date.day); //计算days int days=0,i; for(i=1; i =3) days+=1; //闰年的2月要加1天 printf("%d月%d日是%d年的第%d天.\n", date.month, date.day, date.year, days); return 0;}
参考解答3: 函数版1——用结构体的分量当形参
#includestruct Date{ int year; int month; int day;};int d[13]= { 0,31,28,31,30,31,30,31,31,30,31,30,31};int days(int,int,int);int main(){ struct Date date; printf("input year,month,day:"); scanf("%d %d %d", &date.year, &date.month, &date.day); //计算days int d=days(date.year,date.month,date.day); printf("%d月%d日是%d年的第%d天.\n", date.month, date.day, date.year, d); return 0;}int days(int yy,int mm,int dd){ int n=0,i; for(i=1; i =3) n+=1; //闰年的2月要加1天 return n;}
参考解答4:函数版2——用结构体整体作为参数
#includestruct Date{ int year; int month; int day;};int d[13]= { 0,31,28,31,30,31,30,31,31,30,31,30,31};int days(struct Date);int main(){ struct Date date; printf("input year,month,day:"); scanf("%d %d %d", &date.year, &date.month, &date.day); printf("%d月%d日是%d年的第%d天.\n", date.month, date.day, date.year, days(date)); return 0;}int days(struct Date ymd){ int n=0,i; for(i=1; i =3) n+=1; //闰年的2月要加1天 return n;}
(2)输入两个人的生日,求出他们相差多少天。
[参考解答]#includestruct Date{ int year; int month; int day;} ;int daysOfMonth[13]= { 0,31,28,31,30,31,30,31,31,30,31,30,31};int day(struct Date); //计算出日期d和1900年1月1日差多少天int main(){ struct Date date; int d1=0,d2=0,t;//d1和d2分别代表两个人的生日和1900年1月1日相差多少天 printf("第一个人的出生日期:"); scanf("%d %d %d", &date.year, &date.month, &date.day); d1=day(date); printf("第二个人的出生日期:"); scanf("%d %d %d", &date.year, &date.month, &date.day); d2=day(date); //对两个人的生日,求出了和1900年1月1日相差多少天(d1和d2),下面相减 t=d2-d1; if(t<0) { t=-t;//若出现负数,则将其化为正数 } printf("两人生日相差%d天.\n", t); return 0;}int day(struct Date d){ int days=0,i; for(i=1900; i =3 && ((d.year %4== 0 && d.year % 100 != 0) ||d.year % 400 == 0)) days+=1; //当年为闰年且进入了3月,还要加1天 return days; //生日到1900年1月1日共多少天}
转载地址:http://lvmfm.baihongyu.com/