NOIP-----2018-----普及组-----标题统计
题⽬描述
凯凯刚写了⼀篇美妙的作⽂,请问这篇作⽂的标题中有多少个字符?注意:标题中可能包含⼤、⼩写英⽂字母、数字字符、空格和换⾏符。统计标题字符数时,空格和换⾏符不计算在内。
输⼊格式:
输⼊只有⼀⾏,⼀个字符串 s。
输出格式:
输出只有⼀⾏,包含⼀个整数,即作⽂标题的字符数(不含空格和换⾏符)。
输⼊输出样例:
输⼊样例#1:
234
输出样例#1:
3
输⼊样例#2:
Ca 45
输出样例#2:
4
说明:
【输⼊输出样例 1 说明】
标题中共有 3 个字符,这 3 个字符都是数字字符。
【输⼊输出样例 2 说明】
标题中共有4个字符,包括1个⼤写英⽂字母,1个⼩写英⽂字母和2个数字字符,还有1个空格。由于空格不计⼊结果中,故标题的有效字符数为4个。
【数据规模与约定】
规定∣s∣表⽰字符串 s 的长度(即字符串中的字符和空格数)。
对于 40% 的数据,1≤∣s∣≤5,保证输⼊为数字字符及⾏末换⾏符。
对于 80% 的数据,1≤∣s∣≤5,输⼊只可能包含⼤、⼩写英⽂字母、数字字符及⾏末换⾏符。
对于 100% 的数据,1≤∣s∣≤5,输⼊可能包含⼤、⼩写英⽂字母、数字字符、空格和⾏末换⾏符。
第⼀次做的时候,时间超限(95分)……
下⾯是代码:
(时间超限95)C++代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
char a;
int ans=0;
while(cin.peek()!='\n') //扫⼀下新输⼊的字符是不是换⾏字符
{
cin>>a;
if(a!=' ')ans++;
}
cout<<ans<<endl;
return 0;
}
所以接着尝试……
同学告诉我,简单⼀点做,所以:
(答案错误90)C++代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
char a[6];
int ans=0,len;
gets(a);
len=strlen(a);
for(int i=1;i<=len;i++)
if(a[i]!=' ')ans++;
cout<<ans<<endl;
return 0;
}
字符串长度统计内⼼绝望!!!
后来**的我终于发现了⾃⼰的错误
下⾯是正确的代码
(AC)C++代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
char a[6];
int ans=0,len;
gets(a);//从a[0]开始写⼊,所以循环从i=0开始
len=strlen(a);
for(int i=0;i<len;i++)
if(a[i]!=' ')ans++;
cout<<ans<<endl;
return 0;
}
gets()
gets从标准输⼊设备读字符串函数,其可以⽆限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer(缓冲寄存器)的空间⾜够⼤,以便在执⾏读操作时不发⽣溢出。——源⾃360百科&百度百科
头⽂件:#include<stdio.h>(C)&#include<cstido>(C++)(包含在#include<bits/stdc++.h>中)
gets()和scanf("%s",s)
scanf("%s",s) 输⼊字符串时,如果输⼊了空格会认为字符串结束,空格后的字符将作为下⼀个输⼊项处理
gets()函数将接收输⼊的整个字符串直到遇到换⾏为⽌
(ps.gets()函数读取到‘\n’于是停⽌读取,但是它不会把\n包含到字符串⾥⾯去。然⽽,和它配合使⽤的puts()函数,却在输出字符串的时候⾃动换⾏。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论