hdoj2024c语言合法标识符

该博客主要介绍了如何判断一个字符串是否符合C语言的合法标识符规则,包括标识符的组成、判断逻辑,并给出了示例代码。同时,提到了C语言的关键字及其作用。
摘要由CSDN通过智能技术生成

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
// C语言合法标识符 
#include<stdio.h>
main()
{
	int n,i,j;
	char s[50];
	
	scanf("%d",&n);
	getchar(); //多次wa原因:getchar()的位置 
	while(n--){//getchar()放这里就是错的 
		j=0;
		gets(s);	
	    if(s[0]>='a'&&s[0]<='z'||s[0]>='A'&&s[0]<='Z'||s[0]=='_'){
		     for(i=0;s[i]!='\0'&&j==0;i++){
			    if(!(s[i]>='0'&&s[i]<='9'||s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z'||s[i]=='_'))
			        j=1;
		    }
		    if(j==1)
		        printf("no\n");
		    else
		        printf("yes\n");
	    }
	    else
	        printf("no\n");
	}
}
//补充:
//(1).标识符只能由字母、数字和下划线三类字符组成
//(2).第一个字符必须是字母(第一个字符也可以是下划线,但被视作系统自定义的标识符)
//(3).大写字母和小写字母被认为是两个不同的字符,如A和a是两个不同的标识符 
//(4).标识符可以任意长,但只有前32位有效。有些旧的C版本对外部标识符的限制为6位。这是由于链接程序的限制所总成的,而不是C语言本身的局限性
//(5).标识符不能是C的关键字 
关键字 
auto 声明自动变量 
short 声明短整型变量或函数 
int 声明整型变量或函数 
long 声明长整型变量或函数 
float 声明浮点型变量或函数 
double 声明双精度变量或函数 
char 声明字符型变量或函数 
struct 声明结构体变量或函数 
union 声明共用数据类型 
enum 声明枚举类型 
typedef 用以给数据类型取别名 
const 声明只读变量 
unsigned 声明无符号类型变量或函数 
signed 声明有符号类型变量或函数 
extern 声明变量是在其他文件正声明 
register 声明寄存器变量 
static 声明静态变量 
volatile 说明变量在程序执行中可被隐含地改变 
void 声明函数无返回值或无参数,声明无类型指针 
if 条件语句 
else 条件语句否定分支(与 if 连用) 
switch 用于开关语句 
case 开关语句分支 
for 一种循环语句 
do 循环语句的循环体 
while 循环语句的循环条件 
goto 无条件跳转语句 
continue 结束当前循环,开始下一轮循环 
break 跳出当前循环 
default 开关语句中的“其他”分支 
sizeof 计算数据类型长度 
return 子程序返回语句(可以带参数,也可不带参数)循环条件 
 
为什么这里没考虑关键字= =
getchar ()的位置(注意是循环里还是循环外)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值