杭电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
原创粉丝点击