编写一个函数,该函数能判断一个英文句子str(带空格)中是否含有某个单词w,如“How old are you?”含有“old”。在main函数中输入一个英文句子,再输入一个单词,如果英文句子中含有那
題目要求:
編寫一個(gè)C程序,實(shí)現(xiàn)以下功能:
編寫一個(gè)函數(shù),該函數(shù)能判斷一個(gè)英文句子str(帶空格(升級(jí)版))中是否含有某個(gè)單詞w,如“How old are you?”含有“old”。
在main函數(shù)中輸入一個(gè)英文句子,再輸入一個(gè)單詞,如果英文句子中含有那個(gè)單詞,則輸出“YES”,否則輸出“NO”
思路:
思路并不是很難。最主要的技術(shù)難點(diǎn)就是如果一個(gè)句子中有多個(gè)目標(biāo)單詞,但只有一個(gè)單詞是完全正確,其它有殘缺或者一個(gè)字母不對(duì)的情況要怎么處理。
怎么做到檢測空格后面的東西呢,scanf加載到‘\0’會(huì)自動(dòng)結(jié)束語句,空格和\n回車都算做是‘\0’;
for循環(huán)中實(shí)現(xiàn)單詞的檢索,如果檢索到正確字符,就將flag標(biāo)記成true,否則就標(biāo)記成flase
通過檢測flag的標(biāo)記情況來輸出答案。flag為真就代表存在單詞。
這里還存在一種情況,單詞部分拼錯(cuò),所以需要定義一個(gè)計(jì)數(shù)變量去檢測正確檢索到的單詞。
直接貼代碼,具體解釋在代碼段中
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdbool.h> #define MAX 20 /*編寫一個(gè)C程序,實(shí)現(xiàn)以下功能: 編寫一個(gè)函數(shù),該函數(shù)能判斷一個(gè)英文句子str(不帶空格)中是否含有某個(gè)單詞w,如“Howoldareyou?”含有“old”。 在main函數(shù)中輸入一個(gè)英文句子,再輸入一個(gè)單詞,如果英文句子中含有那個(gè)單詞,則輸出“YES”,否則輸出“NO”。 */void Estimate(char *str,char* word,int n) {char p;int count = 0;p = str;bool flag;flag = false;int i = 0;for (int i = 0; i < n && p != '\0'; i++)//為什么這里需要p != '\0'呢,因?yàn)橐獙?duì)空格情況進(jìn)行檢索,如果沒有這句話就會(huì)導(dǎo)致錯(cuò)誤{//for循環(huán)中實(shí)現(xiàn)單詞的檢索,如果檢索到正確字符,就將flag標(biāo)記成true,否則就標(biāo)記成flaseif (str[p] == word[i]) {p++;i++;flag = true;count++;}elseflag = false;}//通過檢測flag的標(biāo)記情況來輸出答案。flag為真就代表存在單詞。if (!flag && count == n)//這里還存在一種情況,單詞部分拼錯(cuò),所以定義一個(gè)計(jì)數(shù)變量去檢測正確檢索到的單詞。printf("Yes");elseprintf("No"); } int main() {char str[MAX];//自定義字符串char word[MAX];//目標(biāo)字符串gets(str);//在c++中g(shù)ets被列為危險(xiǎn)函數(shù),需要使用gets_s().gets(word);//gets可以做到對(duì)輸入的整一行加載到緩沖區(qū)中,也就是無論空格還是什么,只要沒有按下回車就會(huì)一直加載。Estimate(str, word, strlen(word)-1); }總結(jié)
以上是生活随笔為你收集整理的编写一个函数,该函数能判断一个英文句子str(带空格)中是否含有某个单词w,如“How old are you?”含有“old”。在main函数中输入一个英文句子,再输入一个单词,如果英文句子中含有那的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wxpython富文本_去除富文本编辑器
- 下一篇: 逻辑回归预测事件发生的概率_通过逻辑回归