大一新手写题 解不出来

#c语言
先输入一个正整数N,然后输入N个字符,如果全都是大写字母,输出perfect;如果全是小写字母输出 good;如果全是数字,输出nice,如果前三种情况都不满足输出ok
我的思路如下

img

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


 有帮助请采纳

建议你去查阅以下ASCII码,0-9 ASCII码为 48至(48+9),小写字母与大写字母ASCII码差值为32

    printf("a:%d,A:%d",'a','A');

题解

#include <stdio.h>
#define MAX 200
char str[100];
int main() {
    int n;
    scanf("%d",&n);
    int fg1 = 0, fg2 = 0, fg3 = 0;
    for(int i = 0; i < n; i++){
        scanf("%c ",&str[i]);
        if(str[i] >= 'A' && str[i] <='Z'){
            fg1 = 1;
        }
        if(str[i] >= 'a' && str[i] <='z'){
            fg2 = 1;
        }
        if(str[i] >= '0' && str[i] <='9'){
            fg3 = 1;
        }
    }
    if(fg1 == 1 && fg2 == 0 && fg3 == 0) printf("perfect");
    else if(fg1 == 0 && fg2 == 1 && fg3 == 0) printf("good");
    else if(fg1 == 0 && fg2 == 0 && fg3 == 1) printf("nice");
    else printf("ok"); 
    return 0;
}