既然这个题这么水

大家不如来盘点一下算法呗


首先说一个事:逗号表达式

这玩意的值是最后一个表达式的值

那么我们就可以愉快的放进循环条件里摩擦

话说这个应该是基础吧,大多数代码都可以这样干

具体可以后面看代码(会有注释)


好的,下面是正题(真·不正)


方法一:getchar法

(相当于cin.get(a))

这个知识点在我的题解里:

https://www.luogu.org/blog/jelly123/solution-p1200

代码:(getchar)

#include <cstdio>
using namespace std;
int main()
{
char a;int s=0;
while(a=getchar(),a!='\n')
{//↑就是了,循环先输入后判断,真香QWQ
if (a!=' ')
{
s++;
}
}
printf("%d",s);
return 0;
}

好了,我们暂且撤离,看看cin.get()版:

#include <cstdio>
using namespace std;
int main(){char a;int s=0;
while(cin.get(a),a!='\n')if (a!=' ')s++;
cout<<s;
return 0;}

方法二:getline法

这个方法小心食用

#include <iostream>
#include <cstring>
using namespace std;
int main(){int count=0,i=0;string input;
getline(cin,input);
for (i=0;i<input.size();i++){
if (input[i]!=' '&&input[i]!='\n')count++;}
cout<<count;return 0;}
//为了缩短长度,将就着看吧

但是cin.getline还没研究出来...

(真是一个蒟蒻啊QAQ)


方法三:gets法

这个方法必须小心(作死)使用!!!

@shm124

感谢这位同学提供的for循环里的核心

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std; int main(){int ans=0,i=0;char s[8];
memset(s,0,sizeof(s));gets(s);
for(int i=0;i<8;i++)
if(s[i]>='A'&&s[i]<='Z')ans++;
if(s[i]>='a'&&s[i]<='z')ans++;
if(s[i]>='0'&&s[i]<='9')ans++;
cout<<ans;return 0;}

好的,我们现在有了几种基础方法,那能不能看看题...

没错,5个字符,直接顺序不就好了吗...

所以...


方法四:顺序结构硬输入法!!!

@Lhc_fl 真鸡贼啊

#include<bits/stdc++.h>
using namespace std;
int main(){
int ans=0;
char c;
if(cin>>c)ans++; //cin自动去除空格换行
if(cin>>c)ans++; //cin在读不到数据时返回0
if(cin>>c)ans++;
if(cin>>c)ans++;
if(cin>>c)ans++;
cout<<ans;
}

经过了这么多蒟蒻做法(打卡),

不如来看看库函数之类的蹭一蹭...


方法五:库函数摩擦法(附加迭代)

感谢dalao@黄H睿R %%%

#include<iostream>
#include<string>
#include<cctype>
using namespace std;
string st;
int ans;
int main()
{
getline(cin,st);
for(string::iterator it=st.begin();it!=st.end();it++)//使用迭代器
if(isalnum(*it))
ans++;
cout<<ans;
return 0;
}

方法五里面:#include是库函数的库,

库函数是isalnum(*it),没错,一开始我没有加上...


然而我们的方法并没有完...

彩蛋一:

#include<iostream>
using namespace std;
int ans=0;
char s;
int main()
{
while(cin>>s)if(s!=' ') ans++;
cout<<ans<<endl;
return 0;
}

强制输入...注意win 系统下调试

((ctrl+z)+enter)×2即可..

彩蛋二:

现在我们的c++更新真快啊..

合并都只需要+-了吗?!

然而是的...

@Nova_守门员

你的题解我进行了优化,主函数真是简单

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
string input()
{
char ch;
string str="";
ch=getchar();
while(ch!='\n')
{
if (ch!=' ')str+=ch;
ch=getchar();
}
return str;
}
int main()
{
string s;
s=input();
cout<<s.size();
}

好了,就说这么多(真少)

有什么问题请评论...

纯知识点整理贴(放心,真人测试可AC)

蒟蒻求过,辛苦到家

