杭电OJ_2024:C语言合法标识符

题目

在这里插入图片描述

核心思路

读入字符串后,按照合法标识符的定义进行判断:

  1. 第一个字符为字母或者下划线;
  2. 之后的字符只能为字母或数字或下划线;

代码分享&分析

#include<iostream>
#include<string>
using namespace std;
int main()
{
	int n, i, flag=0;
	int length;
	string str;
	cin >> n;
	getchar(); // 在输入字符并按下回车键后,缓冲区的字符读入变量中(n),而回车键('\n')仍然在缓冲区中。
				//当读入下一字符时,则会读入回车,出现“跳过”读入操作的现象。
	// cin.ignore()也可以 
	while(n--){
		getline(cin, str); // 读入一行字符串,与cin区别在于其遇到空格仍可正常读入,cin则会停止读入。
		length = str.length(); // str.length() 常用的字符串处理函数,输出字符串的长度
		if(length > 50) return 0;
		if(str[0] == '_' || (str[0] >= 'a' && str[0] <= 'z') || (str[0] >= 'A' && str[0] <= 'Z')){ 
		// 也可以用c++库函数isdigit()和isalpha()偷懒判断的
			flag++;
			for(i=1;i<length;i++){
				if(str[i] == '_' || (str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= '0' && str[i] <= '9')) flag++;	
			}
		} 
		if(flag == length) cout << "yes" << endl;
		else cout << "no" << endl;
		flag = 0;
	}
	return 0;
 }

难点

思路并不复杂,但输入输出着实费了一番功夫。吃一堑长一智吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值