原始代码:
int s; s = ch; switch (s) { case ‘a‘:letter[0]++; break; case ‘b‘:letter[1]++; break; case ‘c‘:letter[2]++; break; case ‘d‘:letter[3]++; break; case ‘e‘:letter[4]++; break; case ‘f‘:letter[5]++; break; case ‘g‘:letter[6]++; break; case ‘h‘:letter[7]++; break; case ‘i‘:letter[8]++; break; case ‘j‘:letter[9]++; break; case ‘k‘:letter[10]++; break; case ‘l‘:letter[11]++; break; case ‘m‘:letter[12]++; break; case ‘n‘:letter[13]++; break; case ‘o‘:letter[14]++; break; case ‘p‘:letter[15]++; break; case ‘q‘:letter[16]++; break; case ‘r‘:letter[17]++; break; case ‘s‘:letter[18]++; break; case ‘t‘:letter[19]++; break; case ‘u‘:letter[20]++; break; case ‘v‘:letter[21]++; break; case ‘w‘:letter[22]++; break; case ‘x‘:letter[23]++; break; case ‘y‘:letter[24]++; break; case ‘z‘:letter[25]++; break; case ‘A‘:letter[0]++; break; case ‘B‘:letter[1]++; break; case ‘C‘:letter[2]++; break; case ‘D‘:letter[3]++; break; case ‘E‘:letter[4]++; break; case ‘F‘:letter[5]++; break; case ‘G‘:letter[6]++; break; case ‘H‘:letter[7]++; break; case ‘I‘:letter[8]++; break; case ‘J‘:letter[9]++; break; case ‘K‘:letter[10]++; break; case ‘L‘:letter[11]++; break; case ‘M‘:letter[12]++; break; case ‘N‘:letter[13]++; break; case ‘O‘:letter[14]++; break; case ‘P‘:letter[15]++; break; case ‘Q‘:letter[16]++; break; case ‘R‘:letter[17]++; break; case ‘S‘:letter[18]++; break; case ‘T‘:letter[19]++; break; case ‘U‘:letter[20]++; break; case ‘V‘:letter[21]++; break; case ‘W‘:letter[22]++; break; case ‘X‘:letter[23]++; break; case ‘Y‘:letter[24]++; break; case ‘Z‘:letter[25]++; break; }
开始写时,也觉得这样的表述不够简洁。但由于当时写了好长时间的代码,思路也不是很清晰,就用这种相对来说比较笨的方法。事后也忘记来修改更新这一部分。
以下是更改后的代码:
int j; char i; for (i = ‘a‘, j = 0; i <= ‘z‘; i++, j++) { if (ch == i) { letter[j]++; break; } } for (i = ‘A‘, j = 0; i <= ‘z‘; i++, j++) { if (ch == i) { letter[j]++; break; } }
使用的是ASCILL码来控制。char型变量i从a开始一直加到z,用来比较字符是否相等。int型变量j从0开始,用来控制对应的数组下标。
文件输入的路径可能会很长,而我之间数组大小设为20,这是远远不够的,我也对此做出了修改
char filename[50];
长度改为50。
新增加模块:字符的分类统计,把字母和符号分开来统计计数。新增函数void Sort(char ch);代码如下:
void Sort(char ch) { if ((ch >= ‘a‘ && ch <= ‘z‘) || (ch >= ‘A‘ && ch <= ‘Z‘)) { chnum++; return; } else signum++; }
chnum用来记录字母的数量,signum用来记录符号的数量。初值都为0。
以上就是我对wordcount的修改,其中还是存在很多的不足,希望大家多提宝贵意见。特别要感谢邹欣老师阅读我的博客,并且提出宝贵的意见。让我能使我的程序更加优化。
时间: 2024-10-30 09:11:04