zoukankan      html  css  js  c++  java
  • HDU-2024 C语言合法标识符

    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语言合法标识符定义为仅由字母,数字,下划线构成,且首字符必须为字母或下划线。读取一个字符串后用循环对每一个字符进行判断,若每一个字符都合法,则标志变量为0.
     
    备注:1.输入问题。一开始想用cin直接输入字符串,但是测试数据是有空格的,cin无法读取空格。后来改用cin.getline(),但是它的操作对象是字符数组。最后才找到getline()函数。
    2.判断问题。一开始是想用ASCII码进行判断,但是写出来的程序略显冗余,想着写一个判断函数,但是代码量还是没有得到简化,最后想起来<cctype>/<ctypr.h>头文件里有函数可以直接用。
     1 #include<iostream>
     2 #include<cctype>
     3 using namespace std;
     4 int main()
     5 {
     6     int n;
     7     cin >> n;
     8     getchar();
     9     while (n--)
    10     {
    11         string a;
    12         getline(cin,a);
    13         if (isalpha(a[0])||a[0]=='_')//isalpha(a)判断a是否为字母,若是则返回0;
    14         {
    15             int flag = 1;
    16             for (int i = 1; i < a.size(); i++)
    17             {
    18                 if (isalnum(a[i])|| a[i] == '_') flag=0;//isalnum(a)判断a是不是字母或数字,若是则返回0;
    19                 else { flag++; break; };
    20             }
    21             if (flag) cout << "no";
    22             else cout << "yes";
    23         }
    24         else cout << "no";
    25         cout << endl;
    26     }
    27     return 0;
    28 }
    函数名称 返回值
    isalnum() 如果参数是字母数字,即字母或数字,该函数返回true
    isalpha() 如果参数是字母,该函数返回真
    isblank() 如果参数是空格或水平制表符,该函数返回true
    iscntrl() 如果参数是控制字符,该函数返回true
    isdigit() 如果参数是数字(0~9),该函数返回true
    isgraph() 如果参数是除空格之外的打印字符,该函数返回true
    islower() 如果参数是小写字母,该函数返回true
    isprint() 如果参数是打印字符(包括空格),该函数返回true
    ispunct() 如果参数是标点符号,该函数返回true
    isspace()

    如果参数是标准空白字符,如空格、进纸、换行符、回车

    、水平制表符或者垂直制表符,该函数返回true

    isupper() 如果参数是大写字母,该函数返回true
    isxdigit() 如果参数是十六进制的数字,即0~9、a~f、A~F,该函数返回true
    tolower() 如果参数是大写字符,则返回其小写,否则返回该参数
    toupper() 如果参数是小写字母,则返回其大写,否则返回该参数

    以上列出了<cctype>函数及用法,转自https://www.cnblogs.com/zy691357966/p/5480456.html

    另:本题未考虑C语言合法标识符不应含有关键字,否则更加麻烦。

    ————————————————
    心里有光,哪儿都美
  • 相关阅读:
    Git

    学而不记则徒劳无功
    Redis基础
    哈希表
    第一个Python程序
    Python 环境搭建 基于 Windows
    执行数据库的插入操作 insert
    Eclipse连接到My sql数据库的操作总结/配置数据库驱动
    数据库 (一)
  • 原文地址:https://www.cnblogs.com/harutomimori/p/10051955.html
Copyright © 2011-2022 走看看