⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 countlet.c

📁 c语言开发方面的经典问题,包括源代码.c语言开发所要注意的问题,以及在嵌入式等各方面的应用
💻 C
字号:
/* * File: countlet.c * ---------------- * This program counts the occurrences of individual letters * that appear in text read in from the user.  This program * might be useful as a tool in solving cryptograms. */#include <stdio.h>#include <ctype.h>#include "simpio.h"#include "strlib.h"#include "genlib.h"/* * Constants * --------- * MaxLines -- Maximum number of input lines * NLetters -- Number of letters */#define MaxLines 100#define NLetters  26/* Private function declarations */static void CountLetters(int letterCounts[]);static void CountLettersInString(string str, int letterCounts[]);static void RecordLetter(char ch, int letterCounts[]);static void DisplayLetterCounts(const int letterCounts[]);static int LetterIndex(char ch);void ClearIntegerArray(int array[], int n);/* Main program */main(){    int letterCounts[NLetters];    printf("This program counts letter frequencies.\n");    printf("Enter a blank line to signal end of input.\n");    ClearIntegerArray(letterCounts, NLetters);    CountLetters(letterCounts);    DisplayLetterCounts(letterCounts);}/* * Function: CountLetters * Usage: CountLetters(letterCounts); * ---------------------------------- * This function updates the values in the letterCounts array * by scanning through a series of strings read in from the * user.  A blank line is used to signal the end of the input * text. */static void CountLetters(int letterCounts[]){    string line;    while (TRUE) {        line = GetLine();        if (StringLength(line) == 0) break;        CountLettersInString(line, letterCounts);    }}/* * Function: CountLettersInString * Usage: CountLettersInString(str, letterCounts); * ----------------------------------------------- * This function updates the values in the letterCounts array for * each character in the string str. */static void CountLettersInString(string str, int letterCounts[]){    int i;    for (i = 0; i < StringLength(str); i++) {        RecordLetter(IthChar(str, i), letterCounts);    }}/* * Function: RecordLetter * Usage: RecordLetter(ch, letterCounts); * -------------------------------------- * This function records the fact that the character ch has * been seen by incrementing the appropriate element in the * letterCounts array.  Non-letters are ignored. */void RecordLetter(char ch, int letterCounts[]){    int index;    index = LetterIndex(ch);    if (index != -1) letterCounts[index]++;}/* * Function: DisplayLetterCounts * Usage: DisplayLetterCounts(letterCounts); * ----------------------------------------- * This function displays the letter frequency table, leaving * out any letters that did not occur. */void DisplayLetterCounts(const int letterCounts[]){    char ch;    int num;    for (ch = 'A'; ch <= 'Z'; ch++) {        num = letterCounts[LetterIndex(ch)];        if (num != 0) printf("%c  %4d\n", ch, num);    }}/* * Function: LetterIndex * Usage: index = LetterIndex(ch); * ------------------------------- * This function converts a character into the appropriate index * for use with the letterCounts array.  In this implementation, * LetterIndex converts characters in either case to an integer * in the range 0 to 25.  If ch is not a valid letter, LetterIndex * returns -1.  Clients should check for a -1 return value unless * they are able to guarantee that the argument is a letter. */int LetterIndex(char ch){    if (isalpha(ch)) {        return (toupper(ch) - 'A');    } else {        return (-1);    }}/* * Function: ClearIntegerArray * Usage: ClearIntegerArray(array, n); * ----------------------------------- * This function sets the first n elements in the array to 0. */void ClearIntegerArray(int array[], int n){    int i;    for (i = 0; i < n; i++) {        array[i] = 0;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -