Kamp;R練習題6-1統計關鍵詞出現的次數

這道練習題訓練了:

1.結構體數組

2.二分查找

3.指針操作

----

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

/** 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



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285611.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285611.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285611.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大話領域驅動設計——表示層及其他

概述表示層又稱用戶界面層&#xff0c;包含應用程序的頁面、組件等UI元素。服務層提供項目的HTTP API接口&#xff0c;包含MVC Controller和相關組件。ABP框架雖然在表示層提供了不少組件&#xff0c;但是這些和DDD本身沒有多少關系。而且隨著前后端分離架構的流行&#xff0c;…

C語言九十六之實現經典的字符串反轉(通過指針或下標操作)

?作者簡介&#xff1a;大家好我是碼莎拉蒂&#xff0c;CSDN博客專家&#x1f947;&#x1f947;&#x1f947; &#x1f4c3;個人主頁&#xff1a;個人主頁 &#x1f525;系列專欄&#xff1a;C語言試題200例 &#x1f4ac;推薦一款模擬面試、刷題神器&#x1f449; 點擊跳轉進…

Windows10家庭中文版沒有本地策略選項完美解決方案

Win+R,在運行中輸入:secpol.msc,查看安全設置是否打開,如下圖所示。 組策略對于優化和維護Windows系統來說十分重要。眾所周知,Windows 10家庭版中并不包含組策略,對于使用家庭版Windows的朋友來說,十分不方便。 通常情況下,如果策略組沒有打開的話,在安裝CAD等軟件時…

JavaScript總結(六)

使用DOM操縱樣式表 ? 操縱元素的Style樣式屬性&#xff08;所有的均對于CSS的內聯式&#xff09; 對于每個CSS樣式&#xff0c;Style對象都包含了一個相對應的屬性&#xff0c;只需要用到style屬性即可&#xff1b; Div.style.color "red"; //給div元素設置字體顏色…

[轉]淺談CMD和win powershell的區別

1、前言&#xff1a;本文給大家簡單描述了一下POWERSHELL和CMD的區別&#xff0c;簡單的說&#xff0c;Powershell是cmd的超集&#xff0c;換句話說&#xff0c;cmd能做的事情&#xff0c;Powershell都能做&#xff0c;但是Powershell還能額外做許多cmd不能做的活。 2、cmd是和…

【ArcGIS風暴】柵格計算器(Raster Calculator)運算出現錯誤問題及解決方案匯總

柵格計算器(Raster Calculator) 是一種空間分析函數工具,可以輸入地圖代數表達式,使用運算符和函數來做數學計算,建立選擇查詢,或鍵入地圖代數語法。只有熟練的運用并記憶一些常用的公式,才能很好的運用柵格計算器。在使用的過程中,容易出現這樣那樣的問題,本文就把柵…

「博客之星」評選,互投5星,留鏈必投

?? ? ?? 歡迎誠信互投? ? ? ?? ????? 謝謝各位大佬門&#xff0c;互投5星????? 投票地址&#xff1a; https://bbs.csdn.net/topics/603958492 投票地址&#xff1a; https://bbs.csdn.net/topics/603958492 投票地址&#xff1a; https://bbs.csdn.net…

為 ServiceCollection 實現裝飾器模式

為 ServiceCollection 實現裝飾器模式Intro在二十四種設計模式中&#xff0c;有一個模式叫做裝飾器模式一般用來動態地給一個對象添加一些額外的職責&#xff0c;就增加功能來說&#xff0c;裝飾模式比生成子類更為靈活&#xff0c;有更好的擴展性&#xff0c;我們也可以借助 D…

手把手教你啟用Win10的Linux子系統 Ubuntu

1、打開“開發者選項” 2、啟用“執行 Linux 程序的windows 子系統” 3、應用商店下載安裝Ubuntu 附&#xff1a;ubuntu的一些命令及查看已安裝軟件包的命令 // 系統 # uname -a # 查看內核/操作系統/CPU信息 # head -n 1 /etc/issue # 查看操作系統版本 # cat…

jquery的height()和javascript的height總結,js獲取屏幕高度

jquery的height()和javascript的height總結&#xff0c;js獲取屏幕高度在javascript和jquery中&#xff0c;都有對各種高度的寫法&#xff0c;在這里&#xff0c;我們就著重講一下窗口、文檔等高度的理解。(寬度和高度差不多&#xff01;)jquery的各種高度首先來說一說$(docume…

【地理信息系統GIS】教案(七章全)第五章:空間數據查詢與空間分析

目錄 第一節 空間數據查詢第二節 緩沖區分析第三節 疊置分析第四節 網絡分析第五節 DEM建立及分析第一節 空間數據查詢 1.1 空間數據查詢 1、空間數據查詢的含義 從空間數據庫中找出所有滿足屬性約束條件和空間約束條件的地理對象。 空間數據查詢的一般過程 2、空間數據查詢…

Understanding G1 GC Logs--轉載

原文地址&#xff1a;https://blogs.oracle.com/poonam/entry/understanding_g1_gc_logs Understanding G1 GC Logs By Poonam-Oracle on Jun 18, 2012 The purpose of this post is to explain the meaning of GC logs generated with some tracing and diagnostic options fo…

Dart語言精簡入門介紹

Dart語言精簡入門介紹 1、介紹 Dart 在設計時應該是同時借鑒了 Java 和 JavaScript和kotlin 面向對象 JIT&AOT&#xff1a;JIT&#xff08;Just in Time&#xff09;優點&#xff1a;即時編譯&#xff0c;開發期間更快編譯&#xff0c;更快的重載&#xff1b;缺點&#…

WPF 窗口居中 變更觸發機制

本文經原作者授權以原創方式二次分享&#xff0c;歡迎轉載、分享。原文作者&#xff1a;唐宋元明清原文地址&#xff1a;https://www.cnblogs.com/kybs0/p/7420767.html窗口居中 & 變更觸發機制解決&#xff1a;1&#xff09;單實例窗口&#xff0c;窗口每次隱藏后再顯示時…

[轉]5分鐘實現Android中更換頭像功能

5分鐘實現Android中更換頭像功能 寫在前面&#xff1a; 更換頭像這個功能在用戶界面幾乎是100%出現的。通過拍攝照片或者調用圖庫中的圖片&#xff0c;并且進行剪裁&#xff0c;來進行頭像的設置。 功能相關截圖如下&#xff1a; 下面我們直接看看完整吧&#xff1a; public cl…

Excel VBA窗體上打印系統時間print now出錯原因及解決方案

如圖所示,需要在窗體上顯示當前系統時間: 首先,我們看一下now函數的原型: Now 函數   語法:Now   說明:返回一個 Variant (Date),根據計算機系統設置的日期和時間來指定日期和時間。   示例: Private Sub CommandButton1_Click()Dim a As Varianta = NowMsgBox…

(第九周)團隊項目14

項目名&#xff1a;食物鏈教學工具 組名&#xff1a;奮斗吧兄弟 組長&#xff1a;黃興 組員&#xff1a;李俞寰、杜橋、欒驕陽、王東涵 代碼地址&#xff1a;HTTPS: https://git.coding.net/li_yuhuan/FoodChain.git SSH: gitgit.coding.net:li_yuhuan/FoodChain.git SCRUM會議…

為什么 C# 訪問 null 字段會拋異常?

一&#xff1a;背景 1. 一個有趣的話題最近在看 硬件異常 相關知識&#xff0c;發現一個有意思的空引用異常問題&#xff0c;拿出來和大家分享一下&#xff0c;為了方便講述&#xff0c;先上一段有問題的代碼。namespace ConsoleApp2 {internal class Program{static Person pe…

Android項目實戰(十五):自定義不可滑動的ListView和GridView

不可滑動的ListView (RecyclweView類似) public class NoScrollListView extends ListView {public NoScrollListView(Context context, AttributeSet attrs) {super(context,attrs);}public void onMeasure(int widthMeasureSpec, int heightMeasureSpec){ int mExpandSpec …

C語言試題一百之輸入某年某月某日,判斷這一天是這一年的第幾天

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:輸入某年某月某日,判斷這一天是這一年的第幾天? 分析: 以 3 月 5 日為例,應該先把…