【考點分析】 本題考查對字符數(shù)組中的字符計算?疾榈闹R點主要包括:字符串?dāng)?shù)組的訪問,字符ASCII碼的算術(shù)運算,if判斷結(jié)構(gòu)以及邏輯表達式。
【解題思路】 首先通讀題目,得知此題屬于字符計算問題;其次分析題干要求,本題要求實現(xiàn)ChA(void)函數(shù)的功能,分析后可以歸納出3個關(guān)鍵點:關(guān)鍵點1如何對字符數(shù)組的元素逐一訪問;關(guān)鍵點2按照要求取每個位置的字符和其下一個字符相加,并將結(jié)果作為該位置上的新字符,需要注意的是,末尾位置的新字符是該位原字符和第1個原字符相加的結(jié)果;關(guān)鍵點3最后要將所得的結(jié)果逆序保存。
接著分析每一步的解決方法,對于關(guān)鍵點1通過字符串處理函數(shù)strlen獲取字符串的長度,再通過獲得的長度用下標(biāo)法對字符數(shù)組的字符元素逐一訪問;關(guān)鍵點2在遍歷訪問字符時,可以直接取下一個位置的字符進行運算,在進行計算之前需要首先保存第1個位置的字符,以作為計算最后位置新字符的條件;關(guān)鍵點3可以通過for循環(huán)對數(shù)組從首尾同時遍歷的算法實現(xiàn)。
【參考答案】
void ChA(void)
{
int i,j,k; /*定義循環(huán)控制變量*/
int str; /*存儲字符串的長度*/
char ch,temp; /*定義字符暫存變量*/
for(i=0;i { str=strlen(xx[i]); /*求得當(dāng)前行的字符串長度*/ ch=xx[i][0]; /*將第一個字符暫存入ch*/ for(j=0;j /*將該字符的ASCII值賦值為下一個字符的ASCII值加1,得到新的字符*/ xx[i][j]+=xx[i][j+1]; xx[i][str-1]+=ch; /*將最后一個字符的ASCII值與第一個字符的ASCII值相加,得到最后一個新的字符*/ for(j=0,k=str-1;j { temp=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][k]=temp; } } } 【易錯提示】 最后一個字符的計算,逆序存儲算法的選擇。 相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |