C语言实现字符串最长与最短单词查找的方法及代码
如何编程查找字符串中的最短单词与最长单词
以下是基于C语言的实现,包含变量说明和完整代码:
变量作用说明
keep:遍历字符串时,记录当前正在统计的单词长度position_max、position_min:分别存储最长、最短单词的末尾字符下标max、min:逐词比对过程中,暂存当前找到的最长、最短单词长度lenght:存储待处理字符串的总长度
C语言实现代码
#include <limits.h> #include <stdio.h> #include <string.h> #include <ctype.h> #include <stdlib.h> int main(void) { char *stringa = "alex keep all money"; size_t x = 0; int keep; int min; int max; int position_max; int position_min; int lenght; keep = 0; max = 0; min = INT_MAX; position_max = 0; lenght = strlen(stringa); while (x != lenght + 1) { if (isalnum(stringa[x]) != 0) { keep++; } if (isspace(stringa[x]) != 0 || stringa[x] == '\0') { if (keep > max) { position_max = x; max = keep; } if (keep < min) { position_min = x; min = keep; } keep = 0; } x++; } puts("最长单词:"); for (x = position_max - max; x != position_max; x++) { printf("%c", stringa[x]); } puts("\n\n最短单词:"); for (x = position_min - min; x != position_min; x++) { printf("%c", stringa[x]); } return 0; }
注:原代码存在两处会导致运行异常的问题,已做修正:一是遍历用的变量
x未初始化直接使用,会触发未定义行为;二是keep初始值设为1,会导致首个单词长度统计多1;同时移除了代码中未被调用的冗余头文件引用。
内容的提问来源于stack exchange,提问作者steno。
相关产品推荐
相关产品推荐

