一直改都是错的,求解

先输入一个正整数N,然后输入N个字符,如果全都是大写字母,输出perfect;如果全是小写字母输出good;如果全是数字,输出nice,如果前三种情况都不满足输出ok
#include<stdio.h>
int main(void)
{
int n;
char ch;
ch=getchar();
scanf("%d",&n);
if(ch>='A'&&ch<='Z')
printf("perfect\n");
else if(ch>='a'&&ch<='z')
printf("good\n");
else if(ch>='0'&&ch<='9')
printf("nice\n");
else
printf("ok\n");
return 0;
}

#include<stdio.h>
int main(void) {
    int n,i,up=0,low=0,num=0;
    char ch;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        getchar();
        ch=getchar();
        if(ch>='A'&&ch<='Z'){
            up++;
        }else if(ch>='a'&&ch<='z'){
            low++;
        }    else if(ch>='0'&&ch<='9'){
            num++;
        }
    }
    if(up==n){
        printf("perfect");
    }else if(low==n){
        printf("good"); 
    }else if(num==n){
        printf("nice"); 
    }else{
        printf("ok");
    }
    return 0;
}

觉得有用的话采纳一下哈

#include<stdio.h>
int main(void)
{
int n,i,a=0,b=0,c=0;
char ch;
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
{
ch=getchar();
if(ch>='A'&&ch<='Z')
a++;
if(ch>='a'&&ch<='z')
b++;
if(ch>='0'&&ch<='9')
c++;
}
if(a!=n&&b!=n&&c!=n)
printf("ok\n");
if(a==n)
printf("perfect\n");
if(b==n)
printf("good\n");
if(c==n)
printf("nice\n");
return 0;
}