uva 494 Kindergarten Counting Game

有漏洞,但AC了,因为当i = 0 时,有可能出现 s[-1],会出现越界

 

 

小结:

 1 题意千万弄清楚,刚开始考虑的方向就错了,我将 ‘单词’ 的意思没弄清,看类似于 did!  meep. 这些加标点的都算作一个单词,就在考虑 一个单词里有标点符号还算不算一个单词,比如 i am a s.tu.dent!  这句话算几个单词,题目的意思应该是只包括大小写字母,单词中间有标点符号就算两个单词了,完全被例子给蒙住了。

 2 不要只对着例子来写代码,例子通过了,照样WA

 3 一开始思路很重要,我的思路是 有空格就加一,遇到类似于 。。。 这样的就减一,自己骗自己不会出现  .s.go.so.....      这样的代码,现在看看只要判断有多少个字母是连续着的就行了

关键词: 题意    根据示例容易思维定势

在网上又找的代码,解决了我的这个有可能越界的问题

 

http://www.cnblogs.com/liuzezhuang/archive/2012/05/31/2528611.html

 

这个是自己的:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int i;
    char s[200];
    while (gets(s) != NULL){
          int count = 0 ;
          for (i = 0; i < strlen(s); i++){
              if(((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z'))&&((s[i-1] >= 'a' && s[i-1] <= 'z') || (s[i-1] >= 'A' && s[i-1] <= 'Z')))       // s[-1]?
                  continue;
              if ((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z'))  
                  count++;
              }
          printf("%d\n",count);
          }
  return 0;
}



 
 
 


   

你可能感兴趣的:(uva 494 Kindergarten Counting Game)