/*注意:句子的输入格式为 单词+空格+单词...
例如:“the apple is red”*/
#include<stdio.h>
#include<string.h>
#include<windows.h>
#define N 30
#define M 30
#define Q 20
int FindMax(int a[], int n);
void FindWords(char s[], char a[], int count[], int j);
/*找出数组的最大值并返回下标*/
int FindMax(int a[], int n)
{
int max, i, j = 0;
max = a[0];
for (i = 1; i < n; i++)
{
if (max < a[i])
{
max = a[i];
j = i;
}
}
return j;
}
/*找出s[]中最长的单词并将它赋值给新开的字符串数组*/
void FindWords(char s[], char a[], int count[], int j)
{
int sum = 0, i, k = 0, p;
for (i = 0; i < j; i++)
{
sum += count[i];
k++;
}
sum += k;
if (sum != count[0])
{
p = sum;
for (i = 0; i < count[j]; i++,p++)
{
a[i] = s[p];
/*printf("s[p]---%c ",s[p]);
printf("a[i]---%c\n",a[i]);*/ //用于测试赋值过程是否正确
}
a[i] = '\0';
}
else
{
p = 0;
for (i = 0; i < count[j]; i++,p++)
{
a[i] = s[p];
/*printf("s[p]---%c ",s[p]);
printf("a[i]---%c\n",a[i]);*/ //用于测试赋值过程是否正确
}
a[i] = '\0';
}
}
/*主函数*/
int main()
{
int count[N], a, i, j = 0, k = 0;
char s[M], b[Q];
printf("2016/01/28 作者:肖庆鸿\n\n请输入一句英文:");
gets(s);
a = strlen(s);
for (i = 0; s[i] != '\0'; i++)
{
if((s[i] >= 65&&(s[i] <= 90))||((s[i] >= 97)&&(s[i] <= 122)))
{
k++;
count[j] = k;
}
else if (s[i] == ' ')
{
j++;
k = 0;
}
}
k = FindMax(count, j+1);
FindWords(s, b, count, k);
printf("这句话中最长的单词是%s,",b);
//puts(b);
printf("该单词共有%d个字母\n",count[k]);
system("pause");
return 0;
}
统计并找出一句英文句子中最长的一个单词(C语言)
最新推荐文章于 2023-11-28 10:16:56 发布