【每日编程-390期】西北大学上机题(八)

教育   2024-12-19 10:01   广西  

西北大学上机题(八)


每日编程中遇到任何疑问、意见、建议请公众号留言或加入每日编程群聊739635399



字符串处理-3-合法标识符。

输入一个字符串,判断其是否是C语言的合法标识符,标识符由字母、下划线、数字这三种类型组成,但开头必须是字母或下划线(不用判断是否和保留字相同)。

输入格式:

每组输入数据是一个长度不超过50的字符串。

输出格式:

对于每组输入数据,如果是C的合法标识符,请输出“yes”,否则,输出“no”。

输入样例:

12ajf

输出样例:

no

解决方法:

(1)算法的基本思想:

首先检查字符串首字符是否是下划线或者字母,若不是,则不合法。然后检查后续字符,检查是否是字母、数字或下划线组成的,若不是,则不合法。

(2)代码实现:

#include <iostream>
#include <string>
using namespace std;

bool isNumber(char c);            //检查是否是数字字符
bool isCharacter(char c);         //检查是否是字母字符
bool isUnderline(char c);         //检查是否是下划线
bool isValidIDentifier(string s)//判断是否是合法标识符

int main(void)
{
    string s;
    cout << "请输入标识符:" << endl;
    getline(cin, s);
    if (isValidIDentifier(s))
    {
        cout << "yes" << endl;
    }
    else
    {
        cout << "no" << endl;
    }
    return 0;
}

bool isNumber(char c)
{
    bool result = false;
    if (c >= '0' && c <= '9')
    {
        result = true;
    }
    return result;
}

bool isCharacter(char c)
{
    bool result = false;
    if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
    {
        result = true;
    }
    return result;
}

bool isUnderline(char c)
{
    if (c == '_')
    {
        return true;
    }
    else
    {
        return false;
    }
}

bool isValidIDentifier(string s)
{
    bool result = true;
    //检查首字符是否是下划线或字母
    if (!isUnderline(s[0]) && !isCharacter(s[0]))
    {
        return false;
    }
    //检查后续字符是否是字母、下划线或数字组成
    for (int i = 1; i < s.length(); i++)
    {
        if (!isUnderline(s[i]) && !isCharacter(s[i]) && !isNumber(s[i]))
        {
            result = false;
            break;
        }
    }
    return result;
}

明日预告:西北大学上机题(九)
字符串处理-4-单词统计。

给定一个字符串,请计算其中一共包含多少个单词(假设连续的非空格字母即为一个单词)。

输入格式:

输入数据是一个长度为S(0<S<1000)的字符串,其中只包含字母和空格。

输出格式:

请输出给定字符串一共包含的单词数。

输入样例:

Welcome to NWU

输出样例:

3


灰灰考研
最全的【计算机考研】【软件考研】考研信息! 最丰富的共享资料! 最大程度上帮助学渣狗登上研究生大门!
 最新文章