自定义一个函数,找出一行英文句子中最长的单词出现的开始位置和最长单词的字符个数,
英文句子的输入和最终输出结果要求在主函数中实现。
你题目的解答代码如下:
#include <stdio.h>
#include <string.h>
void findword(char word[], int *c, int *q){//这里findword单词记录的仅仅是最长单词的起始字符。
int n,i,a,b;
a=b=0;
n=strlen(word);
for(i=0;i<n;i++){
if(word[i]!=' '){//遇到非空格字符时,b的数值加一
b++;//b用来储存当前单词的长度,切记清零
if(a<=b){//a用来储存扫描到的较长单词
a=b;
*q=b;
*c=i-a+1;//用c来记录最长单词的起始位置
}
continue;//这里没有continue可能会导致else和第一个if语句同时执行,导致程序出错
}
else b=0;//如果得到的a>b,将b清零,用来记录下一个单词长度,否则b的值会一直增加,导致输出结果错误
}
}
int main()
{
char a[100];
gets(a);
int c,q,i;
findword(a,&c,&q);
printf("最长的单词出现的开始位置:%d\n", c);
printf("最长单词的字符个数:%d\n", q);
for (i = c; i < c+q; i++)
printf("%c",a[i]);
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!