萌新,不知道为什么答案全是错的,可是编译器上是对的啊,求助
查看原帖
萌新,不知道为什么答案全是错的,可是编译器上是对的啊,求助
125152
LeoLoveTl楼主2023/1/3 15:03

我的代码如下,c语言,利用循环,for里面是几个条件,分别是开头大写,结尾大写,单个大写,连续大写,包含数字的判断

#include <stdio.h>
#include <string.h>
int main(){
    char a[1000];
    int i=0,b[5],n=0,flag=0,j=0;
    for(i=0;i<5;i++){
        b[i]=0;
    }
    scanf("%d",&n);
    getchar();
    gets(a);
    for(i=0;i<strlen(a);i++){
        if(a[i]=='.' || a[i]=='!' || a[i]=='?'){
            j++;
        }
        if( (a[i]>='A' && a[i]<='Z') && (i==0 || a[i-1]=='.' || a[i-1]=='!' || a[i-1]=='?' || a[i-1]==' ' ) ){
            flag=1;
        }
        if( (a[i]<'A') || (a[i]>'Z' && a[i]<'a' ) || ( a[i]>'z' ) ) flag=0;
        if(flag==1 && (a[i+1]<='Z' && a[i+1]>='A' ) ) flag=0;

        if(flag==1 && (a[i+1]=='.' || a[i+1]=='!' || a[i+1]=='?' || a[i+1]==' ') ){
            b[j]++;
            flag=0;
        }
    }
    for(i=0;i<j;i++){
        if(flag==1) printf("\n");
        else flag=1;
        printf("%d",b[i]);

    }

}

谢谢大佬

2023/1/3 15:03
加载中...