写一个函数,输入一行字符,将此字符中最长的单词输出

/*写一个函数,输入一行字符,将此字符中最长的单词输出*/

#include <STDIO.H>
#include <CTYPE.H>
#include <STRING.H>

typedef struct
{
	int m;//用m记录字母字符串的第一个字母的下标 
	int n;//用n记录字母字符串的长度 
}ad;

int fun(char c[100])
{
	ad a[10];
	int i,j,flag,max,k;

	for(i = 0;i < 10;i++)
	{
		a[i].m= 0;
		a[i].n = 0;
	}

	for (i = 0,j = 0;i < strlen(c);)
	{
		flag = 0;
		if (isalpha(c[i]))
		{
			a[j].m = i;//记录字母字符串第一个字母的下标 
			flag = 1;
		}
		if (flag == 1)
		{
			while (isalpha(c[i]))
			{
				a[j].n++;//记录字母字符串的长度 
				i++;
			}
			j++;
		}
		if (flag == 0)//第一个字符不是字母就往后找 
		{
			i++;
		}
	}

	if (a[0].n == 0)//没有一个字母 
	{
		printf("未找到单词!\n");
		return 0;
	}
	
	max = a[0].n;//n是长度,m是下标 
	j = a[0].m;

	for (i = 1;i < 10;i++)
	{
		if (a[i].n > max)
		{
			max = a[i].n;
            j = a[i].m;
		}
	}
    
	printf("输出最长的单词:\n");
	for(k = 0;k < max;k++,j++)
	{
		printf("%c",c[j]);
	}
	printf("\n");

	return 0;
}

int main()
{
	char c[100];
	
	printf("请输入字符串:\n");
	gets(c);

	fun(c);
}

谭浩强C程序设计(第四版)p218第10题
看到题目,我没有明白题目的意思,只能按照自己的理解做的这道题:就是在字符串里面找到最长的字母字符串,不区分大小写
我的设计思路就是用一个结构体数组,一个记录字母字符串中第一个字母的下标m,一个记录字母字符串的长度n,然后通过比较n的大小找到最长的字母字符串然后输出。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值