C++第1周项目2——日期结构体

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565

【项目2-日期结构体】定义一个结构体变量(包括年、月、日),要求输入年、月、日,计算输出该日是该年的第几天?

/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: date.cpp
* 作    者:
* 完成日期:  年  月   日
* 版本号: v1.0
* 输入描述:年月日
* 问题描述:输出对应的那一天是这一年的第几天
* 输出:第几天
*/
#include <iostream>
using namespace std;
struct Date
{
	int year;
	int month;
	int day;
};
int main()
{
	Date date;
	cout<<"input year,month,day:";
	cin>>date.year>>date.month>>date.day;
	int days;

	cout<<date.month<<"月"<<date.day<<"日是"<<date.year<<"年的第"<<days<<"天."<<endl;
	return 0;
}

参考解答一:

#include <iostream>
using namespace std;
struct Date
{
	int year;
	int month;
	int day;
};
int main()
{
	Date date;
	cout<<"input year,month,day:";
	cin>>date.year>>date.month>>date.day;
	int 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;
	cout<<date.month<<"月"<<date.day<<"日是"<<date.year<<"年的第"<<days
		<<"天."<<endl;
	return 0;
}

参考解答二:

#include <iostream>
using namespace std;
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()
{
	Date date;
	cout<<"input year,month,day:";
	cin>>date.year>>date.month>>date.day;
	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天
	cout<<date.month<<"月"<<date.day<<"日是"<<date.year<<"年的第"<<days
		<<"天."<<endl;
	return 0;
}

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

#include <iostream>
using namespace std;
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()
{
	Date date;
	cout<<"input year,month,day:";
	cin>>date.year>>date.month>>date.day;
	cout<<date.month<<"月"<<date.day<<"日是"<<date.year<<"年的第";
	cout<<days(date.year,date.month,date.day)<<"天."<<endl;
	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;
}

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

#include <iostream>
using namespace std;
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(Date);
int main()
{
	Date date;
	cout<<"input year,month,day:";
	cin>>date.year>>date.month>>date.day;
	cout<<date.month<<"月"<<date.day<<"日是"<<date.year<<"年的第";
	cout<<days(date)<<"天."<<endl;
	return 0;
}

int days(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;
}
时间: 2024-09-19 20:34:39

C++第1周项目2——日期结构体的相关文章

C++第2周项目6——点结构体与枚举

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8635385 [项目6-点结构体与枚举]读程序,写出函数的定义,注意其中枚举类型的用法 enum SymmetricStyle {axisx,axisy,point};//分别表示按x轴, y轴, 原点对称 struct Point{ double x; //

C++第2周项目3——用结构体数组作计算

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8635385 [项目3-用结构体数组作计算]接项目2,(1)从文件中读出数据,存放到你定义的结构体数组中,即项目2(1):(2)求出每名同学的总分(可以在读入过程中"顺便"计算):(3)按总分排序(降序):(4)输出排序后的成绩单:(5)有30名同学可

2014秋C++第17周 项目4参考 日期结构体

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目4 - 日期结构体](1)定义一个结构体变量(包括年.月.日),要求输入年.月.日,计算输出该日是该年的第几天. #include <iostream> using namespace std; struct Date { int year; int month; int

C++第2周(春)项目3 文件+结构体实现实用系统

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [项目3-文件+结构体实现实用系统]score.txt(本文后提供了一部分数据,自行copy建文本文件)中是一些同学的学号.姓名.C++.高数.英语成绩,利用前两个项目中定义的结构体数组,读取文件中的数据,完成下面的应用: (1)从文件中读出数据,存放到结构体数组中: 博文"C++文件操作初体验"http://blog.csdn.ne

《C语言及程序设计》实践参考——日期结构体

返回:贺老师课程教学链接 [项目6-日期结构体] (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

《C语言及程序设计》实践项目——初练结构体

返回:贺老师课程教学链接 [项目1-复数结构体] 编写一个程序,首先定义一个复数数据类型,即结构类型.然后按照复数的运算规则进行计算,并按照复数表示的格式进行输出,请将程序补充完整. #include <stdio.h> struct complex { int re; int im; }; int main() { struct complex x,y,s,p; scanf("%d%d",&x.re,&x.im); scanf("%d%d&quo

第17周报告1:结构体数组

任务:score.txt中是一些同学的学号.姓名.C++.高数.英语成绩,定义一个学生成绩的结构体数组,其中的成员包括学号(char num[12]).姓名(name).三门课的成绩(grade).总分(score)).建议将某些功能设计成自定义函数. (1)从文件中读出数据,存放到你定义的结构体数组中: (2)求出每名同学的总分(可以读入过程中"顺便"计算): (3)按总分排序(降序): (4)输出排序后的成绩单: (5)有30名同学可以获得奖学金,规则是总分高者优先,有挂科不能得奖

2013C++第9周项目——多分支结构程序设计

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759 [项目1分段函数求值]从键盘输入x的值(整型),根据公式1计算并输出x和y的值.  要求用switch语句构造多分支结构完成求解,利用BB平台上"第9周练习源代码及博文模板.txt"中给出了博文模板发布报告. 提示: 解法1:类似例3.9的思路,各分段的标准都为2的倍数,所以,构造表达式 t= x/2,根据t的取值决定switch分支: 解法2:构造表达式 t=

2013级C++第1周(春)项目——枚举类型与结构体初步

课程主页在:http://blog.csdn.net/sxhelijian/article/details/11890759 [项目0-闲谈几点] 学习信息技术的大学生,在初接触行业,就能够进入到专业社区,有机会了解行业最新进展.享受海量资源.接触专业人士.获得实践机会,也给自己创造了一个全新.开放的展示空间,我们可以拥抱这样的机会. 与互联网相关的大学生,学习程序设计课程过程中,就同互联网亲密接触,学会驾驭,学会融入,各种观念,乃至于技术会逐渐深入.在进一步的学习过程中,博客.搜索.论坛.Em