题目很简单是,就是
输入一行字符,将字符串中最长的单词输出
用
fun()
{......}
main()
{......}
格式,给个提示。
# include <stdlib.h> # include <stdio.h>
# define LEN sizeof(char)
struct word { char c ; struct word*next ; };
int Decide(char c) { if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) { return 1 ; } else { return 0 ; } }
int Long(struct word*p) { int longest=0,len=1,door=1,sgin=0,teep,i=0 ; while(p!=NULL) { if(Decide(p->c)) if(door) { teep=i ; door=0 ; } else { len++; } else { door=1 ; if(len>=longest) { longest=len ; sgin=teep ; len=0 ; } } i++;
p = p->next; } return(sgin); }
main() { struct word*p_all,*p_fun,*head,*p_print ; char c ; int i=0,n ; head=p_all=(struct word*)malloc(LEN); do { c=getchar(); p_all->c=c ; p_fun=p_all ; p_all=(struct word*)malloc(LEN); p_fun->next=p_all ; }while(c!='\n');
p_fun->next=NULL ; p_print=head ; n=Long(head); while(p_print!=NULL) { i++; while(i>=n&&Decide(p_print->c)) { printf("%c",p_print->c);
p_print = p_print->next;
if (!Decide(p_print->c))
goto end; }
p_print = p_print->next; } end: getch(); }
用的是第二种理解
数组做好点 我主要是为了加强我对链表的操作能力 仅供参考~~~
#include<stdio.h>
#include<string.h>
void fun(char *p)
{char *q,*s;int i,j,k,index=0,len=0;
for(i=0;i<strlen(p);i++)
{j=0;k=i;
if (p[k]!=' ') do {j++;k++;}
while(p[k]!=' ');
if(j>len) index=i;
i=k;
}
printf("The word is:");
for(i=index;p[i]!=' ';i++)
printf("%c",p[i]);
printf("\n");
}
void main()
{ char a[100];
printf("Input a string:");
gets(a);
fun(a);
getch();
}
没运行......