【審題分析】分析題目可知,本題只要實(shí)現(xiàn)spellNum()函數(shù)的功能即可。spellNum()要實(shí)現(xiàn)的功能是:
將個(gè)位數(shù)的每位拆分成單個(gè)數(shù)字,然后將這4個(gè)數(shù)字組合成兩個(gè)二位數(shù)ab和cd。如果ab<cd,ab必須是奇數(shù)且不能被5整除,cd必須是偶數(shù),同時(shí)兩個(gè)新數(shù)的十位數(shù)字均不為零,則將滿足此條件的四位數(shù)按從大到小的順序存入數(shù)組b中,并要計(jì)算滿足上述條件的四位數(shù)的個(gè)數(shù)count。因此解答本題的關(guān)鍵在于如何將一個(gè)四位數(shù)拆分成單個(gè)數(shù)字,如何將兩個(gè)數(shù)字組合成一個(gè)二位數(shù),以及判斷二位數(shù)的奇偶性。
【解題思路】對(duì)于每一個(gè)四位數(shù),用這個(gè)四位數(shù)除以1000,可得到這個(gè)四位數(shù)千位卜的數(shù)字輸給變量thou:這個(gè)四位數(shù)對(duì)1000求余然后再除以100,可得到這個(gè)四位數(shù)百位上的數(shù)字輸給變量hun;這個(gè)四位數(shù)對(duì)100求余然后再除以10,可得到這個(gè)四位數(shù)的十位上的數(shù)字輸給變量ten;這個(gè)四位數(shù)對(duì)10求余,可得到這個(gè)四位數(shù)個(gè)位上的數(shù)字輸給變量data。
因?yàn)閠hou和hun作為重新組成新的兩個(gè)二位數(shù)的十位上數(shù)字,所以其值不能為0,因而在組建兩個(gè)二位數(shù)之前,首先判斷thou和hun這兩個(gè)數(shù)字是否為0。然后用邏輯表達(dá)式ab<cd&&ab%2==1&&ab%5!=0&&cd%2==0來(lái)判斷新組成的兩個(gè)二位數(shù)ab和cd是否滿足ab<cd,ab必須是奇數(shù)且不能被5整除,并且cd必須是偶數(shù)的條件。如果上述邏輯表達(dá)式成立,則這個(gè)四位數(shù)是符合題目條件的一個(gè)數(shù)字,把其存入數(shù)組b中,同時(shí)計(jì)數(shù)變量count加1。最后利用一個(gè)雙重循環(huán)對(duì)數(shù)組b中的數(shù)字進(jìn)行從大到小的排序。
【參考答案】
【易錯(cuò)分析】用求余運(yùn)算和除法運(yùn)算求得一個(gè)數(shù)字各個(gè)位上的數(shù)字。
【考點(diǎn)鏈接】求余運(yùn)算、邏輯或、邏輯與運(yùn)算、數(shù)組中的元素從人到小的排序算法。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |