鱼C论坛

 找回密码
 立即注册
查看: 2349|回复: 3

[已解决]为什么答案是错的啊

[复制链接]
发表于 2023-10-15 11:16:45 | 显示全部楼层
这段代码存在以下问题:

1. 如果字符串的第一个字符是数字,则不会进入循环,b变量没有被初始化,最后输出结果不正确。
2. 如果字符串的第一个字符不是字母、数字或下划线,则直接输出no,没有进入循环判断,也没有判断字符串长度是否超过20。
3. 没有考虑到字符串长度超过20的情况。

下面是一个更简单的实现:

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;

  4. int main() {
  5.     string s;
  6.     cin >> s;
  7.     if (!isalpha(s[0]) && s[0] != '_') {
  8.         cout << "no";
  9.         return 0;
  10.     }
  11.     if (s.size() > 20) {
  12.         cout << "no";
  13.         return 0;
  14.     }
  15.     for (int i = 1; i < s.size(); i++) {
  16.         if (!isalnum(s[ i]) && s[ i] != '_') {
  17.             cout << "no";
  18.             return 0;
  19.         }
  20.     }
  21.     cout << "yes";
  22.     return 0;
  23. }
复制代码


首先使用string类型读入字符串,判断第一个字符是否是字母或下划线,如果不是则直接输出no。然后判断字符串长度是否超过20,如果是则输出no。最后遍历字符串中的每一个字符,判断是否是字母、数字或下划线,如果不是则输出no。如果遍历完整个字符串都没有输出no,则输出yes。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-22 09:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表