杭电OJ 2024——C语言合法标识符

#2024
首先应该对c语言的合法标志符有一定的认识。
C语言合法标志符:标识符只能由字母(A-Z, a-z)、数字(0~9)和下划线(_)组成,并且第一个字符必须是字母或下划线,不能是数字。同时C语言标志符不能为有特殊含义的关键字。

以下是合法的标识符:
abc, xyz, x3, BOOK_1, sum5

以下是非法的标识符:
3s 不能以数字开头
sT 出现非法字符
-3x 不能以减号(-)开头
bowy -1 出现非法字符减号(-),出现非法字符空格

在本题中没有对关键字的标识符给出明确的界定,也就是关键字在可接受范围内。但是c语言的关键字这里也补充一下吧,以免自己之后忘记了。
数据类型
1、char:字符类型,1个字节,8位
2、int:整数类型,4个字节,32位
3、float:浮点数类型,4个字节,32位,保留8位有效数字
4、double:双精度类型,8个字节,64位,保留16位有效数字
5、short:短整数类型,2个字节,16位
6、long:长整数类型,8个字节,64位
7、signed:有符号类型
8、unsigned:无符号类型
9、enum:枚举类型
10、union:共同体类型,使几个不同类型的变量共占一段内存(相互覆盖)
11、struct:结构体类型,把不同类型的数据组合成一个整体-------自定义数据
12、void:声明函数无返回值或无参数
控制类型
13、for:循环语句
14、do:循环语句
15、while:循环语句
16、break:跳出当前循环
17、continue:跳出当前循环,开始下一次的循环
18、if:条件语句
19、else:分支语句
20、goto:无条件跳转语句,少用
21、switch:分支语句
22、case:和switch组合使用
23、default:其他分支
24、return:子程序返回语句
存储类型
25、auto:声明自动变量,很少用到
26、extern:声明变量是在其他文件中声明,引用变量
27、register:声明寄存器变量
28、static:静态变量
其他类型
29、const:声明只读变量
30、sizeof:计算数据类型长度
31、typedef:给数据类型取名
32、volatile:变量在程序执行中可以被隐含地改变

回到题目,注意需要对第一次读取测试用例个数之后读取换行符,不然会读取出错。这里使用了isaplha()可以判断开头是否为字母,以及isalnum()函数判断是否为字母或者数字,需要在头部文件中导入ctype.h头文件

题目直达
http://acm.hdu.edu.cn/showproblem.php?pid=2024

AC代码

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctype.h> //快速检验类型的头文件 
using namespace std;
int main() {
	int c;
	cin>>c;
	getchar();
	while(c--) {	
		char str[51];
		gets(str);
		int len=strlen(str);
		int flag=0;
		if(!isalpha(str[0]) && str[0]!='_') {
			flag++;
		}
		for(int i=1; i<len; i++) {
			if(!isalnum(str[i]) && str[i]!='_') {
				flag++;
			}
		}
		if(flag==0) {
			cout<<"yes"<<endl;
		} else {
			cout<<"no"<<endl;
		}
	}
	return 0;
}
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值