关于计算单词长度的算法
#include <stdafx.h>void main(){ void putstr(char str[200]); char a[200]; printf("请输入英文语句:\n"); gets(a); printf("其中最长的单词是:\n"); putstr(a); putchar('\n');}void putstr(char str[200]) //此算法部分情况下有BUG,还需进一步验证{ int a,b,c,i; a=0;b=0;c=0; for(i=0;;i++) { if(str[i]=='\0') { if(b<=a) { b=a; c=i-a; } break; } else if(str[i]!=' ') { a++; } else { if(b<=a) { b=a; c=i-a; a=0; } } } for(i=c;i<=b+c;i++) { putchar(str[i]); }}#include <iostream>#include <stdlib.h>void main(){ void putstr(char str[200]); char a[200]; printf("请输入英文语句:\n"); gets(a); printf("其中最长的单词是:\n"); putstr(a); putchar('\n');}void putstr(char str[200]) //此算法部分情况下有BUG,还需进一步验证{ int a,b,c,i;//a表示当前的单词长度 b 表示最大的 长度 c表示 开始当前单词开始位置 当前i a=0;b=0;c=0; for(i=0;;i++) { if(str[i]=='\0' || str[i] == ' ') { if(a >= b) { c = i-a; b=a; } if(str[i]=='\0') { break; } a=0; //i-a } else { a++; } } for(i=c;i<=c+b;i++) { putchar(str[i]); }}
[解决办法]
if(b<=a) { b=a; c=i-a; a=0; }