关于#PTA#的问题,如何解决?(标签-C语言|关键词-字符串)

PTA C语言(原创题)

img

img

#include <stdio.h>
int main()
{
    int n,i,s=0;
    scanf("%d",&n);
    char c[n];
    scanf("%s",&c);
    int a=0,b=0,count=0;
for(i=0;i<n;i++){
switch(c[i]){
    case 'C':a++;
        break;
    case 'J':b++;
        break;
    case '9':count++;
        break;}
}
if(a!=0&&b!=0){
    s=1;
    printf("JC HAPPY!!!\n");
}
else
    printf("JC YYDS!!!\n");
if(count>0&&s==1){
for(int j=1;j<count;j++){
        printf("JC HAPPY!!!\n");
}
}
    return 0;
}

img

测试运行是对的,但是PTA判定部分正确;
希望帮我找找错;

scanf("%d\n",&n) 这里的\n应该删掉

这么改下试试,供参考:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n,i,flgc = 0,flgj = 0,flg9 = 0;//a=1,s=0;
    scanf("%d",&n);           //scanf("%d\n",&n);
    char* c=(char*)malloc(sizeof(char)*(n+1));//c[n]
    scanf("%s",c);             //scanf("%s",&c);
    for(i=0;i<n;i++){
        //for(int j=1+i;j<n;j++){
        //    if((c[i]=='C'&&c[j]=='J')||(c[i]=='J'&&c[j]=='C')){
        //        a=-1;
        //        printf("JC HAPPY!!!\n");
        //        break;
        //    }
        //}
        //if(c[i]=='9' && a== -1){
        //    s++;
        //}
        //if(a==1)
        //printf("JC YYDS!!!");
        switch(c[i]){
             case 'C':flgc++; break;
             case 'J':flgj++; break;
             case '9':flg9++; break;
             default :break;
        }
    }
    if ((!flgc || !flgj) && !flg9){
        printf("JC YYDS!!!");
    }
    else{
        if (!flg9)
            printf("JC HAPPY!!!");
        else{
            for(i = 0;i < flg9;i++){
                printf("JC HAPPY!!!");
                if(i != flg9 - 1)
                    printf("\n");
            }
        }
    }
    return 0;
}