【考點(diǎn)分析】 本題考查對(duì)一定范圍內(nèi)整數(shù)的篩選�?疾榈闹R(shí)點(diǎn)主要包括:多位整數(shù)的分解算法,素?cái)?shù)的判斷算法,if判斷語句和邏輯表達(dá)式。
【解題思路】 此題屬于數(shù)學(xué)類問題。分析題干要求,歸納出本題的2個(gè)關(guān)鍵點(diǎn):關(guān)鍵點(diǎn)1判斷該數(shù)是否為素?cái)?shù);關(guān)鍵點(diǎn)2判斷是否滿足條件:個(gè)位數(shù)字和十位數(shù)字之和被10除所得余數(shù)等于百位數(shù)字。
本題思路為:通過循環(huán)語句,依次求出所有3位數(shù)的各位數(shù)數(shù)字,并判斷是否滿足關(guān)鍵點(diǎn)2(個(gè)位數(shù)字和十位數(shù)字之和被10除所得余數(shù)等于百位數(shù)字),如果滿足則判斷該數(shù)是否為素?cái)?shù),如果是則個(gè)數(shù)加1,并將該數(shù)加到和值中。判斷的方法為:依次取從2到該數(shù)1/2的數(shù)去除這個(gè)數(shù),如果有一個(gè)可被整除,則不是素?cái)?shù),如果循環(huán)后的數(shù)大于該數(shù)的一半就可以判定該數(shù)是一個(gè)素?cái)?shù)。
【參考答案】
void countValue()
{
int i,j; /*定義循環(huán)控制變量*/
int half;
int a3,a2,a1; /*定義變量存儲(chǔ)3位數(shù)每位的數(shù)字*/
for(i=101;i<1000;i++) /*在該范圍內(nèi)尋找符合條件的數(shù)*/
{
a3=i/100; /*求百位數(shù)字*/
a2=i%100/10; /*求十位數(shù)字*/
a1=i%10; /*求個(gè)位數(shù)字*/
if(a3==(a2+a1)%10) /*如果個(gè)位數(shù)字與十位數(shù)字之和被10除所得余數(shù)恰是百位數(shù)字*/
{
half=i/2;
for(j=2;j<=half;j++) /*進(jìn)一步判斷該數(shù)是否為素?cái)?shù)*/
if(i%j==0) break; /*如果不是素?cái)?shù),則跳出循環(huán),接著判斷下一個(gè)數(shù)*/
if(j>half) /*如果是素?cái)?shù)*/
{
cnt++; /*計(jì)算這些素?cái)?shù)的個(gè)數(shù)cnt*/
sum+=i; /*計(jì)算這些素?cái)?shù)值的和sum*/
}
}
}
}
【易錯(cuò)提示】 素?cái)?shù)的判斷算法使用錯(cuò)誤,分解整數(shù)各個(gè)數(shù)位的方法錯(cuò)誤,if判斷語句中邏輯表達(dá)式錯(cuò)誤。
【考點(diǎn)分析】 本題考查結(jié)構(gòu)體數(shù)組的排序�?疾榈闹R(shí)點(diǎn)主要包括:結(jié)構(gòu)體成員運(yùn)算,字符串比較符,數(shù)組排序。
【解題思路】 此題屬于銷售記錄排序類題型。此類題型主要考查對(duì)結(jié)構(gòu)體數(shù)組的排序。解題時(shí),應(yīng)注意3個(gè)關(guān)鍵點(diǎn):關(guān)鍵點(diǎn)1如何按產(chǎn)品名稱從小到大排序;關(guān)鍵點(diǎn)2如果產(chǎn)品名稱相同;關(guān)鍵點(diǎn)3如何按金額從小到大排列。
數(shù)組排序可以用起泡法實(shí)現(xiàn),起泡法的思路是:將較小的值像空氣泡一樣逐漸"上浮"到數(shù)組的頂部,而較大的數(shù)值逐漸"下沉"到數(shù)組的底部。具體為第1趟用第1個(gè)記錄和第2個(gè)記錄進(jìn)行比較,如果不符合要求,就進(jìn)行交換,第2個(gè)記錄和第3個(gè)記錄比較,直到倒數(shù)第2個(gè)記錄和最后1個(gè)記錄比較完成;第2趟用第2個(gè)記錄和第3個(gè)記錄比較,然后第3個(gè)和第4個(gè)比較,依此類推。
本題在雙循環(huán)中進(jìn)行每次記錄比較時(shí),首先用字符串比較函數(shù)strcmp比較兩個(gè)產(chǎn)品的名稱,如果返回的值大于0,則這兩個(gè)產(chǎn)品進(jìn)行數(shù)據(jù)交換;如果返回值等于0,再比較兩個(gè)產(chǎn)品的金額,如果前一個(gè)產(chǎn)品的金額大于后一個(gè)產(chǎn)品的金額,則這兩個(gè)產(chǎn)品進(jìn)行數(shù)據(jù)交換。
【參考答案】
void SortDat()
{
int i,j; /*定義循環(huán)控制變量*/
PRO temp; /*定義數(shù)據(jù)交換時(shí)的暫存變量(這里是PRO類型的結(jié)構(gòu)體變量)*/
for(i=0;i<99;i++) /*利用選擇法進(jìn)行排序*/
for(j=i+1;j<100;j++)
if(strcmp(sell[i].mc,sell[j].mc)>0) /*按產(chǎn)品名稱從小到大進(jìn)行排列*/
{
temp=sell[i];
sell [i]=sell[j];
sell[j]=temp;
}
else if(strcmp(sell[i].mc,sell[j].mc)==0) /*若產(chǎn)品名稱相同*/
if(sell[i].je>sell[j].je) /*則按金額從小到大進(jìn)行排列*/
{
temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
}
模板一 銷售記錄排序
【模板速記】
記憶口訣:一定義二循環(huán)三比較。定義指定義變量,循環(huán)指循環(huán)語句,比較是比較記錄成員大小及交換,詳見模板一。做題時(shí),需靈活應(yīng)用模板,切勿死記硬背。
【易錯(cuò)提示】 結(jié)構(gòu)型數(shù)據(jù)對(duì)成員的訪問用"."成員運(yùn)算符;兩個(gè)字符串的比較用字符串比較函數(shù)strcmp。
相關(guān)推薦:
2014年計(jì)算機(jī)等級(jí)考試過關(guān)技巧
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |