日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kamp;R练习题6-1统计关键词出现的次数

發(fā)布時間:2023/12/9 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kamp;R练习题6-1统计关键词出现的次数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這道練習(xí)題訓(xùn)練了:

1.結(jié)構(gòu)體數(shù)組

2.二分查找

3.指針操作

----

都不難。但非常基礎(chǔ),我認(rèn)為非常好,做完了記到博客上來,題目見k&R,實現(xiàn)例如以下:

/** Practice of struct array. K&R 6-1* @author : wusuopubupt* @date : 2014-09-18*/#include <stdio.h> #include <ctype.h> #include <string.h>#define MAXWORD 100typedef struct key_{char *word;int count; } key;key key_tab[] = {{"auto", 0},{"break", 0},{"case", 0},{"char", 0},{"const", 0},{"continue", 0},{"default", 0},{"for", 0},{"int", 0},{"void", 0},{"while", 0} };int getword(char *word, int n); int binary_search(key key_tab[], char *word, int n); key *binary_search2(key *key_tab, char *word, int n);int getword(char *word, int n) {int c;char *w = word;while(isspace(c = getchar())) {;}if(c != EOF) {*w++ = c;}if(!isalpha(c)) {*w = '\0';return c;}while(n > 0) {c = getchar();if(isalnum(c)) {*w++ = c;}else {break;}n--;}*w = '\0';return w[0]; }int binary_search(key key_tab[], char *word, int n) {int low = 0;int high = n-1;int mid;int result;while(low <= high) {mid = (low+high) / 2;result = strcmp(word, key_tab[mid].word);if(result < 0) {high = mid-1;}else if(result > 0) {low = mid + 1;}else {return mid;}}return -1; }/* implemented with pointer */ key *binary_search2(key *key_tab, char *word, int n) {key *low = key_tab;key *high = key_tab + n-1;key *mid;int result;while(low <= high) {//mid = (low+high) / 2; /* error: can not use pointer+pointer d*/mid = low + (high-low) / 2; /* pointer + num */result = strcmp(word, mid->word);if(result < 0) {high = mid-1;}else if(result > 0) {low = mid + 1;}else {return mid;}}return NULL; }int main1() {int i;int n_keys = sizeof(key_tab) / sizeof(key_tab[0]);char word[MAXWORD];while(getword(word, MAXWORD) != EOF) {if(isalpha(word[0])) {if((i = binary_search(key_tab, word, n_keys)) >= 0) {key_tab[i].count++;}}}i = 0;while(i < n_keys) {printf("%s : %d\n", key_tab[i].word, key_tab[i].count);i++;}return 0; }int main() {int n_keys = sizeof(key_tab) / sizeof(key_tab[0]);char word[MAXWORD];key *k = NULL;while(getword(word, MAXWORD) != EOF) {if(isalpha(word[0])) {if((k = binary_search2(key_tab, word, n_keys)) != NULL) {k->count++;}}}int i = 0;while(i < n_keys) {printf("%s : %d\n", key_tab[i].word, key_tab[i].count);i++;}return 0; }


github:https://github.com/wusuopubupt/LearningC/blob/master/K%26R/chp6/keyword_count.c



總結(jié)

以上是生活随笔為你收集整理的Kamp;R练习题6-1统计关键词出现的次数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。