博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU-2024
阅读量:4707 次
发布时间:2019-06-10

本文共 1433 字,大约阅读时间需要 4 分钟。

C语言合法标识符

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 83097    Accepted Submission(s): 32044
Problem Description
输入一个字符串,判断其是否是C的合法标识符。

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

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

 
Sample Input
 
312ajffi8x_aff ai_2
 
Sample Output
 
noyesno
 
Author
lcy
解题思路:用字符数组存储字符串,然后通过条件语句对每个字符进行判断
注意事项:输入完n之后,必须写上getchar()语句消除回车键对后续输入的影响,然后用gets()函数读入每一个字符,strlen()函数取得字符串的长度,(不包括结束字符).
getchar():C 库函数 int getchar(void) 从标准输入 stdin 获取一个字符(一个无符号字符)。这等同于getc 带有 stdin 作为参数。
gets():C 库函数 char *gets(char *str) 从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
源代码如下:
#include 
#include
#include
using namespace std;char a[50];int main(){ int n,flag; cin>>n; getchar(); //将回车键读入防止影响 while(n--) { flag = 0; gets(a); int p = strlen(a); //判断1:如果第一个字符不为下划线,字母开头则输出"no"; if(!(a[0] == '_'||(a[0] >= 'a'&&a[0] <= 'z')||(a[0] >= 'A'&&a[0] <= 'Z'))) cout<<"no"<
< p;i++) { if(!(a[i]== '_'||(a[i] >= 'a'&&a[i] <= 'z')||(a[i] >= 'A'&&a[i] <= 'Z')||(a[i] >= '0'&&a[i] <= '9'))) { flag = 1; break; } } if(flag == 0) cout<<"yes"<
心得体会:这道题唯一有点反人类的地方就是条件语句的书写,因为条件较长,刚开始有点不敢这样写,但其实把所以判断为标识符的条件写上在前面加个!就可以了,注意各个括号的关系,细心就好了

转载于:https://www.cnblogs.com/Western-Trail/p/10326187.html

你可能感兴趣的文章
关于oracle样例数据库emp、dept、salgrade的mysql脚本复杂查询分析
查看>>
adb shell am 的用法
查看>>
iOS10 UI教程视图和子视图的可见性
查看>>
FindChildControl与FindComponent
查看>>
中国城市json
查看>>
android下载手动下载Android SDK
查看>>
C++学习:任意合法状态下汉诺塔的移动(原创)
查看>>
leetcode133 - Clone Graph - medium
查看>>
UNET学习笔记2 - 高级API(HLAPI)
查看>>
"ORA-00942: 表或视图不存在 "的原因和解决方法[转]
查看>>
Oauth支持的5类 grant_type 及说明
查看>>
C#中用DateTime的ParseExact方法解析日期时间(excel中使用系统默认的日期格式)
查看>>
W3100SM-S 短信猫代码发送 上
查看>>
netty接收大文件的方法
查看>>
软件工程设计之四则运算
查看>>
SpringMVC @ResponseBody 406
查看>>
Partial Tree UVALive - 7190(完全背包)
查看>>
0816 1459 json & pickle ,目录导入,目录规范
查看>>
敏捷开发入门教程
查看>>
顺序容器的insert使用方法
查看>>