我最讨厌字符串处理的题了...... #include<iostream> using namespace std; int tot; bool over=true; bool cap(char c) { if(c>='A'&&c<='Z') return true; else return false; } bool letter(char c) { if(c>='A'&&c<='Z'||c>='a'&&c<='z') return true; return false; } int main() { int i,j,k; char c; // freopen("u1038.in","r",stdin); // freopen("u1038.out","w",stdout); while((c=getchar())!=EOF) { if(c=='.'||c=='!'||c=='?') { over=true; continue; } if(!letter(c)) continue; if(over&&!cap(c)) tot++; over=false; c=getchar(); while(letter(c)) { if(cap(c)) tot++; c=getchar(); } if(c=='.'||c=='!'||c=='?') over=true; } printf("%d/n",tot); return 0; }