8.10 写一函数,输入一行字符,将此字符串中最长的单词输出。(改)
2016-08-17 22:08
337 查看
写一个快一个月,这是我写过的最长的程序了。我认为比书上的好。最大的优势是我的如果出现重复的长度,是可输出的。
#include<stdio.h>//8.10 写一函数,输入一行字符,将此字符串中最长的单词输出。(改) int character(char c); //判断是否是字符 int word_head(int i,char s[]);//判断单词的开头 int word_bottom(int i,char s[]);//判断单词的结尾 int word_number(char s[]);//求单词的数量 int word_length(char s[]);//记录每个字母的长度 void show_longest_words(int max_word_length,char s[]);//输出长度最长的单词 int character(char c)//判断是否是字符 { if( ((c>='a')&&(c<='z')) || ((c>='A')&&(c<='Z')) ) return 1; else return 0; } int word_number(char s[])//统计单词数量,用计算结尾的方法 { int word_number=0,i; for(i=0;s[i]!='\0';i++) { word_head(i,s); if(word_bottom(i,s)) word_number++; } return word_number; } int word_bottom(int i,char s[])//判断是否单词结尾 { if((character(s[i])==1)&&(character(s[i+1])==0)) { //printf("本次判断的是s[%d]='%c',结尾条件成功。\n",i,s[i]); return 1; } else return 0; } int word_head(int i,char s[])//判断是否单词开头 { if(i==0) { if(s[0]!=' ') { //printf("本次判断的是s[%d]='%c',开头条件成功。\n",i,s[i]); return 1; } else return 0; } else { if( (character(s[i])==1)&&(character(s[i-1])==0) ) { //printf("本次判断的是s[%d]='%c',开头条件成功。\n",i,s[i]); return 1; } else return 0; } } int word_length(char s[])//记录每个字母的长度,求最长单词的长度,并记录 { int n,i,j,flag=0,num=1,max_word_length=0; n=word_number(s); int word_length ;//定义一个记录每个字母长度的数组,word_length[]。 i=0; for(j=0;s[j]!='\0';j++) { word_length[i]=0; if(word_head(j,s)==1) { flag=1; } if(flag) { word_length[i]=num++; } if(word_bottom(j,s)==1) { flag=0; num=1; i++; } } for(i=0;i<n;i++) { if(word_length[i]>max_word_length) max_word_length=word_length[i]; } return max_word_length; } void show_longest_words(int max_word_length,char s[])//输出长度最长的单词 { printf("\n进入show_longest_words()函数。\n"); printf("最长的单词长度:max_word_length=%d。\n",max_word_length); int n,i,j,flag=0,num=1,c_i; char c_temp[500];//定义一个临时数组,用来存放每个单词。 n=word_number(s); int word_length ;//定义一个记录每个字母长度的数组,word_length[]。 i=0; for(j=0;s[j]!='\0';j++) { word_length[i]=0; if(word_head(j,s)==1) { flag=1; c_i=0; } if(flag) { word_length[i]=num++; c_temp[c_i]=s[j]; c_i++; } if(word_bottom(j,s)==1) { flag=0; num=1; i++; c_temp[c_i]='\0'; if(word_length[i-1]==max_word_length) { printf("最长单词是:"); puts(c_temp); } } } } int main() { char s[100]; printf("请输入一行字符串:"); gets(s); printf("您的输入成功。"); puts(s); printf("您输入的字符串中单词数为:%d\n",word_number(s)); word_length(s); show_longest_words(word_length(s),s); return 0; }
相关文章推荐
- 7.10 写一函数,输入一行字符,将此字符串中最长的单词输出。
- 写一个函数,输入一行字符,将此字符串中最长的单词输出
- 习题 7.10 写一个函数,输入一行字符,将此字符串中最长的单词输出。
- 写一个函数,输入一行字符,将此字符串中最长的单词输出。
- 输入一行子串,找出其中出现的相同且长度最长的字符串,输出它及其首字符的位置
- 输入一行字符串,找出其中出现的相同且长度最长的字符串,输出它及其首字符的位置
- 输入一行字符串,找出其中重复出现且最长的字符串,输出它及其首字符的位置
- 输入一行字符,输出最长的单词
- 编写一函数 用户输入字符串 函数将获取第一个单词输出 并丢掉后面的字符(图)
- 实验 9 指针1 输入一行字符,要求用自定义的函数void f(char *line)统计和输出字符串中数字字符、英文字符和其他字符的个数
- 输入一行字符串(单词和若干空格), 输出该行单词个数 这里用到判断字符与否的isalpha
- 输入一行字符,输出最长的单词
- 输入一行字符串,找出其中重复出现且最长的字符串,输出它及其首字符的位置
- 编写一个函数,由实参传来一个字符串,统计此字符串中字母,数字,空格,和其他字符的个数,在主函数中输入字符串以及输出上述统计的结果。再考虑将算的的结果放在一个数组中
- 问题:求两个字符串的最长公共子串。 要求:输入两个字符串,输出它们的最长公共子串,包括长度。 设计: 设计一个类 String,包括一个 len(字符串长度)和字符串指针 s。另有如下成员函数: ·
- 输出一行字符串中的最长单词---调用函数
- 写一个函数,用来把一个字符串用指定的字符作为分隔符分割成若干个子串输出 | 写一个函数,用来返回一个字符串中重复出现的最长字串的长度及其开始地址
- 输出一行字符串中的最长单词---调用函数
- 编写函数,对标准输入进行扫描,并对“the”出现的次数进行计数。 进行比较时应区分大小写。认为一个单词有一个或多个空格字符分隔, 并且输入行在长度上不会超过100个字符,计数结果输出。
- 编写一函数,由实参数来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述的结果