实验内容:
* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作
* 完成日期:
* 版本号:
* 对任务及求解方法的描述部分
* 输入描述:从文件中读入学生数据
* 问题描述:如何利用利用动态链表,求出总分高于平均中分且没有挂科的同学的名单
。
* 程序输出:求出总分高于平均中分且没有挂科的同学的名单
* 程序头部的注释结束(此处也删除了斜杠)
#include <iostream>
using namespace std;
struct Date
{
int year;
int month;
int day;
};
Date date;
struct Time
{
int hour;
int minute;
int second;
};
Time time;
int main()
{
int d, d2;
cout << "请输入您的出生 年 月日" << endl;
cin >> date.year >> date.month >> date.day;
if((date.year % 4 == 0 && date.year % 100 !=0) || date.year % 400==0)
{
d2 = 29;
}
else
{
d2 = 28;
}
switch(date.month)
{
case 1: d = date.day; break;
case 2: d = 31 + date.day; break;
case 3: d = 31 + d2 + date.day; break;
case 4: d = 31 + d2 + 31 + date.day; break;
case 5: d = 31 + d2 + 31 + 30 + date.day; break;
case 6: d = 31 + d2 + 31 + 20 + 31 + date.day; break;
case 7: d = 31 + d2 + 31 + 30 + 31 + 30 + date.day; break;
case 8: d = 31 + d2 + 31 + 30 + 31 + 30 + 31 + date.day; break;
case 9: d = 31 + d2 + 31 + 30 + 31 + 30 + 31 + 31 +date.day; break;
case 10: d = 31 + d2 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + date.day; break;
case 11: d = 31 + d2 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + date.day; break;
case 12: d = 31 + d2 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + date.day; break;
}
cout << "该日是本年中的第" << d << "天" << endl << "\n";
cout << "请输入您的出生时刻时 分 秒" << endl;
int s;
cin >> time.hour >> time.minute >> time.second;
s = time.hour * 3600 + time.minute * 60 + time.second;
cout << "该时刻是该天的第" << s << "秒" << endl << "\n";
int S;
switch(date.month)
{
case 1: S = date.day*86400+s; break;
case 2: S = 31 * 86400 + date.day * 86400 + s; break;
case 3: S = (31 + d2) * 86400 + date.day * 86400 + s; break;
case 4: S = (31 + d2 + 31) * 86400 + date.day * 86400 + s; break;
case 5: S = (31 + d2 + 31 + 30) * 86400 + date.day * 86400 + s; break;
case 6: S = (31 + d2 + 31 + 20 + 31) * 86400 + date.day * 86400 + s; break;
case 7: S = (31 + d2 + 31 + 30 + 31 + 30) * 86400 + date.day * 86400 + s; break;
case 8: S = (31 + d2 + 31 + 30 + 31 + 30 + 31) * 86400 + date.day * 86400 + s; break;
case 9: S = (31 + d2 + 31 + 30 + 31 + 30 + 31 + 31) * 86400 + date.day * 86400 + s; break;
case 10: S = (31 + d2 + 31 + 30 + 31 + 30 + 31 + 31 + 30) * 86400 + date.day * 86400 + s; break;
case 11: S = (31 + d2 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31) * 86400 + date.day * 86400 + s; break;
case 12: S = (31 + d2 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30) * 86400 + date.day * 86400 + s; break;
}
cout << "该时刻是该年的第" << S << "秒" << endl;
return 0;
}
试验结果:
额想哭~~~~~~~~~~明明叫万年历,似乎最最重要的功能我没能实现。可惜的是,我仅仅完成了前四小项,就被无情的绊住了,可恶的程序,昨天奋斗到凌晨也没有得到想要的结果,呜呜~~~~~~~~~~
到底怎么样得到n天后是哪年哪月哪日啊,who can tell me?问题真的很多,其一,用户的出身月份不知道,换句话说,月份的具体天数不知,其二,如果n的值很大,超过些许年份,又要判定闰年还是平年,因为年的天数未知。
本来想用n/365=一个数,然后year+这个数,然后n65,然后在每一个case中用减的方式求解的,可是,程序就会变得好长好长好长,就像我前面所说的,365的天数也不是确定不变的,加上对闰年平年的判断,我的天,拿药写多少行啊!!!!!!!!!!!!
唉~~~~~~~~~~我是真的真的好想做出来啊!!!!!!!可是看来现在实际尚不成熟,所以先交一个不完整版的,今晚再熬熬夜,不行明晚再熬熬夜······看看能不能有结果。
我是喜欢把习题全部完成再一起交的,可是,呜呜~~~~~~我不想的不到学分,所以,先姑且交个不完整篇,读者们,不好意思,将就看吧!!!!!!!