返回:贺老师课程教学链接
(1)定义一个结构体变量(包括年、月、日),要求输入年、月、日,计算输出该日是该年的第几天。
#include <stdio.h> struct 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:
#include <stdio.h> struct 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 switch(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:
#include <stdio.h> struct 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<date.month; ++i) days+=d[i]; //当月之前的天数 days+=date.day; //加上本月天数 if (((date.year %4== 0 && date.year % 100 != 0) ||date.year % 400 == 0) && date.month >=3) days+=1; //闰年的2月要加1天 printf("%d月%d日是%d年的第%d天.\n", date.month, date.day, date.year, days); return 0; }参考解答3: 函数版1——用结构体的分量当形参
#include <stdio.h> struct 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<mm; ++i) n+=d[i]; //当月之前的天数 n+=dd; //加上本月天数 if (((yy %4== 0 && yy % 100 != 0) ||yy % 400 == 0) && mm >=3) n+=1; //闰年的2月要加1天 return n; }参考解答4:函数版2——用结构体整体作为参数
#include <stdio.h> struct 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<ymd.month; ++i) n+=d[i]; //当月之前的天数 n+=ymd.day; //加上本月天数 if (((ymd.year %4== 0 && ymd.year % 100 != 0 ) ||ymd.year % 400 == 0) && ymd.month >=3) n+=1; //闰年的2月要加1天 return n; }(2)输入两个人的生日,求出他们相差多少天。 [参考解答]
#include <stdio.h> struct 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<d.year; i++)//算出这年1月1日到1900年1月1日共多少天 { days+=365; if(i@0==0||(i%4==0&&i!=0)) { days++; } } for(i=1; i<d.month; ++i) days+=daysOfMonth[i]; //加上当年当月之前的天数 days+=d.day; //再加上本月天数 if (d.month >=3 && ((d.year %4== 0 && d.year % 100 != 0) ||d.year % 400 == 0)) days+=1; //当年为闰年且进入了3月,还要加1天 return days; //生日到1900年1月1日共多少天 } 相关资源:python入门教程(PDF版)