一个容易的字符串类的题目

一个简单的字符串类的题目!
[2011 SE|CS]C Progamming Test 4-D: 求最长单词长度

Time Limit:1000MS  Memory Limit:65536K
Total Submit:275 Accepted:165 

Description 

编写一个程序,求给定句子中的最长单词长度。单词之间用空格隔开,句子用’.’结束

Input 

一个英文句子

Output 

最长长度

Sample Input 


I am a student.

Sample Output 


7
 
这是我的:#include<stdio.h>
#include<string.h>
int main()
{
    int i=0,l=0,max=0,t;
    char a[100000];
    do
{
l++;
scanf("%c",&a[l]);
}
while (a[l]!='.');
l--;
while (i<=l)
{
    t=0;
while (i<=l&&a[i]!=' ') 
  {
  i++;
  t++;
  }
if (t>max) max=t;
while (i<=l&&a[i]==' ') i++;

   printf("%d",max);
   return 0;
}
为啥老是Wrong answer。。。。。
------解决方案--------------------
lz的计数变量l不是从零开始而是从1开始的   
l++;
 scanf("%c",&a[l]);数组的a[]的初值是a[1],你的a[0]是没有赋值的,而你计数时是从0开始的
------解决方案--------------------
注意数组的第一个是a【0】
------解决方案--------------------
你的算法需要扫描两次数组,其实一次扫描就可以完成了:
  1 #include <stdio.h>
  2 
  3 int main()
  4 {
  5   char buf[1000];
  6   int result_start = 0;
  7   int result_len = 0;
  8 
  9   int start = 0;
 10   int len = 0;
 11   int i = 0;
 12   do
 13   {
 14     scanf("%c", &buf[i]);
 15     if ('.' == buf[i])
 16     {
 17       if (len > result_len)
 18       {
 19         result_start = start;
 20         result_len = len;
 21       }
 22 
 23       break;
 24     }
 25     else if (' ' == buf[i])
 26     {
 27       if (len > result_len)
 28       {
 29         result_start = start;
 30         result_len = len;
 31       }
 32       start = i;
 33       len = 0;
 34     }
 35     else
 36     {
 37       len ++;
 38     }