打字
这个题目太lj了,题面没说清楚
首先,这个题目非常简单,有几个地方我没有搞对
1.freopen写错了
大忌!!!!!
千万不要把w写成r,或者点写成逗号
2.只判断了第一个字母是不是大写,并没有判断其他字母是不是都是小写!很重要,不然freopen写对了也只是40分
下面展示错误代码
#include<bits/stdc++.h>
using namespace std;
void gmin(int &x,int y){x=min(x,y);}
void gmax(int &x,int y){x=max(x,y);}
int n;
char s[11][1005][1005];
int len[11][1005],a[11];//len_i,j表示第i句话的第j个单词的长度,a_i表示第i句话有几个单词
bool check_alp(char ch){
if(ch=='.'||ch=='!'||ch=='?'||ch==' '||ch=='\n') return 0;
return 1;
}
int main(){
freopen("word.in","r",stdin);
freopen("word.out","r",stdout);//w写成r了,RTE0!
int cnt=1;
a[cnt]=1;
scanf("%d\n",&n);
while(1){
char ch;
scanf("%c",&ch);
if(check_alp(ch)){
s[cnt][a[cnt]][++len[cnt][a[cnt]]]=ch;
}else{
if(ch==' '){//纯空格
a[cnt]++;
}else if(ch=='.'||ch=='?'||ch=='!'){//标点
cnt++;a[cnt]=1;
}else{
break;
}
}
}
for(int i=1;i<=n;i++){
int ans=0;
for(int j=1;j<=a[i];j++){
if(len[i][j]==1){
char ch=s[i][j][1];
if('A'<=ch&&ch<='Z') ans++;
continue;
}
char ch1,ch2;
ch1=s[i][j][1];
ch2=s[i][j][len[i][j]];
if('A'<=ch1&&ch1<='Z'){
if('a'<=ch2&&ch2<='z') ans++;//不知道这里在干什么,不需要判断最后一个字符,我可能是被题面误解了
//这里还需要判断其他字母
}
}
printf("%d\n",ans);
}
}
接下来是正解
#include<bits/stdc++.h>
using namespace std;
void gmin(int &x,int y){x=min(x,y);}
void gmax(int &x,int y){x=max(x,y);}
int n;
char s[11][1005][1005];
int len[11][1005],a[11];//len_i,j表示第i句话的第j个单词的长度,a_i表示第i句话有几个单词
bool check_alp(char ch){
if(ch=='.'||ch=='!'||ch=='?'||ch==' ') return 0;
return 1;
}
int main(){
freopen("word.in","r",stdin);
freopen("word.out","w",stdout);//cao!
int cnt=1;
a[cnt]=1;
scanf("%d\n",&n);
while(1){
char ch;
scanf("%c",&ch);
if(check_alp(ch)){
s[cnt][a[cnt]][++len[cnt][a[cnt]]]=ch;
}else{
if(ch==' '){//纯空格
a[cnt]++;
}else if(ch=='.'||ch=='?'||ch=='!'){//标点
cnt++;a[cnt]=1;
scanf("%c",&ch);
//一定要特判
if(ch=='\n') break;
}
}
}
for(int i=1;i<=n;i++){
int ans=0;
for(int j=1;j<=a[i];j++){
if(len[i][j]==1){
char ch=s[i][j][1];
if('A'<=ch&&ch<='Z') ans++;
continue;
}
if('A'<=s[i][j][1]&&s[i][j][1]<='Z'){//判断第一个字母是不是大写的
bool f=1;
for(int k=2;k<=len[i][j];k++){//判断剩余字母是不是都是小写的
f&=('a'<=s[i][j][k]&&s[i][j][k]<='z');
}
if(f) ans++;
}
}
printf("%d\n",ans);
}
}

浙公网安备 33010602011771号