/* (程序頭部注釋開始)
* 程序的版權和版本聲明部分
* Copyright (c) 2011, 煙台大學計算機學院學生
* All rights reserved.
* 文件名稱:輸入一個日期,求該日期是這一年中的第幾天
* 作 者: 雷恆鑫
* 完成日期: 2012 年 09 月 09 日
* 版 本 號: V1.0
* 對任務及求解方法的描述部分
* 輸入描述:
* 問題描述:
* 程序輸出:
* 程序頭部的注釋結束
*/
[csharp]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication_do_while
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(" |----------------------------------------------------------------|");
Console.WriteLine(" | 這是一個“輸入一個日期,求該日期是這一年中的第幾天 ”的程序 |");
Console.WriteLine(" |----------------------------------------------------------------|");
Console.WriteLine();
Console.WriteLine("您需要輸入一個日期...");
Console.WriteLine();
Console.Write("您需要輸入年份:");
int year = int.Parse(Console.ReadLine());
Console.WriteLine();
Console.Write("您需要輸入月份:");
int month = int.Parse(Console.ReadLine());
Console.WriteLine();
Console.Write("您需要輸入具體日期(幾號?):");
int date = int.Parse(Console.ReadLine());
Console.WriteLine();
Console.Write("{0}年{1}月{2}日是一年中的第",year,month,date);
bool b = Leap_Common_year(year);//判斷平年還是閏年
switch(month) //判斷月份
{
case 1:month_1(date);break;//根據日期計算出是哪一天
case 2:month_2(date);break;
case 3:month_3(date,b);break;
case 4:month_4(date,b);break;
case 5:month_5(date,b);break;
case 6:month_6(date,b);break;
case 7:month_7(date,b);break;
case 8:month_8(date,b);break;
case 9:month_9(date,b);break;
case 10:month_10(date,b);break;
case 11:month_11(date,b);break;
case 12:month_12(date,b);break;
default: Console.WriteLine("您輸入的月份有誤..."); break;
}
Console.ReadKey();
}
static bool Leap_Common_year(int year)//判斷平年還是閏年
{
bool b;
if (year % 4 == 0 && year % 100 != 0)
{
b = false;
}
else
{
b = true;
}
return b;
}
static void month_1(int date)
{
Console.Write("{0}天。",date);
}
static void month_2(int date)
{
int d;
d = 31 + date;
Console.Write("{0}天",d);
}
static void month_3(int date, bool b)
{
int d;
if (b)
{
d = 31 + 28 + date;
}
else
{
d = 31 + 29 + date;
}
Console.Write("{0}天", d);
}
static void month_4(int date, bool b)
{
int d;
if (b)
{
d = 31 + 28 + 31 + date;
}
else
{
d = 31 + 29 + 31 + date;
}
Console.Write("{0}天", d);
}
static void month_5(int date, bool b)
{
int d;
if (b)
{
d = 31 + 28 + 31 + 30 + date;
}
else
{
d = 31 + 29 + 31 + 30 + date;
}
Console.Write("{0}天", d);
}
static void month_6(int date, bool b)
{
int d;
if (b)
{
d = 31 + 28 + 31 + 30 + 31 + date;
}
else
{
d = 31 + 29 + 31 + 30 + 31 + date;
}
Console.Write("{0}天", d);
}
static void month_7(int date, bool b)
{
int d;
if (b)
{
d = 31 + 28 + 31 + 30 + 31 + 30 + date;
}
else
{
d = 31 + 29 + 31 + 30 + 31 + 30 + date;
}
Console.Write("{0}天", d);
}
static void month_8(int date, bool b)
{
int d;
if (b)
{
d = 31 + 28 + 31 + 30 + 31 + 30 + 31 + date;
}
else
{
d = 31 + 29 + 31 + 30 + 31 + 30 + 31 + date;
}
Console.Write("{0}天", d);
}
static void month_9(int date, bool b)
{
int d;
if (b)
{
d = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + date;
}
else
{
d = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + date;
}
Console.Write("{0}天", d);
}
static void month_10(int date, bool b)
{
int d;
if (b)
{
d = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + date;
}
else
{
d = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + date;
}
Console.Write("{0}天", d);
}
static void month_11(int date, bool b)
{
int d;
if (b)
{
d = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + date;
}
else
{
d = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + date;
}
Console.Write("{0}天", d);
}
static void month_12(int date, bool b)
{
int d;
if (b)
{
d = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + date;
}
else
{
d = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + date;
}
Console.Write("{0}天", d);
}
}
}
運行結果:
問題:我發現了在switch語句裡,default後面必須加break,否則程序報錯。
這和C++有點不一樣。