博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《C语言及程序设计》实践参考——日期结构体
阅读量:7234 次
发布时间:2019-06-29

本文共 3722 字,大约阅读时间需要 12 分钟。

返回:

【项目6-日期结构体】

(1)定义一个结构体变量(包括年、月、日),要求输入年、月、日,计算输出该日是该年的第几天。

#include 
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 
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; //计算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:

#include 
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
=3) days+=1; //闰年的2月要加1天 printf("%d月%d日是%d年的第%d天.\n", date.month, date.day, date.year, days); return 0;}

参考解答3: 函数版1——用结构体的分量当形参

#include 
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
=3) n+=1; //闰年的2月要加1天 return n;}

参考解答4:函数版2——用结构体整体作为参数

#include 
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
=3) n+=1; //闰年的2月要加1天 return n;}

(2)输入两个人的生日,求出他们相差多少天。

[参考解答]

#include 
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
=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/

你可能感兴趣的文章
如何对DevOps数据库进行源代码控制
查看>>
微软超过苹果 成为全球第一大市值公司
查看>>
Netflix是如何针对云构建和部署代码的
查看>>
波士顿儿童医院如何利用开放云创新
查看>>
Azure Resource Manager 概述
查看>>
微服务基础架构的5个关键问题
查看>>
正确掌握React 生命周期(Lifecycle)
查看>>
install virtualbox on centos server
查看>>
腾讯优测优分享 | 这样做测试用例评审更高效
查看>>
思维导图来学习 Javascript 基础知识
查看>>
容器中运行有状态服务? Kubernetes Says “Yes!”
查看>>
IIS短文件名泄露漏洞修复
查看>>
qt android 开发之写入xml配置文件篇
查看>>
浅谈排序算法
查看>>
一些常见的git 命令
查看>>
密歇根大学新进展:AI+可穿戴设备,20秒检测儿童内化障碍 ...
查看>>
【实战】微服务实施整体方略
查看>>
linux vsftpd 配置 常用
查看>>
文远知行“筑梦号”自动驾驶汽车在安庆正式公开试乘 ...
查看>>
一次非常有趣的 SQL 优化经历
查看>>