这个在平台上为什么提交不了(C语言合法标识符)

img


#include <stdio.h>

int main() {
    int n, i;
    char a[52];
    scanf("%d", &n);
    getchar();
    while (n--) {
        gets(a);
        if (a[0] == '_' || a[0] >= 'a' && a[0] <= 'z' || 'A' <= a[0] && a[0] <= 'Z') {
            for (i = 1; a[i] != '\0'; i++) {
                if (a[i] == '_' || a[i] >= 'a' && a[i] <= 'z' || a[i] >= '0' && a[i] <= '9' || 'A' <= a[0] && a[0] <= 'Z')
                    continue;
                else {
                    printf("no\n");
                    break;
                }
            }
            if (a[i] == '\0')
                printf("yes\n");
        } else
            printf("no\n");
    }
    return 0;
}

这样写没有发现有错误的样例啊,但为什么平台上就是过不了,是哪里出错了?

for中的if是
是'A' <= a[i] && a[i] <= 'Z' ,不是'A' <= a[0] && a[0] <= 'Z'

 if (a[i] == '_' || a[i] >= 'a' && a[i] <= 'z' || a[i] >= '0' && a[i] <= '9' || 'A' <= a[0] && a[0] <= 'Z')
            

改成

 if (a[i] == '_' || a[i] >= 'a' && a[i] <= 'z' || a[i] >= '0' && a[i] <= '9' || 'A' <= a[i] && a[i] <= 'Z')
            

你题目的解答代码如下:

#include <stdio.h>

int main() {
    int n, i;
    char a[52];
    scanf("%d", &n);
    getchar();
    while (n--) {
        gets(a);
        if (a[0] == '_' || a[0] >= 'a' && a[0] <= 'z' || 'A' <= a[0] && a[0] <= 'Z') {
            for (i = 1; a[i] != '\0'; i++) {
                //是'A' <= a[i] && a[i] <= 'Z'
                if (a[i] == '_' || a[i] >= 'a' && a[i] <= 'z' || a[i] >= '0' && a[i] <= '9' || 'A' <= a[i] && a[i] <= 'Z')
                    continue;
                else {
                    printf("no\n");
                    break;
                }
            }
            if (a[i] == '\0')
                printf("yes\n");
        } else
            printf("no\n");
    }
    return 0;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

你还要判断关键字(保留字)呀,是关键字也不是合法的标识符。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632