#include <stdio.h>
#include <ctype.h>
#include <string.h> #define NKEYS (sizeof keytab / sizeof(struct key)) struct key
{
char *word;
int count;
}; /*关键字列表(注意一定要按字典排序)*/
struct key keytab[15] =
{
"abort",0,
"break",0,
"clock",0,
"define",0,
"echo",0,
"fgetc",0,
"get",0,
"help",0,
"insert",0,
"jump",0,
"kind",0,
"long",0,
"malloc",0,
"null",0,
"operate",0 }; int binarysearch(char *word, struct key tab[], int n);
int getword(char *word); /*<The C programming language (second edition) 中的小练习> 功能:统计输入文本中关键字出现的次数。
*/
int main()
{
char word[30];
int n; while(getword(word) != 0 && strcmp(word,"quit") != 0)
{
if((n = binarysearch(word,keytab,NKEYS )) >= 0);
keytab[n].count++;
}
for(n = 0; n < NKEYS; n++)
{
if(keytab[n].count > 0)
printf("%s : %d\n",keytab[n].word,keytab[n].count);
} return 0;
} /*从输入端得到一个单词*/
int getword(char *word)
{ char c;
int i = 0; while(isspace(c = getchar()))
;
while(1)
{
if(c != '\n' && c != ' ' && c != '\t' && isalpha(c))
word[i++] = c;
if(c == '\n' || c == ' ' )
{
word[i] = '\0'; return i;
}
c = getchar();
}
return i;
} /*binarysearch 函数: 在tab[0]到tab[n]中查找单词*/
int binarysearch(char *word, struct key tab[], int n)
{
int mid,l,h,flag;
l= 0;
h = n - 1; while(l <= h)
{
mid = (l + h)/2;
if( (flag = strcmp(word,tab[mid].word)) < 0)
h = mid - 1;
else if(flag > 0)
l = mid + 1;
else
return mid; } return -1;
}

C 语言统计关键字出现次数的更多相关文章

  1. 统计C语言关键字出现次数

    统计C语言关键字出现次数 <C程序设计语言>K&R版本第6章结构6.3结构数组内容 /* Name: 统计c语言关键字出现次数 Copyright: Author: lingr7 ...

  2. C语言中关键字auto、static、register、const、volatile、extern的作用

    原文:C语言中关键字auto.static.register.const.volatile.extern的作用 关键字auto.static.register.const.volatile.exter ...

  3. 通过R语言统计考研英语(二)单词出现频率

    通过R语言统计考研英语(二)单词出现频率 大家对英语考试并不陌生,首先是背单词,就是所谓的高频词汇.厚厚的一本单词,真的看的头大.最近结合自己刚学的R语言,为年底的考研做准备,想统计一下最近考研英语( ...

  4. 扫二维码下载apk并统计被扫描次数(及微信屏蔽下载解决方案)

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5395715.html 需求:想让用户扫描一个二维码就能下载APP,并统计被扫描次数. 两种实现方法: 1.一 ...

  5. python统计元素重复次数

    python统计元素重复次数 # !/usr/bin/python3.4 # -*- coding: utf-8 -*- from collections import Counter arr = [ ...

  6. C语言中关键字volatile的含义【转】

    本文转载自:http://m.jb51.net/article/37489.htm 本篇文章是对C语言中关键字volatile的含义进行了详细的分析介绍,需要的朋友参考下 volatile 的意思是“ ...

  7. javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数

    javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数 function test(){ var bt = document.getElementById(" ...

  8. hash数组快速查找一个字符串中出现最多的字符,并统计出现的次数

    如何快速查找一个字符串中出现最多的字符,并统计出现的次数? 可以使用hash数组,也就是关联数组实现快速查找功能. function seek(str) { var hash = []; var ma ...

  9. 第二十一节:Java语言基础-关键字,标识符,注释,常量和变量,运算符

    Java语言基础-关键字,标识符,注解,常量和变量,运算符 class Demo { public static void main(String[] args){ System.out.printl ...

随机推荐

  1. iOS app 集成友盟推送问题

    之前做app推送主要是集成友盟SDK,在程序获取deviceToken时,老是提示如下错误: Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用 ...

  2. SQL Server索引进阶:第一级,索引简介

    这个并不是我翻译的,全文共有15篇,但我发现好多网站已经不全,所以自己整理. 原文地址: Stairway to SQL Server Indexes: Level 1, Introduction t ...

  3. HTML5API___manifest

    离线缓存 manifest 在html标签里面增加个属性 mainfest 就可以告诉浏览器缓存文件在哪里. <html manifest='show.manifest' xmlns=" ...

  4. WINFORM Tootip使用小结

    toolTip1.Active = true;   //激活工具提示,只有激活才会显示提示 toolTip1.IsBalloon = true;    //toolTip以气泡形式出现 toolTip ...

  5. Objective-c 数组对象

    首先我们必须知道数组的概念:数组是有序的对象集合,一般情况下,一个数组的对象都是相同类型的.数组当中也存在可变数组和不可变数组. 1. 不可变数组 (NSArray) 可变数组 NSMutable 是 ...

  6. LOJ 1370 Bi-shoe and Phi-shoe(欧拉函数的简单应用)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1370 题意:给你n个整数,第i个整数为Xi.定义phi(k)为k的欧拉函数值,设pi为 ...

  7. 关于CDH5.2+ 添加hive自定义UDAF函数的方法

  8. sqlserver 只有函数和扩展存储过程才能从函数内部执行

    一个SQLServer的自定义函数中调用一个自定义的存储过程,执行此函数后发出如下提示:“只有函数和扩展存储过程才能从函数内部执行". 原因:函数只能使用简单的sql语句,逻辑控制语句,复杂 ...

  9. 关于Class.forName(“com.mysql.jdbc.Driver”)--转

    传统的使用jdbc来访问数据库的流程为:Class.forName(“com.mysql.jdbc.Driver”);String url = “jdbc:mysql://localhost:3306 ...

  10. Java Socket 入门1

    由程序逻辑可以看到 这是一个 客户端和服务端一对一聊天的程序  首先由服务端说第一句话然后对话才开始 且只能客户端一行话  服务端再一行话 这样往复进行  客户端若想不等服务端回应继续说话是不行的 服 ...