【考點分析】 本題考查對整數(shù)的篩選及數(shù)組排序?疾榈闹R點主要包括:C語言循環(huán)結(jié)構(gòu),邏輯表達式等。
【解題思路】 此題屬于2位數(shù)的篩選題。分析題干要求,本題要求實現(xiàn)jsVal()函數(shù)的功能,歸納可以得出2個問題:問題1如何根據(jù)判斷條件(數(shù)組a和b中相同下標(biāo)位置的數(shù)必須符合一個是偶數(shù),另一個是奇數(shù))篩選出滿足條件的數(shù),同時統(tǒng)計其個數(shù),問題2如何將這些數(shù)按從小到大的書序排列。
通過問題分析,得出解此題的思路為:先根據(jù)題目中的條件篩選出滿足條件的數(shù)并存入新的數(shù)組中,再對新數(shù)組進行排序。對于問題1通過if條件判斷語句和邏輯表達式可以實現(xiàn)。問題2排序可以通過循環(huán)嵌套的起泡法實現(xiàn)。
【參考答案】
void jsVal()
{
int i,j; /*定義循環(huán)變量*/
int temp; /*用于存儲排序中的中間變量*/
for (i = 0;i <= MAX - 1;i++) /*循環(huán)查找符合條件的元素*/
if (((a[i] % 2 == 0) && (b[i] % 2 != 0)) || ((a[i] % 2 != 0) && (b[i] % 2 == 0))){ /*判斷數(shù)組a和b中相同下標(biāo)位置的數(shù)是否符合一個是偶數(shù),另一個是奇數(shù)*/
c[i] = (a[i]<<8) + b[i]; /*a[i]按二進制左移8位再加上b[i]*/
cnt++; /*記錄c中個數(shù)*/
}
for (i = 0;i < MAX - 1;i++) /*將C中的元素按從小到大順序排列*/
for (j = 0;j < MAX - i - 1; j++)
if (c[j] > c[j+1]){
temp = c[j];
c[j] = c[j + 1];
c[j+1] = temp;
}
}
【易錯提示】 分解4位數(shù)算法的使用, 對4位數(shù)篩選和排序時if結(jié)構(gòu)中的邏輯表達式。
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |