然後壹年的任何壹天,比如5月25日是壹年的第幾天,希望樓主會算。1、3、5、7、8、10、12月有31天,其他是30天,2月是28天或29天(簡單起見,按28天算)。
最後根據上面的數據,可以求出每個星座對應的兩個點,由這兩個點確定壹個區間就是所在的星座。下面是我給樓主寫的程序,保存為*.c就可以在VC++6.0中運行。具體的程序代碼和運行結果我已發送至哥們妳的qq郵箱了,希望能對妳有幫助。
#include<stdio.h>
int table[12]={31,28,31,30,31,30,31,31,30,31,30,31};//月份對應的天數
int table1[12]={20,49,79,108,139,171,203,234,265,296,326,356};//星座的分割點
string str[12]=
{"水瓶座","雙魚座","白羊座","金牛座","雙子座","巨蟹座",
"獅子座","處女座","天秤座","天蠍座","射手座","摩羯座",};//星座的名稱
struct date
{
int month;
int day;
}DATE;
void init_info(DATE date1)
{
int a,b;
printf("請輸入妳的出生月份:\t");
scanf("%d",&a);
printf("請輸入妳的出生日期:\t");
scanf("%d",&b);
a=date1.month;
b=date1.day;
}
void print_info(DATE date1)
{
int key=0;
for(i=1;i<date1.month;i++)
{key+=table[date1.month];}
key+=date1.day;
switch(key)
{
case key>=table1[0]&key<table1[1]:
{printf("%s\n",str[0]);break;}
case key>=table1[1]&key<table1[2]:
{printf("%s\n",str[1]);break;}
case key>=table1[2]&key<table1[3]:
{printf("%s\n",str[2]);break;}
case key>=table1[3]&key<table1[4]:
{printf("%s\n",&str[3]);break;}
case key>=table1[4]&key<table1[5]:
{printf("%s\n",str[4]);break;}
case key>=table1[5]&key<table1[6]:
{printf("%s\n",&str[5]);break;}
case key>=table1[6]&key<table1[7]:
{printf("%s\n",&str[6]);break;}
case key>=table1[7]&key<table1[8]:
{printf("%s\n",str[7]);break;}
case key>=table1[8]&key<table1[9]:
{printf("%s\n",str[8]);break;}
case key>=table1[9]&key<table1[10]:
{printf("%s\n",str[9]);break;}
case key>=table1[10]&key<table1[11]:
{printf("%s\n",str[10]);break;}
default://12月22日到1月19日出生
{printf("%s\n",str[11]);break;}
}
}
void main()
{
DATE date1;
while(1)
{
init_info(date1);//初始化信息
print_info(date1);//顯示星座
}
}