题解 P5015 【标题统计】的更多相关文章

  1. P5015 标题统计

    P5015 标题统计 ‘   ’ 不等于空格,空格是个字符 代码: #include<iostream> #include<cstdio> #include<cmath& ...

  2. NOIP2018普及T1暨洛谷P5015 标题统计 题解

    题目链接:https://www.luogu.org/problemnew/show/P5015 分析: 这道题大概是给个签到分吧.很显然的字符串操作.本篇题解主要帮助初学者,请大佬略过. 首先给大家 ...

  3. 『题解』洛谷P5015 标题统计

    题意描述 给你一个字符串,求所有字符的总数. 字符只包含数字,大小写字母. 分析 字符串的长度还是\(\le5\)的. 直接枚举就可以了. AC代码: NOIP官方标准程序是这样的 #include ...

  4. 洛谷 P5015 标题统计

    第一道题很简单,标签:字符串.模拟. 只需要一个判断去除空格就对了: if(a[i]!=' ' && a[i]!='\n') v++; code: #include<iostre ...

  5. [题解]NOIP2018(普及组)T1标题统计(title)

    NOIP2018(普及组)T1标题统计(title) 题解 [代码(AC)] #include <iostream> #include <cstdio> #include &l ...

  6. [Noip 2018][标题统计 龙湖斗 摆渡车 对称二叉树]普及组题解

    啊喂,都已经9102年了,你还在想去年? 这里是一个Noip2018年PJ第二题打爆的OIer,错失省一 但经过了一年,我学到了很多,也有了很多朋友,水平也提高了很多,现在回看当时: 今年的Noip ...

  7. 【洛谷p5015】标题统计

    (写上瘾了再来一篇吧) 标题统计[传送门] 洛谷算法标签 字符串这种东西,我看到是崩溃的.因为我们只学到了二维数组[这个梗自行get],总之我们当时还没有学.然后显然就是各种翻书,各种百度.大致了解了 ...

  8. 洛谷 题解 P5015 【标题统计】 NOIP2018 普及组 T1

    没有人用 scanf("%c", &ch) != EOF 吗? scanf 和 EOF 会伤心的. 思路:逐个读入字符,遇到EOF中止,对于每个读入的字符进行判断. 附上考 ...

  9. 【NOIP2018】标题统计-C++

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

随机推荐

  1. 【转载】ID3DXSPRITE接口简单使用

    原文:ID3DXSPRITE接口简单使用 前些日子一直研究DDraw,毕竟是DirectX7的东西了,所以转手用DirectD3D9,用了Surface进行绘图,可是怎么做透明色也都是不行loadfr ...

  2. 【LG3243】[HNOI2015]菜肴制作

    题面 洛谷 题解 首先我们有个非常显然的思路, 就是直接拓扑排序,用小根堆代替队列再按顺序输出,但是很显然是错的, 因为这只保证了字典序最小,而无法保证答案最优,\(<2,4>,<3 ...

  3. Yii 2.0 使用验证码

    Yii2.0 提供了验证码组件.调用起来比较方便.以登录页面添加验证码为例. 1. 模型中添加字段和验证规则. common\models\LoginForm 添加如下代码 public $captc ...

  4. STM32L431驱动带UC1698芯片调试记录

    1, 数据线连接方式,这次使用的是8080格式的接口,如下 2. 主要是信号和数据引脚 DATA0-DATA7  并口的数据 RST 复位信号 WR 写信号 RD 读信号 C/D 数据还是命令 CS片 ...

  5. Docker--从安装到搭建环境

    docker 1. ubuntu下安装docker 安装docker有两种方法: 一种是用官方的bash脚本一键安装. 直接一条命令就解决了: $ curl -sSL https://get.dock ...

  6. Spring学习(3):Spring概述(转载)

    1. Spring是什么? Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发. 在面向对象思想中 ...

  7. Centos7部署Kubernetes集群(单工作节点)+配置dashboard可视化UI

    目标:docker+kubernetes+cadvosor+dashboard 一:物理硬件 两台虚拟机(centos7):一台做为主节点(master),一台做为工作节点(node) [root@M ...

  8. 【Pthon入门学习】多级菜单小例子

    menu_list = { '北京':{ '昌平':{ '回龙观':{ '和谐家园':{}, '矩阵小区':{}, '北店家园':{} }, '沙河':{ '北街家园1区':{}, '北街家园2区': ...

  9. 华为笔试——C++进制转换

    题目:2-62进制转换 题目介绍:输入一个n1 进制的整数(包括负数),将其转换成n2 进制,其中n1 .n2 的范围是 [ 2,62 ] .每个数字的范围是0-9.a-z.A-Z.不用考虑非法输入. ...

  10. 如何使用HtmlTestRunner让自动化测试报告内容更丰富

    原文出自:http://www.cnblogs.com/tsbc/p/4128150.html 简述 使用selenium webdriver + Python做自动化测试,执行完成后要生成测试报告, ...