前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小码匠的编程江湖【第78式】: [NOIP2018 普及组] 标题统计,感恩热心家长的指出问题,谢谢!

小码匠的编程江湖【第78式】: [NOIP2018 普及组] 标题统计,感恩热心家长的指出问题,谢谢!

作者头像
小码匠
发布2023-08-31 18:28:34
1870
发布2023-08-31 18:28:34
举报
文章被收录于专栏:小码匠和老码农

感恩

首先:要感谢热心的家长后台留言指摘问题点,非常感谢!谢谢您!

其次:简述下过程。

8/11晚上来电,有家长给我留言

这道题不应该输入整型数字吗?为什么要输入字符型呢?输入int变量,先判断正负,输出符号,再用while不断取余10再整除10,输出每一位上的值不就可以了吗?

我当时看了一眼代码,感觉也很奇怪,感觉不太对,

是这道题:NOIP2011(普及组):数字反转

  • https://mp.weixin.qq.com/s/fG7pUvmMchDHlrFkrB1y2w

怎么看代码和数字反转没任何关系呢。

我随手转给了小码匠,20分钟后,小码匠急了。

原来是我帮小码匠整理的时候,给弄错了。幸亏好心的家长帮指出来。

原题目已经删除了,今天再次重发。

非常感谢最近留言指摘问题的家长,部分有问题的文章已经修改或者更新了网盘,谢谢你们!!!

题目:

题目原文请移步下面的链接

  • https://www.luogu.com.cn/problem/P5015
    • 参考题解:https://www.luogu.com.cn/problem/solution/P5015
  • 标签:OINOIP模拟字符串

题目描述

凯凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符? 注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题字符数时,空格和换行符不计算在内。

输入格式

输入文件只有一行,一个字符串 s。

输出格式

输出文件只有一行,包含一个整数,即作文标题的字符数(不含空格和换行符)。

输入输出样例

输入 #1复制

代码语言:javascript
复制
234 

输出 #1复制

代码语言:javascript
复制
3

输入 #2复制

代码语言:javascript
复制
Ca 45 

输出 #2复制

代码语言:javascript
复制
4

解题

读题

  • 数据规模:要求5个字符串以内,所以如果开字符数组,数组长度定义6就可以。
    • 注意:长度不可以定义5,输入的最后一个字符获取不到。
  • 算法
    • 涉及字符比较大小:ASCII
  • 测试
    • case1:1个字符
    • case2:5个字符
    • case3:字符串中间有空格
    • case4: 字符串中间有连续空格
    • case5: 字符串的末尾有连续空格

代码

小码匠题解
代码语言:javascript
复制
void coder_solution() {
    // 定义字符数组,初始化为6,不能为5
    char str[6] = {};

    // 读取输入字符串
    cin.getline(str, 6);

    // 定义计数变量
    int count = 0;

    // 循环判断字符
    for (int i = 0; i < 5; i++) {
        // 判断字符是否为大写字母、小写字母、数字,是则加1
        if ((str[i] >= 48 && str[i] <= 57) || (str[i] >= 65 && str[i] <= 90) || (str[i] >= 97 && str[i] <= 120)) {
            count++;
        }
    }
    // 输出长度
    cout << count;
}
最优题解
代码语言:javascript
复制
// 思路:最优题解
// 1. 直接读入一行
// 2. 计算一行字符串长度
// 3. 循环判断字符是否为空,空减1
// 4. 输出统计结果
void best_solution() {
    // 定义接受输入的字符串
    string s;

    // 读取输入字符串
    getline(cin, s);

    // 获取字符串长度
    int l = s.length();

    // 记录符合条件字符串长度,初始和字符串长度相同
    int solve = l;
    for (int i = 0; i < l; i++) {
        // 字符空格时减-
        if (s[i] == ' ') {
            solve--;
        }
    }

    // 输出长度
    cout << solve << endl;
}

复盘

  • 小码匠题解
    • 定义字符数组一定要初始化
    • 判断字符是否为大写字母、小写字母、数字的方式还可以:str[i] >= 'A' && str[i] <= 'Z'
    • 测试数据不充分,导致提交的题解第一次未得到满分
  • 题解
    • 最优题解:代码简洁,必须学习
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小码匠和老码农 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 感恩
  • 题目:
  • 题目描述
    • 输入格式
      • 输出格式
        • 输入输出样例
        • 解题
          • 读题
            • 代码
              • 小码匠题解
              • 最优题解
            • 复盘
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档