一个用于统计输入中各个C语言关键字出现次数的程序
2013-10-31 18:36
381 查看
考虑写一个用于统计输入中各个C语言关键字出现次数的程序。我们可以用一个字符串数组来存放关键字名,一个整型数组存放相应关键字的出现次数。
另外一种方法是我们直接用结构体来表示。本例采用用结构体的方法。
完整代码如下:
程序运行结果:
另外一种方法是我们直接用结构体来表示。本例采用用结构体的方法。
完整代码如下:
#include <stdio.h> #include <ctype.h> #include <string.h> #define MAXWORD 100 #define NKEYS (sizeof(keytab) / sizeof(keytab[0])) int getword(char *, int); //int binsearch(char *, struct key *, int); struct key { char *word; int count; } keytab[] = { "auto", 0, "break", 0, "case", 0, "char", 0, "const", 0, "continue", 0, "default", 0, "do", 0, "double", 0, "else", 0, "enum", 0, "extern", 0, "float", 0, "for", 0, "goto", 0, "if", 0, "int", 0, "long", 0, "register", 0, "return", 0, "short", 0, "signed", 0, "sizeof", 0, "static", 0, "struct", 0, "switch", 0, "typedef", 0, "union", 0, "unsigned", 0, "void", 0, "volatile", 0, "while", 0 }; int main(void) { int n; char word[MAXWORD]; while(getword(word, MAXWORD) != EOF) if(isalpha(word[0])) if((n = binsearch(word, keytab, NKEYS)) >= 0) keytab .count++; for(n=0; n<NKEYS; n++) if(keytab .count > 0) printf("%4d %s\n", keytab .count, keytab .word); return 0; } int binsearch(char *word, struct key *keytab, int n) { int cond; int low = 0; int high = n - 1; int mid; while(high >= low) { mid = low + (high - low) / 2; if((cond = strcmp(word, keytab[mid].word)) < 0) high = mid - 1; else if(cond > 0) low = mid + 1; else return mid; } return -1; } int getword(char *word, int lim) { int c, getch(void); void ungetch(int); char *w = word; while(isspace(c = getch())) ; if(c != EOF) *w++ = c; if(!isalpha(c)) { *w = '\0'; return c; } for(; --lim > 0; w++) if(!isalnum(*w = getch())) { ungetch(*w); break; } *w = '\0'; return word[0]; } #define BUFSIZE 100 char buf[BUFSIZE]; int bufp = 0; int getch(void) { return (bufp > 0) ? buf[--bufp] : getchar(); } void ungetch(int c) { if(bufp > BUFSIZE) printf("ungetch: too many characters"); else buf[bufp++] = c; }
程序运行结果:
相关文章推荐
- 编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数
- C语言:编写一个程序统计输入字符串中,各个数字、空白字符、以及其他所有字符出现的次数。
- 【C语言】编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数。
- go语言之map练习(二):编写一个程序wordfreq程序,统计输入文本中每个单词出现的频率(次数)
- C语言:编写一个程序统计输入字符串中,各个数字、空白字符、以及其他所有字符出现的次数。
- 编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数
- 一个用来统计c语言关键字出现次数的程序
- 【C语言】编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数。
- 编写一个程序统计输入字符串中:各个数字,空白字符,以及其他所有字符常出现的次数。
- 每天一个小程序—0004题(统计单词出现次数)
- 对于给定的一个字符串,统计其中数字字符出现的次数。输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。
- 用c语言编程 统计输入的一个字符串中每个字母出现的次数
- 意外收获-ruby编写的一个简单统计单词出现次数的程序
- 一个利用map统计一段英文文章中每个单词出现次数的小程序
- 练习2-4:编一个程序统计文件中特定单词出现的次数(要求使用string类的运算符==来查找单词) .
- 写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。
- 编写一个程序读取输入,直到‘#’,并报告序列 ei 出现的次数
- 统计一个长度为2的子字符串在另一个字符串中出现的次数.例如:假定输入的字符串为“asd asasdfg asd as zx67 asd mklo”,子字符串为“as”,函数返回值为6。
- 编写一个小程序,从标准输入读入一系列string对象,寻找连续重复出现的单词。程序应该找出满足一下条件的单词:该单词的后面紧接着再次出现自己本身。跟踪重复次数最多的单词及其重复次数,输出.
- 手动输入一个字符串,仅限小写字母,统计并输出每个字符在字符串中出现的次数,并输出。