/*写一个函数,输入一行字符,将此字符中最长的单词输出*/
#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的大小找到最长的字母字符串然后输出。