第12周 上机报告 1之练习3 回文日
生活随笔
收集整理的這篇文章主要介紹了
第12周 上机报告 1之练习3 回文日
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目:很誘人的一個題目:2011年11月02日是一個回文日:2011 1102,我們剛剛度過!請列出近80年和近60年還有多少個回文日(假如我們能活到百歲,你和我的……)。注意:一年只有12個月。
2012年11月30日新發(fā)的程序:
#include <iostream> using namespace std; int main( ) {int year,month,day,y,anothery;bool is_cycle;int count=0;for(year = 2012; year < 2092; year++){month=year%100; //month取到的是年的后兩位month = (month%10)*10 + month/10; //將后兩位倒過來,確定月份day=year/100; //day取到的是年的前兩位day=(day%10)*10+day/10; //將前兩位倒過來,確定日期is_cycle =false;switch(month) //12個月份,各自對應(yīng)合法的日期范圍{case 1:case 3:case 5:case 7:case 8:case 10:case 12: if(day<=31) is_cycle =true; break;case 4:case 6:case 9:case 11: if(day<=30) is_cycle=true; break;case 2: if((year%4==0&&year%100!=0)||year%400==0) //閏年{if(day<=29) is_cycle =true;}elseif(day<=28) is_cycle =true; break;default: continue; //后兩位倒過來根本構(gòu)不成月份}if(is_cycle) //能構(gòu)成回文日{(diào)y=year;anothery=year;while(y>0){anothery=anothery*10+y%10;y=y/10;}cout<<anothery<<endl;count++;}}cout<<"共有 "<< count <<"個回文日。"<<endl;return 0; }一樓質(zhì)疑的程序 /* 程序頭部注釋開始* 程序的版權(quán)和版本聲明部分* Copyright (c) 2011, 煙臺大學計算機學院* All rights reserved.* 文件名稱: cycledate.cpp * 作 者: 賀利堅 * 完成日期: 2011 年11月9日* 版本號: v1.0 * 對任務(wù)及求解方法的描述部分* 輸入描述:無* 問題描述:很誘人的一個題目:2011年11月02日是一個回文日:2011 1102,我們剛剛度過!列出近80年還有多少個回文日* 程序輸出:* 問題分析:在近80年中,年份確定后,將其從最低位開始倒著取出,每兩位組成一個單位,分別對應(yīng)月份和日期部分。* 分別判斷這些月份和日期的取值范圍是否合乎要求,如果符合則輸出……* 程序頭部的注釋結(jié)束 */ #include <iostream> using namespace std; int main( ) {int year,month,day,y,anothery;bool is_cycle;int count=0;for(year = 2012; year < 2092; year++){y =year; //后面直接用year不行嗎?month=y;y=y/10;month = month*10 + y; //將后兩位倒過來,確定月份y=y/10;day=y;y=y/10;day=day*10+y; //將前兩位倒過來,確定日期is_cycle =false;switch(month) //12個月份,各自對應(yīng)合法的日期范圍{case 1:case 3:case 5:case 7:case 8:case 10:case 12: if(day<=31) is_cycle =true; break;case 4:case 6:case 9:case 11: if(day<=30) is_cycle=true; break;case 2: if((year%4==0&&year0!=0)||year@0==0) //閏年{if(day<=29) is_cycle =true;}elseif(day<=28) is_cycle =true; break;default: continue; //后兩位倒過來根本構(gòu)不成月份}if(is_cycle) //能構(gòu)成回文日{(diào)y=year;anothery=year;while(y>0){anothery=anothery*10+y;y=y/10;}cout<<anothery<<endl;count++;}}cout<<"共有 "<< count <<"個回文日。"<<endl;return 0; }
運行結(jié)果
經(jīng)驗積累:
1. 各方面要考慮周詳
2. 在for循環(huán)中,用于表示年份的year只能在year++處變化,程序中再要用年份值,用其他變量臨時替換
3. 變量用有意義的名稱,編程過程中不會將意思搞亂
上機感言:
1. 我在程序中使用的while, for, if, switch還是很規(guī)矩的,請體會
2. 突然意識到這是個練習程序結(jié)構(gòu)的好題,我做一份給大家參考吧
3. 人生苦短,你還能過9個回文日,我能過7個,這樣想想,20111102多么珍貴。
總結(jié)
以上是生活随笔為你收集整理的第12周 上机报告 1之练习3 回文日的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不要学习“网红”编程语言
- 下一篇: 送给自己的生日礼物:突破自己(辞职南下)