查看匯總:2014計算機三級《數(shù)據(jù)庫》上機例題精講匯總
【考點分析】 本題考查對字符串的查找和統(tǒng)計?疾榈闹R點包括:指針對字符串的訪問方法,C語言循環(huán)嵌套結(jié)構(gòu)。
【解題思路】 首先通讀題目,得知此題屬于字符串處理問題;其次分析題干要求,本題要求實現(xiàn)findStr(char *str, char *sunstr)函數(shù),該函數(shù)需要實現(xiàn)在一個字符串中查找另一個字符串,并統(tǒng)計出現(xiàn)次數(shù)的功能,分析后可以歸納出實現(xiàn)功能的3個關(guān)鍵點;關(guān)鍵點1如何實現(xiàn)對字符串中字符的遍歷;關(guān)鍵點2如何實現(xiàn)對子字符串的查找功能;關(guān)鍵點3如何統(tǒng)計子串其出現(xiàn)的次數(shù)。
接著分析每一步的解決方法。對于關(guān)鍵點1使用循環(huán)和指針的方式可以實現(xiàn)對字符串的訪問;關(guān)鍵點2通過嵌套的循環(huán)可以實現(xiàn)查找功能,具體方法是,外層循環(huán)控制對主串的遍歷,內(nèi)層是對子串的遍歷,當主串中當前字符和子串第1個字符相同時,繼續(xù)判斷其后的字符是否和子串的下一個字符相同,依次類推,則每次內(nèi)層循環(huán)遍歷過子串就表示找到一次;關(guān)鍵點3每找到一次子串的同時,累加一個記數(shù)器,作為出現(xiàn)次數(shù)的統(tǒng)計結(jié)果。
【參考答案】
int findStr(char *str,char *substr)
{
int n=0; /*定義計數(shù)器變量,統(tǒng)計出現(xiàn)次數(shù)*/
char *p,*r; /*定義指針變量來分別指向兩個字符串*/
while(*str) /*如果字符串沒有結(jié)束,則一直循環(huán)下去*/
{
p=str; /*指針p指向字符串首地址*/
r=substr; /*指針r指向子字符串首地址*/
while(*r) /*若子字符串沒有結(jié)束,則循環(huán)繼續(xù)*/
if(*r==*p) /*如果子字符串的第一個字符等于字符串中的該字符,則繼續(xù)比較下一個字符*/
{
r++;
p++;
}
else
break; /*否則退出循環(huán)*/
if(*r=='\0') /*如果子字符串在字符串中出現(xiàn)了一次*/
n++; /*則n加1,進行統(tǒng)計*/
str++; /*指向字符串中的下一個字符*/
}
return n; /*返回統(tǒng)計結(jié)果n*/
}
【易錯提示】 遍歷字符串時指針的使用;查找子串的算法使用。
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |