㈠ c語言,星座匹配問題
1)建立兩個數組 a[2];b[2]分別存儲第一人的月,日,第二人的月,日,從合理性角度分析
月a[0]∈[1,12],a[1]也就是日期根據a[0]決定,a[0]是1,3,5,7,8,12情況下,a[1]不能是31.
a[0]是2的情況下,a[1]不能超過29.如果輸入29要減去1(為了後面的日期差計算星座做基礎)
2)第一個函數int sum_day (int* a),把剛才輸入作為形參傳入,按照一定公式計算N月M日是這年的第K天,然後返回這個日期。
3)因為每個星座之隔都是30天(2月按照28來看)。把這個天數,假設是返回的k,那麼分類討論,
第一種,k<19,那麼直接知道是摩羯
第二種 switch ((k-19)/30) {
case 0:水瓶
case 1:雙魚
........
4)匹配的規則,我們已經知道雙方的星座了,至於是否合得來用一個二維數組來存放情況
int c[12][12];橫坐標的0~11分別表示水瓶~摩羯,縱坐標也是一個道理。比如
a[0][0]就是水瓶配水瓶,c[11][11]就是摩羯配摩羯。如果c[0][0]是存放1,則表示水瓶配水瓶是合適的,如果是0則表示不合適,1還是0由編程人員設置。
3)輸出,(k-19)/30就是下標,例如c [(k1-19)/30][,(k2-19)/30],那麼這將表示這個坐標的數據,1
表示合適,0表示不合適,k是表示這一年的第k天。
㈡ 12星座屬相用c語言咋做
1)建立數組 a[2]存儲月,日,從合理性角度分析
月a[0]∈[1,12],a[1]也就是日期根據a[0]決定,a[0]是2,4,6,9,11情況下,a[1]不能是31.
a[0]是2的情況下,a[1]不能超過29.如果輸入29要減去1(為了後面的日期差計算星座做基礎)
2)第一個函數int sum_day (int* a),把剛才輸入作為形參傳入,按照一定公式計算N月M日是這年的第K天,然後返回這個日期。
3)因為每個星座之隔都是30天(2月按照28來看)。把這個天數,假設是返回的k,那麼分類討論,
第一種,k<19,那麼直接知道是摩羯
第二種 switch ((k-19)/30) {
case 0:水瓶
case 1:雙魚
........
㈢ C語言 提示用戶輸入生日,根據用戶生日求得此人屬於哪個星座,輸出該星座的名稱.
/*C語言提示用戶輸入生日,根據用戶生日求得此人屬於哪個星座,輸出該星座的名稱.*/
/*byMr.Kong*/
#include<stdio.h>
main()
{
intm,d; /*定義m為月份,d為日*/
printf("請輸入月份:");
scanf("%d",&m);
while(m<1||m>12)
{
printf("您輸入的月份有誤! 請重新輸入:");
scanf("%d",&m);
}
printf("請輸入日:");
scanf("%d",&d);
while(d<1||d>31) /*先簡單判斷日期,沒有考慮二月、平月、閏月等情況,之後有詳細判斷*/
{
printf("您輸入的日有誤! 請重新輸入:");
scanf("%d",&d);
}
switch(m)
{
case1:
if(d<=19)
printf("摩羯座");
else
printf("水瓶座");
break;
case2:
if(d<=18)
printf("水瓶座");
elseif(d<=29)/*二月按照29天來計算*/
printf("雙魚座");
else
printf("您輸入的日有誤!");
break;
case3:
if(d<=20)
printf("雙魚座");
else
printf("白羊座");
break;
case4:
if(d<=19)
printf("白羊座");
elseif(d<=30)
printf("金牛座");
else
printf("您輸入的日有誤!");
break;
case5:
if(d<=20)
printf("金牛座");
else
printf("雙子座");
break;
case6:
if(d<=21)
printf("雙子座");
elseif(d<=30)
printf("巨蟹座");
else
printf("您輸入的日有誤!");
break;
case7:
if(d<=22)
printf("巨蟹座");
else
printf("獅子座");
break;
case8:
if(d<=22)
printf("獅子座");
else
printf("處女座");
break;
case9:
if(d<=22)
printf("處女座");
elseif(d<=30)
printf("天枰座");
else
printf("您輸入的日有誤!");
break;
case10:
if(d<=23)
printf("天枰座");
else
printf("天蠍座");
break;
case11:
if(d<=22)
printf("天蠍座");
elseif(d<=30)
printf("射手座");
else
printf("您輸入的日有誤!");
break;
case12:
if(d<=21)
printf("射手座");
else
printf("魔羯座");
break;
}
}
㈣ c語言編寫程序,判斷輸入的日期(月,日)屬於哪個星座
c語言的輸出輸入是格式化的,printf表示輸出,在屏幕上列印出來;scanf表示讀入,即把你在屏幕上如果打10,按回車,10就存儲到month那個變數裡面,%d代表輸入一個整數。
還有,要注意,你那個不是c語言……已經是c++了。你看上面定義的那個struct結構體里竟然已經有public……而且還有函數的定義……
Date(int m, int d) 是函數的聲明,set(m, d)是函數的定義。聲明嘛,就是說,我聲明有這個函數存在(注意哦,不一定要給出這個函數具體怎樣的)~定義嘛,就是我要給出這個函數的具體內容和定義。就比如說,我聲明我和張三是好朋友,但我不一定要介紹張三是一個怎樣的人。但我定義張三這個朋友的話,我就必須從各方面都介紹他。聲明和定義在程序設計中,表示形式往往就不一樣了。
函數名是自己起的,愛怎麼起都行,只要調用和定義能對上號就好。
學程序一開始慢慢來,不用急。當年我寫第一個c語言程序,漏了許多分號,被朋友嘲笑了很久……當時也和你一樣,printf什麼的一直不會用。不過現在就好了……
c語言的教材的話,國內的鮮有好書,還是推薦你看譚浩強寫的,清華大學出版社。確實編的很好,深入淺出,很多抽象概念他老人家都解釋得特別好,國內其他教材都比不上。當你學好基礎,想進一步學習的話,推薦兩本國外教材,C PRIMER PLUS 和THE C PROGRAMMING。C PRIMER PLUS比較全,THE C PROGRAMMING是c語言發明者寫的,很牛,不過他寫法和中國傳統思維很不一樣,建議看完譚浩強的書之後再去看。
祝你享受編程的快樂~!
補充,代碼注釋:
#include<stdio.h>
#include<string.h>
//這個程序寫得實在不敢恭維,可讀性極低。變數名起得很不好,重復太多,很容易引起誤解。所以我建議初學者還是去看一些精挑細選的例子,比如譚浩強書上那些真的很不錯。我在THU學EE的,這是我親身經驗和個人建議。。
struct Date //定義了一個叫Date的結構體
{
int month, day;
public:
Date(int m, int d) //聲明一個叫Date的函數
{
set(m, d);
}
void set(int m, int d);
void constell(); //Date結構體底下有一個叫constell的函數
};
void Date::set(int m, int d)
{
//在此最好檢查日期是否輸入正確...
month=m, day=d;
}
void Date::constell()
{
string c[12][2]={ {"魔蠍座", "水瓶座"}, {"水瓶座", "雙魚座"}, {"雙魚座", "白羊座"},
{"白羊座", "金牛座"}, {"金牛座", "雙子座"}, {"雙子座", "巨蟹座"},
{"巨蟹座", "獅子座"}, {"獅子座", "處女座"}, {"處女座", "天秤座"},
{"天秤座", "天蠍座"}, {"天蠍座", "射手座"}, {"射手座", "魔蠍座"}
};
int x=month-1;
int y=day/21;
printf("%s",c[x][y]);
}
int main()
{
int month,day;
printf("請輸入月份: ");
scanf("%d",&month);
cout<<"請輸入日期: ";
scanf("%d",&day);
Date d(month,day); //聲明一個Date類型的結構體變數(也可以叫對象),叫d(裡麵包含set,constell等函數,如一開頭結構體定義所示)。其作用相當於int i,聲明一個整型變數i
d.constell(); //調用結構體變數d下constell函數
return 0;
}
㈤ C語言程序:已知你的生日是1997年8月一號,輸出你的星座。
我當題練習了一下,反正在我的電腦上可以運行
//C語言程序:已知你的生日是1997年8月一號,輸出你的星座
#include<stdio.h>
intmain()
{
printf("請正確輸入年月日 首先輸入年份: ");
intnian=0;
printf("年:");
scanf("%d",&nian);
intyue=0;
printf("月:");
scanf("%d",&yue);
intri=0;
printf("日:");
scanf("%d",&ri);
intxingzuo=0;
xingzuo=yue*100+ri;
if(xingzuo>=321&&xingzuo<=419)
{
printf("你是白羊座 ");
}
elseif(xingzuo>=420&&xingzuo<=520)
{
printf("你是金牛座 ");
}
elseif(xingzuo>=521&&xingzuo<=621)
{
printf("你是雙子座 ");
}
elseif(xingzuo>=622&&xingzuo<=722)
{
printf("你是巨蟹座 ");
}
elseif(xingzuo>=723&&xingzuo<=822)
{
printf("你是獅子座 ");
}
elseif(xingzuo>=823&&xingzuo<=922)
{
printf("你是處女座 ");
}
elseif(xingzuo>=923&&xingzuo<=1023)
{
printf("你是天平座 ");
}
elseif(xingzuo>=1024&&xingzuo<=1122)
{
printf("你是天蠍座 ");
}
elseif(xingzuo>=1123&&xingzuo<=1221)
{
printf("你是射手座 ");
}
elseif(xingzuo>=120&&xingzuo<=218)
{
printf("你是水瓶座 ");
}
elseif(xingzuo>=219&&xingzuo<=320)
{
printf("你是雙魚座 ");
}
else
{
printf("你可能是摩羯座 ");
}
return0;
}
㈥ 用C語言中得switch怎麼列印出來十二星座求解大神。。。求代碼。。。。。。。謝謝了。
問題應該具體點
現在我的理解是 獲得一個值 a = 1-12
然後 switch(a){
case:1
此值為XX座 ...............
case:2
此值為XX座 ...............
}
這樣?
具體代碼:
int a = 1;
switch(a){
case 1:
System.out.println("分支1");
break;
case 2:
System.out.println("分支2");
break;
}
㈦ c語言根據一個人的身份證號推算出所屬的星座
連續輸入時,要清除輸入流中殘余字元。修改一點點即好:
while(1){
if ( scanf("%*10s%4d",&m)==EOF) break;
fflush(stdin); //清除輸入流中殘余字元
其它一字不改,一切照舊
if(m<=419&&m>=321)printf("Aries\n"); ....
㈧ C語言編譯一個能根據生日判斷什麼星座
用if else實現會比較好!因為星座日期是一個時間段啊!而switch語句是符合某個值的!
㈨ 用C語言面向對象封裝實現一個星座測試程序!要求:給定一個日期,能夠判斷是什麼星座,並給
建立一個枚舉
星座 //enum xingzuo{}
在{}里寫入12個星座的名字
建立一個類
建一個類的數組
分別存入12個星座的信息
在類里放入星座的
開始日期 int kaiShi //如:0220
結束日期 int jieShu // 0321
……
//其他的特徵
代碼:
先判斷輸入的日期是那個屬於那個星座
然後列印出類里的信息就行了
你可以自己去實現下
鍛煉下自己
日期的格式你可以
從0101到1231
int riQi
如輸入0228
就代表2月28號
用if語句 if(riQi>=kaiShi&&riQi<=jieShu)
㈩ 用c語言編寫程序,判斷輸入的日期(月,日)屬於哪個星座
c語言的輸出輸入是格式化的,printf表示輸出,在屏幕上列印出來;scanf表示讀入,即把你在屏幕上如果打10,按回車,10就存儲到month那個變數裡面,%d代表輸入一個整數。
還有,要注意,你那個不是c語言……已經是c++了。你看上面定義的那個struct結構體里竟然已經有public……而且還有函數的定義……
Date(int m, int d) 是函數的聲明,set(m, d)是函數的定義。聲明嘛,就是說,我聲明有這個函數存在(注意哦,不一定要給出這個函數具體怎樣的)~定義嘛,就是我要給出這個函數的具體內容和定義。就比如說,我聲明我和張三是好朋友,但我不一定要介紹張三是一個怎樣的人。但我定義張三這個朋友的話,我就必須從各方面都介紹他。聲明和定義在程序設計中,表示形式往往就不一樣了。
函數名是自己起的,愛怎麼起都行,只要調用和定義能對上號就好。
學程序一開始慢慢來,不用急。當年我寫第一個c語言程序,漏了許多分號,被朋友嘲笑了很久……當時也和你一樣,printf什麼的一直不會用。不過現在就好了……
c語言的教材的話,國內的鮮有好書,還是推薦你看譚浩強寫的,清華大學出版社。確實編的很好,深入淺出,很多抽象概念他老人家都解釋得特別好,國內其他教材都比不上。當你學好基礎,想進一步學習的話,推薦兩本國外教材,C PRIMER PLUS 和THE C PROGRAMMING。C PRIMER PLUS比較全,THE C PROGRAMMING是c語言發明者寫的,很牛,不過他寫法和中國傳統思維很不一樣,建議看完譚浩強的書之後再去看。
祝你享受編程的快樂~!
補充,代碼注釋:
#include
#include
//這個程序寫得實在不敢恭維,可讀性極低。變數名起得很不好,重復太多,很容易引起誤解。所以我建議初學者還是去看一些精挑細選的例子,比如譚浩強書上那些真的很不錯。我在THU學EE的,這是我親身經驗和個人建議。。
struct Date //定義了一個叫Date的結構體
{
int month, day;
public:
Date(int m, int d) //聲明一個叫Date的函數
{
set(m, d);
}
void set(int m, int d);
void constell(); //Date結構體底下有一個叫constell的函數
};
void Date::set(int m, int d)
{
//在此最好檢查日期是否輸入正確...
month=m, day=d;
}
void Date::constell()
{
string c[12][2]={ {"魔蠍座", "水瓶座"}, {"水瓶座", "雙魚座"}, {"雙魚座", "白羊座"},
{"白羊座", "金牛座"}, {"金牛座", "雙子座"}, {"雙子座", "巨蟹座"},
{"巨蟹座", "獅子座"}, {"獅子座", "處女座"}, {"處女座", "天秤座"},
{"天秤座", "天蠍座"}, {"天蠍座", "射手座"}, {"射手座", "魔蠍座"}
};
int x=month-1;
int y=day/21;
printf("%s",c[x][y]);
}
int main()
{
int month,day;
printf("請輸入月份: ");
scanf("%d",&month);
cout<<"請輸入日期: ";
scanf("%d",&day);
Date d(month,day); //聲明一個Date類型的結構體變數(也可以叫對象),叫d(裡麵包含set,constell等函數,如一開頭結構體定義所示)。其作用相當於int i,聲明一個整型變數i
d.constell(); //調用結構體變數d下constell函數
return 0;
}