#8322: C語言 WA 10


csie02 (笨小豬)

學校 : 國立臺灣科技大學
編號 : 35589
來源 : [49.159.47.189]
最後登入時間 :
2014-09-03 21:08:37
a011. 00494 - Kindergarten Counting Game -- UVa494 | From: [49.159.47.189] | 發表日期 : 2013-10-13 03:54

#include <stdio.h>
int main()
{
char data[10000];
int i,temp,a,b,flag;
for(i=0;i<10000;i++)data[i]='\0';
while(gets(data))
{
i=0;
temp=0;
flag=0;
while(data[i]!='\0')
{

a=data[i]>='a' && data[i]<='z';
b=data[i]>='A' && data[i]<='Z';

if(flag==1 && a==0 && b==0)
{
temp++;
flag=0;
}
if(a==1 || b==1)flag=1;
i++;
}

printf("%d\n",temp);
}
return 0;
}
 
 
我的想法是,英文字母開始測試,直到下一個不是英文字母算1個字,前面都過了9筆資料,第10筆到底藏了甚麼陷阱? 
 
WA10
答案為   2
但我的是1 
 
#8323: Re:C語言 WA 10


csie02 (笨小豬)

學校 : 國立臺灣科技大學
編號 : 35589
來源 : [49.159.47.189]
最後登入時間 :
2014-09-03 21:08:37
a011. 00494 - Kindergarten Counting Game -- UVa494 | From: [49.159.47.189] | 發表日期 : 2013-10-13 04:01


 
我找到問題了
通常一個英文完整的句子會有句號結尾或是其他符號結尾
例如 This is a book.

如果使用我的想法,從字母開頭找,找到另一個非字母算一個字,這樣是沒問題的

但我剛剛改了一下程式已經AC了,據我的猜測第10筆測試資料,並沒有符號結尾,最後一個字也是英文字母,所以用我的想法就會少算一個。
 
給WA10的各位參考 
 
ZeroJudge Forum