Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2350327
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:07:24

//---------------------------------------------------------------------------

/*
程序使用了3个Edit控件,分别存储月、日、年。一个Button1按钮,当按下时
首先判断数据格式是否正确,然后计算所在的天数,并且把结果在Label4中显示出来。
*/

#include
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
int month,day,year;  //存储月、日、年所需的整型变量
int num=0;   //num存储最终的结果
int i;
bool error=false;  //逻辑判断,用于判断输入的格式是否合法

month=StrToInt(Edit1->Text);
day=StrToInt(Edit2->Text);
year=StrToInt(Edit3->Text);

if(year>9999||year<1000)error=true;  //判断年份是否合法,必须是4位数

if(month<1||month>12)error=true;  //判断月份是否合法,不能超过12

//下面的switch判断日期是否合法
switch(month)
{
    case 1:case 3:case 5:case 7:case 8:case 10:case 12:
        if(day>31)error=true;
        break;
    case 4:case 6:case 9:case 11:
        if(day>30)error=true;
        break;
    case 2:
        if((year%100!=0&&year%4==0)||year%400==0)
        {
            if(day>29)error=true;
        }
        else
        {
            if(day>28)error=true;
        }
        break;
}

//如果格式正确则计算,否则打印错误消息
if(!error)
{
    for(i=1;i    {
        switch(i)
        {
            case 1:case 3:case 5:case 7:case 8:case 10:case 12:  //31天的月份
                num+=31;
                break;
            case 4:case 6:case 9:case 11:   //30天的月份
                num+=30;
                break;
            case 2:     //2月的日期数需要判断平闰年
                if((year%100!=0&&year%4==0)||year%400==0)   //判断是否为闰年的条件
                    num+=29;
                else
                    num+=28;
                break;
        }
    }
    num+=day;
    Label4->Caption="第"+IntToStr(num)+"天";
}
else
{
    Label4->Caption="输入错误!";
}
}
//---------------------------------------------------------------------------


--------------------next---------------------
#include
using namespace std;
int main()
{
int month,day,year,days_total,a,b;
bool error=true;
cout << "请输入日期(格式为:月 日 年):" << endl;
cin >> month >> day >> year;
//检验月份是否正确
if(month<0||month>12)
error=false;
//检验日期是否正确
switch(month)
{
    case 1:case 3:case 5:case 7:case 8:case 10:case 12:
        if(day>31||day<0)
error=false;
        break;
    case 4:case 6:case 9:case 11:
        if(day>30||day<0)
error=false;
        break;
    case 2:
        if((year%100!=0&&year%4==0)||year%400==0)
        {
            if(day>29||day<0)
error=false;
        }
        else
        {
            if(day>28||day<0)
error=false;
        }
        break;
}
//计算该日期是该年中的第几天
if(error==true)
{
                 if(month==1)
                     days_total=day;
      else
if(month==2)
days_total=day;
else
if(month>2&&month<8)
{
a=month/2-1;
        b=(month-1)/2-1;
        if((year%100!=0&&year%4==0)||year%400==0)
{
days_total=60+a*31+b*30+day;
}
        else
days_total=59+a*31+b*30+day;
}
else
if(month>7&&month<13)
{
a=(month-5)/2-1;
b=(month-6)/2-1;
if((year%100!=0&&year%4==0)||year%400==0)
{
days_total=213+a*31+b*30+day;
}
            else
days_total=212+a*31+b*30+day;
}
cout << month << "月" << day << "日是" << year << "年的第" << days_total << "天。" << endl;
}
else
cout << "请输入正确的日期!" <<  endl;
return 0;
}


--------------------next---------------------

阅读(1107) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~