1.已知數據文件in.dat中存有200個四位數,并已調用讀函數readDat()把這些數存入數組a中,請考生編制一函數jsVa(),其功能是:把千位數字和十位數字重新組成一個新的含有兩位數字的數ab(新數的十位數字是原四位數的千位數字,新數的個位數字是原四位數的十位數字),以及把個位數字和百位數字組成另一個新的含有兩位數字的數cd(新數的十位數字是原四位數的個位數字,新數的個位數字是原四位數的百位數字),如果新組成的兩個數ab-cd>=0且ab.cd<=10且兩個數均是奇數,同時兩個新數的十位數字均不為零,則將滿足此條件的四位數按從大到小的順序存入數組b中,并要計算滿足上述條件的四位數的個數cnt。最后main()函數調用寫函數writcDat()把結果cnt以及數組b中符合條件的四位數輸出到文件0ut.dat中。
【審題關鍵句】千位+十位組合與個位+百位組合,都是奇數,兩數相減結果大于等于0小于等于10,從大到小排序。
【解題思路】
①首先,本題要定義多個變量,包括兩侖循環變量循環i、j;用來存放四位數分解之后各位數的變量qw(千位)、bw(百位)、SW(十位)和gw(個位);兩個用來存放重新組合數字的變量newV1和newV2。
②通過for循環依次對數組中的每個四位數進行分解,每分解一個四位數,根據題目要求,對其各位數進行重新組合,形成兩個新的十位數,組合條件分別是原四位數的千位和十位組成一個十位數,個位和百位組成一個十位數,并將兩個新的十位數分別賦給變量newV1和newV2。
③數字重組完畢之后,再根據題目要求篩選滿足條件的四位數,本題需要考慮多個篩選條件:一是新組合的十位數中,其十位數不能為0,即原四位數的千位和個位數字不能為0;二是兩個新組合的十位數之差必須大于等于0小于等于10;三是兩個新組合的數字均為奇數。
④將同時滿足以上3個條件的四位數賦給數組b[cnt],同時數組下標值加1,當for循環執行完畢后,則將所有滿足條件的四位數全部存放到數組b[cnt]qb。
⑤最后通過兩個for循環,對數組b[cnt]中的元素按從大到小的順序排序,排序過程中,可用newV1或newV2作為數據交換的中間變量。
【參考答案】
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |