[問題] 初學者萬年曆之突發狀況_搞定
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
NONE
問題(Question):
在下方我用#####################括起來的地方(在最後面)
跑DEBUG的時候雖然有經過COUT 可是卻沒有COUT出來
然後程式就莫名當掉了
看了很久還是不懂
拜託各位大哥大姊了
餵入的資料(Input):
2010年10月
預期的正確結果(Expected Output):
該年月的月曆
錯誤結果(Wrong Output):
2010 10
Sun Mon Tues Wen Thur Fri Sat
然後就什麼都沒有了程式也沒結束
程式碼(Code):(請善用置底文網頁, 記得排版)
/* 問題描述:這個程式將輸出使用者所指定年月份的月曆 */
/* */
/* 輸入檔案:從標準輸入檔輸入西元年份(Year)和月份(Month) */
/* 輸出檔案:從標準輸出檔輸出所對應月份的月曆 */
/************************************************************/
//載入標準函數之原型(ptototype)
#include <iostream.h>
//描述自定函數之原型(prototype)
int first_day(int Year, int Month);
void print_calendar(int Year, int Month, int FirstDay);
bool is_leap(int Year);
/************************************************************/
/* 函式名稱:main */
/* 函式參數:無 */
/* 函式功能:輸入西元年份(Year)和月份(Month), */
/* 輸出所對應月份的月曆 */
/************************************************************/
int main(void)
{
int Year, Month, FirstDay;
cout << "Year ? ";
cin >> Year;
cout << "Month(1-12) ?";
cin >> Month;
FirstDay = first_day(Year, Month);
print_calendar(Year, Month, FirstDay);
return 0;
}
/************************************************************/
/* 函式名稱:is_leap */
/* 函式參數:西元年份(Year) */
/* 函式功能:判斷所指定年份是否為閏年, */
/* 1 for leap years; 0 for non-leap years */
/************************************************************/
bool is_leap(int Year)
{
bool Leap = 0; //0 for non-leap years
if(Year%4000==0){
Leap=0;
}else if(Year%400==0){
Leap=1;
}else if(Year%100==0){
Leap=0;
}else if(Year%4==0){
Leap=1;
}
return Leap;
}
/************************************************************/
/* 函式名稱:first_day */
/* 函式參數:西元年份(Year)和月份(Month) */
/* 函式功能:傳回所指定月份的第一天為星期幾(以整數表示) */
/* E.g. 0 for Sunday, 1 for Monday...... */
/************************************************************/
int first_day(int Year, int Month)
{
int FirstDay = 0;
int Days;
Days=Year*365+Year/4-Year/100+Year/400-Year/4000;
FirstDay=Days%7;
return FirstDay;
}
/************************************************************/
/* 函式名稱:print_calendar */
/* 函式參數:西元年份(Year), 月份(Month) */
/* 和該月的第一天(FirsrDay) */
/* 函式功能:輸出所指定月份的月曆 */
/************************************************************/
void print_calendar(int Year, int Month, int FirstDay)
{
cout<<Year<<"\t"<<Month<<"\nSun \tMon \tTues\tWen \tThur\tFri \tSat "<<endl;
int MonthDay;
int i=1;
if(Month>=7){
Month+=1;
}
if(Month==2){
MonthDay=28;
}
if(Month%2==1){
MonthDay=31;
}else{
MonthDay=30;
}
for(i=FirstDay;i>0;i--){
cout<<"\t ";
}
#############################################################################
for(i=1;i<=MonthDay;i++){
cout<<i<<"\t";
FirstDay+=1;
if(FirstDay==6){
cout<<"\n";
FirstDay=0;
}
}
#############################################################################
}
補充說明(Supplement):
關於為什麼要弄成副函式進去這個問題是因為這是教授出的作業
要我們會寫副函式
--
人生就像線性代數,
其實都是簡單的加減乘除,
但卻複雜的讓人搞不懂。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.13.102
→
03/16 06:18, , 1F
03/16 06:18, 1F
The thread 0xC3C has exited with code 0 (0x0).
The program 'C:\Documents and Settings\PC-3\桌面
\499500279_hw12\Debug\499500279_hw12.exe' has exited with code 0 (0x0).
GO的時候跑出來的
※ 編輯: jlik12385 來自: 114.32.13.102 (03/16 18:19)
推
03/16 22:50, , 2F
03/16 22:50, 2F
推
03/16 22:50, , 3F
03/16 22:50, 3F
我後來發現了= =
因為我程式寫一半就跑不出結果就還沒處理這裏 我還很新手抱歉
→
03/16 22:51, , 4F
03/16 22:51, 4F
推
03/16 22:57, , 5F
03/16 22:57, 5F
→
03/16 22:58, , 6F
03/16 22:58, 6F
→
03/16 23:00, , 7F
03/16 23:00, 7F
正解
→
03/17 06:16, , 8F
03/17 06:16, 8F
問題解決了
今天在學校問學長們
最後得到的結論是_編譯器的問題
我用的是 VC6.0
DV VC2008都跑的出來
VC6的會留在緩衝區
最後加
cout<<endl;
system("pause");
就沒事了
不過照理說 VC6應該是不用多打 暫停 的. 程式會直接結束是怎麼回事
就要高手解答了
還有我這個程式是還沒完成的寫到一半 所以結果是錯的
※ 編輯: jlik12385 來自: 114.32.13.102 (03/18 01:28)
※ 編輯: jlik12385 來自: 114.32.13.102 (03/18 01:28)
※ 編輯: jlik12385 來自: 114.32.13.102 (03/18 01:54)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章