输出一句话里面单词数,最长单词位置,最长单词包含字母个数,以及最长的单词(假定单词之间全部用' '隔开)
代码如下:
1 // 统计一个字符串中单词个数和最长单词的位置以及最长单词的字母数,只考虑句子单词之间用空格分开的情况下 2 # include<stdio.h> 3 # include<string.h> 4 char c[100]; 5 struct S{ 6 int c1,c2,index; 7 char va[25]; 8 }; 9 10 S st(char[]); 11 12 int main() 13 { 14 gets(c); 15 printf("单词个数:%d\n最长单词位置:%d\n最长单词长度:%d\n最长单词:%s\n",st(c).c1,st(c).index,st(c).c2,st(c).va); 16 return 0; 17 } 18 19 S st(char a[]) 20 { 21 S s; 22 s.c1=s.c2=0; //不初始化随机分配的单元,函数里面的变量没经过编译系统初始化,内存值不确定 23 int b=0; 24 char temp[25]; 25 int maxcur=0; 26 for(int i=0;a[i]!=0;i++) 27 { 28 if(a[i]==' ') 29 { 30 b=0; 31 if(maxcur>s.c2) 32 { 33 temp[maxcur]=0; //加零方便找到最长单词字符串的结尾 34 s.index=s.c1; 35 s.c2=maxcur; 36 strcpy(s.va,temp); 37 } 38 maxcur=0; 39 } 40 41 else 42 { 43 temp[maxcur++]=a[i]; 44 if(b==0) 45 { 46 s.c1++; 47 } 48 b=1; 49 } 50 } 51 if(maxcur>s.c2) 52 { 53 temp[maxcur]=0; 54 s.index=s.c1; 55 s.c2=maxcur; //不用减1是因为maxcur从开始的 56 strcpy(s.va,temp); 57 } 58 return s; 59 }
运行结果: