杭电oj编码2024
来源:互联网 发布:模拟战争软件 编辑:程序博客网 时间:2024/04/30 03:11
问题描述:
输入一个字符串,判断其是否是C的合法标识符。
输入:
输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。
输出:
对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。
样例输入:
3
12ajf
fi8x_a
ff ai_2
样例输出:
no
yes
no
分析:
本题主要考if语句的使用。
C的合法标识符:开头只能是大小写字母或下划线,后面的字符可以是 大小写字母 或 下划线 或 数字组成的。
所以对于输入的标识符的判断:
1、首先需要对开头的字符进行判断,如果 不是 大写字母 或 小写字母 或 下滑线 则一定是错误的,直接输出错误即可。
2、如果开头的字符符合要求,则需要对后面的字符逐个进行判断,如果有一个或一个以上的字符不满足要求,则该字符串不满足要求。
代码:
#include<iostream>#include<cstring>#include<stdio.h>using namespace std;int main(){int n = 0;scanf( "%d" , &n);cin.ignore();//getchar(); 的作用是一样的,都是用于接收输入n时,输入的回车键</span>while (n--){char str[100] = { '\0' };//定义并初始化字符数组。gets(str);//获取输入的字符数组if ((str[0] >= 'a' && str[0] <= 'z') || (str[0] >= 'A' && str[0] <= 'Z') || str[0] == '_')//对获取到的字符的第一个字符进行判断是否满足要求{int i = 1;//放在for循环的外面,下面用来判断是否是合法的字符串for (; i < strlen(str); ++i){if (!((str[i] >= '0'&&str[i] <= '9') || (str[i] >= 'a'&&str[i] <= 'z') || (str[i] >= 'A'&&str[i] <= 'Z') || str[i] == '_')){printf("no\n");//如果都不满足,则输出nobreak;}}if (i == strlen(str))printf("yes\n");}elseprintf("no\n");}return 0;}
0 0
- 杭电oj编码2024
- 杭电OJ编码1000
- 杭电OJ编码1001
- 杭电OJ编码1002
- 杭电OJ编码1994
- 杭电oj编码2014
- 杭电oj编码2013
- 杭电oj编码2012
- 杭电oj编码2011
- 杭电oj编码2015
- 杭电oj编码2016
- 杭电oj编码2018
- 杭电oj编码2019
- 杭电oj编码2020
- 杭电oj编码2010
- 杭电oj编码2009
- 杭电oj编码2021
- 杭电oj编码2022
- Java线程池
- MyEclipse2015破解(土)法
- Practice: run clisp code via net
- 仿微信底端菜单栏界面
- 文章标题
- 杭电oj编码2024
- 计蒜客 寻找插入位置
- jar下载
- 解决listview滑动变黑。。
- 最常用的两种C++序列化方案的使用心得(protobuf和boost serialization)
- jq页面加载方式
- UVA 11292 Dragon of Loowater
- 人生目标----机器自主学习
- 数据库50道练习题表结构、数据及答案【重点为特殊用法和纠正网上错误答案】