睡觉觉觉得 2023-08-25 14:39 采纳率: 85.2%
浏览 15

变量定义(C++)!

描述

我们都知道,C++的变量名定义必须遵守以下三个规范:

第一,变量名必须以字母或下划线开头;

第二,变量名只含有字母,下划线和数字;

第三,变量名不能使用C++的保留字。

现在,壮壮起了N个变量名,请你帮判断这些变量名是否合法。为简单起见,

C++的保留字只需要考虑以下十个:

“include”、“using”、 “namespace” 、“return”、“main”、

“int”、 “float”、 “double”、“string”、 “char”。

输入
N+1行,第一行,一个整数N,表示变量名的个数。(1<=N<=20)

第2行到第N+1行,每行一个字符串,表示一个变量名。

每个变量名的长度小于100个字符.

输出
N行,每行对输入的一个变量名做出判断,如果变量名合法,输出“Yes”,否则输出“No”。

输入样例 1

4
doub le
Doub le
double pi=3. 14
3Q
输出样例 1

No
Yes
No
No
来源

2023 广西中小学生程序设计挑战赛进阶组复赛

语言:
C++

  • 写回答

3条回答 默认 最新

  • 关注

    遍历字符串进行过滤,看看是否符合要求,代码如下:

    #include <iostream>
    #include <string>
    #include <cstring>
    using namespace std;
    
    int isAlf(char c)
    {
        if (c >= 'a' && c <= 'z')
            return 1;
        if (c >= 'A' && c <= 'Z')
            return 1;
        return 0;
    }
    
    int isNumber(char c)
    {
        if (c >= '0' && c <= '9')
            return 1;
        return 0;
    }
    
    
    
    int main()
    {
        int T;
        cin >> T;
        getchar();
        char blz[][40] = { "include","using","namespace","return","main","int","float","double","string","char" };
        for (int i = 0; i < T; i++)
        {
            string s;
            getline(cin, s);
            //判断是否一字母或下划线开头
            if (isAlf(s.at(0)) || s.at(0) == '_')
            {
                //判断是否金汉字母,下划线和数字
                int j = 0;
                for (; j < s.length(); j++)
                {
                    if (isAlf(s.at(j)) || isNumber(s.at(j)) || s.at(j) == '_')
                        continue;
                    else
                        break;
                }
                if (j == s.length())
                {
                    //判断是否是保留字
                    int k = 0;
                    for (; k < 10; k++)
                    {
                        if (strcmp(s.c_str(), blz[k]) == 0)
                            break;
                    }
                    if (k == 10)
                        cout << "Yes" << endl;
                    else
                        cout << "No" << endl;
                }
                else
                    cout << "No" << endl;
            }
            else
                cout << "No" << endl;
        }
        return 0;
    }
    
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 8月25日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 易优eyoucms关于二级栏目调用的问题
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题