計算星座及上升星座
using System;
namespace ConsoleApplication1
{
///
/// Class1 的摘要描述。
///
class Class1
{
///
/// 應用程式的主進入點。
///
[STAThread]
static void Main(string[] args)
{
int year=0, month=0, day=0, hour=0, minute=0 , x=0, a=0, b=0, c=0, d=0 ,i=0, up=0;
//宣告變數,year年,month月,day日hour時minute分,a控制迴圈,b判斷閏年參數,c,d判斷日期參數,i進位次數,up上升星座判別參數
string cons="",up_cons="";
//星座(constellation)及上升星座(up constellation)
string ari="牡羊座" ,tau="金牛座" ,gem="雙子座" ,can="巨蟹座" ,leo="獅子座" ,vir="處女座"
,lib="天秤座" ,sco="天蠍座" ,sag="射手座" ,cap="魔羯座" ,aqu="水瓶座" ,pis="雙魚座";
//不想打出現很多次的國字,所以給他用字串變數代表
while (a>=0)
{
Console.WriteLine("++++++++算出你是哪個星座及你的上升星座的小程式++++++++");
while (a>=0)
{
Console.Write("選擇年份單位(1)西元(2)民國:");
switch ( Convert.ToInt32(Console.ReadLine()) )
{
case 1: x= 0 ; a= -1; break;
case 2: x=1911; a= -1; break;
default: Console.WriteLine("沒有你想選的嗎?請重新輸入!!\n"); a++; break;
}
}
Console.Write("請輸入出生年份:");
year=Convert.ToInt32(Console.ReadLine())+x;
a=0;
while (a>=0)
{
Console.Write("請輸入出生月份:");
month=Convert.ToInt32(Console.ReadLine());
Console.Write("請輸入出生日期:");
day=Convert.ToInt32(Console.ReadLine());
//判斷所輸入的年份是否為閏年,若是閏年b=1 不是閏年b=2
b= ( year%4==0 && year%100==0 || year%400==0 )? 1:2;
//判斷所輸入的月份是否正確不正確c=1 正確c=2
c= ( month<=0 || month>12 )? 1:2;
//判斷所輸入的日期是否正確不正確d=1 正確c=2
if ( day<1 || day>31 )
d=1;
else if ( b==1 && month==2 && day>29 )
d=1;
else if ( b==2 && month==2 && day>28 )
d=1;
else if ( (month==4||month==6||month==9||month==11) && day>30 )
d=1;
else
d=2;
//月份及日期判斷結束
if ( c==1 || d==1 )
{
Console.WriteLine("月份日期輸入錯誤!!請重新輸入!!\n");
a++;
}
else
a=-1;
}
a=0;
while(a>=0)
{
Console.Write("請輸入出生時間幾點:");
hour= Convert.ToInt32(Console.ReadLine());
Console.Write("請輸入出生時間幾分:");
minute= Convert.ToInt32(Console.ReadLine());
//判斷時間是否輸入正確
if ( hour<0 || hour>=24 || minute<0 || minute>=60 )
{
Console.WriteLine("時間輸入錯誤!請重新輸入~!");
Console.WriteLine("(時間是不是忘記進位了阿?24時請輸入時喔\n)");
a++;
}
else
a=-1;
}
//依照每個月上升星座的生日參數做運算同時做每個月作星座的判別
switch (month)
{
case 1:hour+=6; minute+=40; cons= ( day >= 21 )?aqu:cap;break;
case 2:hour+=8; minute+=43; cons= ( day >= 20 )?pis:aqu;break;
case 3:hour+=10; minute+=33; cons= ( day >= 21 )?ari:pis;break;
case 4:hour+=12; minute+=35; cons= ( day >= 21 )?tau:ari;break;
case 5:hour+=14; minute+=33; cons= ( day >= 22 )?gem:tau;break;
case 6:hour+=16; minute+=36; cons= ( day >= 22 )?can:gem;break;
case 7:hour+=18; minute+=34; cons= ( day >= 23 )?leo:can;break;
case 8:hour+=20; minute+=36; cons= ( day >= 24 )?vir:leo;break;
case 9:hour+=22; minute+=38; cons= ( day >= 20 )?lib:vir;break;
case 10:hour+=0; minute+=37; cons= ( day >= 23 )?sco:lib;break;
case 11:hour+=2; minute+=39; cons= ( day >= 22 )?sag:sco;break;
case 12:hour+=4; minute+=37; cons= ( day >= 22 )?cap:sag;break;
}
minute= day*4+minute;
for ( i= 0; minute>60 ;i++ )
minute-=60;
hour= ( hour+i )%24;
up= hour*60+minute;
up_cons=
(up<89 )?can:(up<226)?leo:(up<360)?vir:(up<493)?lib:(up<630)?sco:(up<766)?sag:
(up<888)?cap:(up<996)?aqu:(up<1080)?pis:(up<1169)?ari:(up<1271)?tau:(up<1393)?gem:can
;
//上升星座判別完畢
Console.WriteLine("\n你是屬於{0}的人~~,且你的上昇星座為{1}!!",cons,up_cons);
Console.Write("\n按繼續或按任意鍵結束:");
if (Console.ReadLine() =="1")
{
Console.WriteLine("\n======================我是分隔線======================");
a++;
Console.WriteLine();
}
else
a = -1;
}
}
}
}