zoukankan      html  css  js  c++  java
  • C 语言统计关键字出现次数

    #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
    ",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 != '
    ' && c != ' ' && c != '	' && isalpha(c))
    	     word[i++] = c;
    	  if(c == '
    ' || c == ' ' )
    	  {   
    		  word[i] = '';
    		  
    		  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;
    }


  • 相关阅读:
    第5节 两牵引轴同步运动
    第4节 动一个牵引轴
    第3节 电控配置简介
    第2节 控制方案的制定
    第1节 中型PLC基本编程思路
    1200与VM(主动)之间的TCP/IP通讯
    西门子1200和温度计的模拟量应用
    西门子1200的高速计数功能和增量编码器功能
    西门子1200和V90之间(位置模式)的PID应用
    面试题68
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3202794.html
Copyright © 2011-2022 走看看