c++洛谷:规范命名

小光第一次参加 CSP-J2CSP−J2 ,他定义了 nn 个全局变量,每个变量名都是由 英文字母 和 数字 组成。(他知道变量名只能由 下划线 _、数字、英文字母 组成,且变量名的第1个字符不能为数字。由于 _ 不易输入,小光从不用下划线!)

小光认为只要遵守上述命名规则,就万事大吉了!但作为老前辈的佐为知道:小光的这些变量名是有潜在风险的,由于它们都只含小写英文字母和数字,那么它们可能与某些STL提供的函数、常量等冲突,如定义了变量 maxmax 则将会与 maxmax 函数冲突;此外,还可能引起其它一些错误!

佐为恳请你帮忙编写一个程序,检查这 nn 个变量名的第1个字符,若它为小写英文字母,则改为大写英文字母,从而保证这些全局变量名是没有潜在危险的!

输入格式
输入占 1+n1+n 行。

第1行包含一个整数,即题目中所述的 nn(0 < n \le 1000<n≤100)

接下来 nn 行,每行包含一个长度 不超过20的 字符串,代表一个变量名。

输出格式
输出占 nn 行,每行包含一个字符串,代表修改后的变量名。

输入输出样例
输入
6
next
x1
max
summary
count365
abs

输出
Next
X1
Max
Summary
Count365
Abs

不废啊!

#include <iostream>
using namespace std;
int main() {
  int n;
  cin >> n;
  char strs[n][100];
  for (int i = 0; i < n; i++) {
    cin >> strs[i];
    if (strs[i][0] >= 'a' && strs[i][0] <= 'z') {
      strs[i][0] -= ('a' - 'A');
    }
  }
  for (int i = 0; i < n; i++) {
    cout << strs[i] << endl;
  }
  return 0;
}

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7743683
  • 以下回答来自chatgpt:

    输入格式: 第一行是一个整数n,表示变量的个数。 接下来n行,每行包括两个部分,第1部分为变量名,由英文字母、数字、下划线组成,长度不超过20个字符;第2部分为变量值。

    输出格式: 对于每个变量,输出其修改后的变量名和变量值,各占一行。

    输入样例: 3 thinger_1 23 thinger_2 33 thinger_3 45

    输出样例: Thinger_1 23 Thinger_2 33 Thinger_3 45

    解题思路: 读入n和n个变量的姓名和值,对于每个变量,将它的头字母改成大写即可。 注意到在求某个字符大写的时候,可以调用toupper()函数。 代码:


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

你可以通过遍历每个字符串,判断首字符是否为小写字母进行修改。具体的,你可以使用 Python 中的 islower() 方法来判断字符串首字符是否为小写字母,如果是,则使用 upper() 方法将其转换为大写字母,否则则保持不变。

以下是一种可能的实现方法:

n = int(input())
for _ in range(n):
    s = input()
    if s[0].islower():
        s = s[0].upper() + s[1:]
    print(s)

这里首先输入全局变量的个数 n,然后对于每个变量名,读入其字符串 s 并判断其首字符是否为小写字母。如果是,则使用 upper() 方法将其转换为大写字母,否则则保持不变。最后将修改后的字符串输出。

注意,这里使用了切片方法来修改字符串,即 s[0].upper() + s[1:],将字符串首字符修改为大写字母后与其余字符拼接起来。

解题思路:

对于每个字符串,只需检查第一个字符是否为小写字母,若是,则将其变为大写字母即可。

Python代码:

n = int(input())
for i in range(n):
    s = input()
    if s[0].islower():
        s = s[0].upper() + s[1:]
    print(s)