C语言合法标识符
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 142616 Accepted Submission(s): 53684

Problem Description
输入一个字符串,判断其是否是C的合法标识符。

Input
输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。

Output
对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。

Sample Input
3
12ajf
fi8x_a
ff ai_2

Sample Output
no
yes
no

Author
lcy

Source
C语言程序设计练习(四)

问题链接:HDU2024 C语言合法标识符
问题简述:(略)
问题分析
  按Markdown格式重写了题解,旧版题解参见参考链接。
  C语言的标识符是字母或下划线(’’)开头的,字母、下划线(’’)和数字的字符串。
  这个题的正解是用函数fgets()来实现,虽然用gets()函数来实现对付考试被比赛没有问题,工程中还是需要正解。
  解法一:用函数gets()实现
  如果用函数scanf()读入字符串,空行(直接输入回车)是个小陷阱,字符串中含有空格也是陷阱,是不可行的。可以用函数gets()实现,AC没有问题。
  解法二:用函数fgets()实现
  函数gets()存在风险,是新的C语言标准不推荐使用的,虽然用用也可以。正确的做法是使用函数fgets()来实现。
  如果已经有了用函数gets()的解题程序,只需要把所有的函数gets()调用换成函数fgets()调用并且代入合适的参数。还需要注意读入行结束符是’\n’,而不是字符串结束符’\0’。
  需要注意,函数gets()的第二个参数传递的是数组长度,需要考虑最后的空格或换行符号,所以N需要是定义为50+1。
程序说明
  C语言程序中要尽可能使用库函数。
参考链接:HDU2024 C语言合法标识符【入门】
题记:(略)

WA的C语言程序(解法二:用函数fgets()实现,正解)如下:

/* HDU2024 C语言合法标识符 */#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>#define N 50 + 1
char s[N ];int main(void)
{int n, ans = 0, i;fgets(s, N, stdin);n = atoi(s);while (n--) {fgets(s, N, stdin);if (!isalpha(s[0]) && s[0] != '_')ans = 0; /* 非字母或下划线开头则不是标识符 */else {ans = 1;for (i = 1; s[i] != '\n' && ans; i++) {/* 字母、下划线或数字,则检查下一个字符 */if (isalpha(s[i]) || s[i] == '_' || isdigit(s[i]));elseans = 0; /* 非字母、下划线或数字则不是标识符 */}}puts(ans ? "yes" : "no");}return 0;
}

AC的C语言程序(解法一:用函数gets()实现)如下:

/* HDU2024 C语言合法标识符 */#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>#define N 50
char s[N + 1];int main(void)
{int n, ans = 0, i;gets(s);n = atoi(s);while (n--) {gets(s);if(!isalpha(s[0]) && s[0] != '_')ans = 0; /* 非字母或下划线开头则不是标识符 */else {ans = 1;for (i = 1; s[i] && ans; i++) {/* 字母、下划线或数字,则检查下一个字符 */if (isalpha(s[i]) || s[i] == '_' || isdigit(s[i]));elseans = 0; /* 非字母、下划线或数字则不是标识符 */}}puts(ans ? "yes" : "no");}return 0;
}

HDU2024 C语言合法标识符【文本处理】相关推荐

  1. HDU2024 C语言合法标识符【入门】

    C语言合法标识符 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  2. HDU2024 C语言合法标识符

    C语言合法标识符 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  3. c语言合法标识符号大全,C语言合法标识符

    C语言合法标识符 输入一个字符串,判断其是否是C的合法标识符. Input 输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串 ...

  4. HDOJ2024C语言合法标识符

    C语言合法标识符 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  5. 在c语言中合法标识符的第一个字符必须是,c语言合法标识符判断规则是什么?...

    规则是:1.标识符的第一个字符必须是字母(a~z或A~Z)或下划线(_):2.后面跟的字符是由任意字母.下划线(_).数字组成:3.标识符中的大小写字母是有区别的,代表不同含义:4.标识符不能是关键字 ...

  6. c语言合法自定义标识符_c语言合法标识符的要求是什么

    c语言合法标识符的要求是:标识符只能由字母(A~Z, a~z).数字(0~9)和下划线(_)组成,并且第一个字符必须是字母或下划线,不能是数字. 标识符 定义变量时,我们使用了诸如 a.abc.mn1 ...

  7. c语言判断字符串合法标识符,HDU 2024 C语言合法标识符(以及一些关于输入和ctype.h的内容)...

    C语言合法标识符 输入一个字符串,判断其是否是C的合法标识符. Input 输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串 ...

  8. c语言oj合法标识符,YTUOJ-C语言合法标识符

    Description 输入一个字符串,判断其是否是C的合法标识符. Input 输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的 ...

  9. C语言合法标识符(含知识点)

    C语言标识符只能是字母(A-Z,a-z).数字(0-9).下划线()组成的字符串,并且其第一个字符必须是字母或下划线. 题目描述 输入一个字符串,判断其是否是C的合法标识符. 输入 输入一个长度不超过 ...

最新文章

  1. 词法作用域和动态作用域
  2. Windows 11 再惹“众怒”!网友:微软就是逼我去买新电脑!
  3. 苹果的浏览器safari无法识别 2016-1-1这样的日期,会返回Invalid Date
  4. Docker学习笔记之保存和共享镜像
  5. javascript如何释放内存
  6. Fisher线性判别算法原理及实现 MATLAB
  7. php mysql 正则_MySQL 正则表达式
  8. 耿建超英语语法---连词
  9. 可复用可扩展的红包后台系统设计方案
  10. LeetCode知识点总结 - 1179
  11. Solidity IDE Remix中文版使用手册
  12. java实现Calendar求两个日期差
  13. 苹果 Apple Beta 版软件计划 相关软件地址
  14. python之pip常用命令
  15. 关于React 行内样式backgroundImage的设置
  16. 你见过最听话的狗狗有多听话?
  17. UNetbootin for Linux制作u盘安装盘
  18. Unity鼠标拖动物体、按下鼠标左键旋转观察物体、鼠标滚轮缩放视野
  19. wiring的运行(使用open source产品组装你的web应用架构)
  20. 曲线拟合问题与L2正则

热门文章

  1. 停止做这7件事,你的工作效率至少翻一倍!
  2. Go1.18泛型使用详解(附最新gocode)
  3. 关于AIR 应用程序沙箱
  4. eclipse 达梦 连接_JDBC连接达梦7数据库
  5. 【java学习之路】(java SE篇)(练习)集合练习:经典例题
  6. 使用Navicat Premium 同步 测试数据库 与 正式数据库 数据
  7. 计算机网络课程设计即时通讯,计算机网络课程设计报告-基于LAN的即时通信软件.doc...
  8. oracle euk 什么系统,【T】每日一生信--interproscan安装及使用(终结版)
  9. .net @什么意思_.NET和F#周报2019-4 各地微软技术俱乐部汇总 ML.NET 0.10
  10. C#与C++在语言层面的区别(不断补充)