摘要:希賽網(wǎng)為大家整理了2017上半年程序員考試案例分析真題,以下為第三部分?!驹囶}三】 閱讀下列說(shuō)明和C函數(shù),填補(bǔ)C函數(shù)中的空缺,將解答填入答案紙的對(duì)應(yīng)欄目?jī)?nèi)?!菊f(shuō)明】
希賽網(wǎng)為大家整理了2017上半年程序員考試案例分析真題,以下為第三部分。
【試題三】
閱讀下列說(shuō)明和C函數(shù),填補(bǔ)C函數(shù)中的空缺,將解答填入答案紙的對(duì)應(yīng)欄目?jī)?nèi)。
【說(shuō)明】
字符串是程序中常見(jiàn)的一種處理對(duì)象,在字符串中進(jìn)行子串的定位、插入和刪除是常見(jiàn)的運(yùn)算。
設(shè)存儲(chǔ)字符串時(shí)不設(shè)置結(jié)束標(biāo)志,而是另行說(shuō)明串的長(zhǎng)度,因此串類型定義如下:
Typedef struct﹛
Char*str//字符串存儲(chǔ)空間的起始地址
int lehgth//字符串長(zhǎng)
int capacity//存儲(chǔ)空間的容量
﹜SString;
【函數(shù)1說(shuō)明】
函數(shù)indexStr(S,T,pos)的功能是:在S所表示的字符串中,從下標(biāo)pos開(kāi)始查找T所表示字符串首次出現(xiàn)的位置。方法是:第一趟從S中下標(biāo)為pos、T中下標(biāo)偉0的字符開(kāi)始,從左往右逐個(gè)對(duì)于來(lái)比較S和T的字符,直到遇到不同的字符或者到達(dá)T的末尾。若到達(dá)T的末尾,則本趟匹配的起始下標(biāo)pos為T出現(xiàn)的位置,結(jié)束查找;若遇到了不同的字符,則本趟匹配失效。下一趟從S中下標(biāo)pos+1處的字符開(kāi)始,重復(fù)以上過(guò)程。若在S中找到T,則返回其首次出現(xiàn)的位置,否則返回-1。
例如,若S中的字符串偉″students ents″,T中的字符串偉″e(cuò)nt″,pos=0,則T在S中首次出現(xiàn)的位置為4。
【C函數(shù)1】
int index Str(SString S,SString T,int pos)
﹛
int i,j:
i(S.length<1||S.length<pos+T.length-1)
return-1;
for(i=pos,j=0;i<S.length&&j<T.length;)﹛
if(S.str<i>==T.str[j])﹛
i++;j++;
﹜
else﹛
i=();j=0
﹜
﹜
if()return i-T.length;
return-1;
﹜
【函數(shù)2說(shuō)明】
函數(shù)eraseS位(S,T}的功能是刪除字符串S中所有與T相同的子串,其處理過(guò)程為:首先從字符串S的第一個(gè)字符(下標(biāo)為0)開(kāi)始查找子串T,若找到〈得到子串在S中的起始位置),則將串S中子串T之后的所有字符向前移動(dòng),將子串T覆蓋,從而將其刪除,然后重新開(kāi)始查找下一個(gè)子串T,若找到就用后面的宇符序列進(jìn)行覆蓋,重復(fù)上述過(guò)程,直到將S中所有的子串T刪除。
例如,若字符串S為“12ab345abab678”、T為“ab”。第一次找到"ab"時(shí)(位置為(2),將"345abab678"前移,S中的串改為"12345abab678",第二次找到"ab"時(shí)(位置為5);將ab678前移,S中的串改為"12345ab678",第三次找到"ab"時(shí)(位置為5);將“678‘前移,S中的串改為"12345678"。
【C函數(shù)2】
Void eraseStr(SString*S,SStringT)
﹛
int i;
int pos;
if(S->;length<||T.length<1||S->length<T.length)
return;
Pos=0
for(;;)﹛
//調(diào)用indexStr在S所表示串的pos開(kāi)始查找T的位置
Pos=indexStr();
if(pos=-1)//S所表示串中不存在子串T
return;
for(i=pos+T.length;i<S->t;length;i++)//通過(guò)覆蓋來(lái)刪除自串T
S->str[()]=S->;str>[i]
S->length=();//更新S所表示串的長(zhǎng)度
﹜
﹜
>>>>返回目錄:2017上半年程序員考試案例分析真題(匯總)
>>>>進(jìn)入估分:2017上半年軟考分?jǐn)?shù)早知道,在線估分+真題解析
>>>>點(diǎn)擊查看:2017上半年程序員上午真題答案和解析
軟考備考資料免費(fèi)領(lǐng)取
去領(lǐng)取
共收錄117.93萬(wàn)道題
已有25.02萬(wàn)小伙伴參與做題