題目:用C語言寫一個程序,輸入一個字符串,過濾此串,只保留字符串中的字母字符,并統(tǒng)計新生成的字符串中包含的字母個數(shù),要求用指針實現(xiàn)。
實現(xiàn):
#include <stdio.h>
#include <ctype.h>
int filterLetters(char *str);
int main() {
char str[100];
printf("請輸入一個字符串: ");
fgets(str, 100, stdin); // 獲取用戶輸入的字符串
int letters_count = filterLetters(str); // 調(diào)用函數(shù)過濾字母字符并統(tǒng)計個數(shù)
printf("過濾后的結果為: %s\n", str);
printf("過濾后的字符串中包含 %d 個字母\n", letters_count);
return 0;
}
int filterLetters(char *str) {
char *p1 = str, *p2 = str;
int count = 0;
while (*p2 != '\0') {
if (isalpha(*p2)) { // 判斷字符是否為字母
*p1++ = *p2; // 指針 p1 和 p2 分別指向相同的字母字符
count++; // 統(tǒng)計字母個數(shù)
}
p2++; // p2 每次移動指向下一個字符
}
*p1 = '\0'; // 將 p1 所在的位置賦值為 NULL,結束字符串
return count;
}
解釋1:
這段代碼實現(xiàn)了一個過濾字符串中非字母字符的功能,并統(tǒng)計字母個數(shù)。
- 首先,在主函數(shù)中,定義一個長度為100的字符數(shù)組str,用fgets函數(shù)從標準輸入獲取用戶輸入的字符串。
- 然后調(diào)用filterLetters函數(shù),利用指針p1和p2遍歷字符串中的每個字符,判斷是否為字母字符,
- 若是,則將其賦值給p1所指向的位置,并讓p1指向下一個位置,同時統(tǒng)計字母個數(shù)count;
- 若不是,則直接跳過該字符,繼續(xù)向后遍歷。最后,在filterLetters函數(shù)中,將p1所在的位置賦值為NULL,結束字符串,并返回字母個數(shù)count。
- 需要注意的是,isalpha函數(shù)是ctype.h頭文件中的一個函數(shù),用來判斷字符是否為字母,如果是則返回非零值(true),否則返回0(false)。此外,在使用fgets函數(shù)時,需要注意輸入字符串的長度不要超過數(shù)組str的長度,否則會導致數(shù)組越界的問題。
解釋2:
這段代碼的功能是從用戶輸入的字符串中過濾出字母字符,并統(tǒng)計字母字符的個數(shù),最后輸出過濾后的結果和字母字符的個數(shù)。文章來源:http://www.zghlxwxcb.cn/news/detail-477585.html
- 具體來說,代碼中首先包含了兩個頭文件:stdio.h 和 ctype.h。stdio.h 包含了一些標準輸入輸出函數(shù),而 ctype.h
包含了一些字符處理函數(shù),例如判斷一個字符是否為字母字符。 - 在 main 函數(shù)中,首先定義了一個 char 類型的數(shù)組 str,用于存儲用戶輸入的字符串。然后通過 fgets 函數(shù)從標準輸入流
stdin 中獲取用戶輸入的字符串,最多讀取 100 個字符,將其存儲在 str 數(shù)組中。 - 接著調(diào)用 filterLetters函數(shù)對字符串進行過濾,該函數(shù)的作用是將字符串中的字母字符保留下來,并且將它們移動到數(shù)組的前面,非字母字符則被忽略掉。該函數(shù)返回被保留下來的字母字符的個數(shù)。
- 在 filterLetters 函數(shù)中,首先定義兩個指針 p1 和 p2,分別指向字符串的開頭。然后使用一個 while循環(huán)遍歷整個字符串,如果當前字符是字母字符,則將其移動到 p1 所指向的位置,并將 p1 后移一位,同時統(tǒng)計字母字符的個數(shù)count。如果當前字符不是字母字符,則直接將 p2 后移一位。
- 最后,在字符串的末尾加上一個 NULL 字符,以表示字符串的結束。在 main 函數(shù)中,輸出過濾后的結果和字母字符的個數(shù)即可。
總之,這段代碼實現(xiàn)了一個簡單的字符串處理功能,能夠對用戶輸入的字符串進行一定的過濾和統(tǒng)計。文章來源地址http://www.zghlxwxcb.cn/news/detail-477585.html
到了這里,關于【藍橋杯算法題】字符串匹配算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!