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

题目链接:https://www.luogu.org/problemnew/show/P5015

分析:

这道题大概是给个签到分吧。很显然的字符串操作。本篇题解主要帮助初学者,请大佬略过。

首先给大家介绍一个叫

gets(s)gets(s)

的东东。

s☞字符串的名称

他有什么作用呢?

将一行字符从文件或屏幕中读入,可以读空格,遇到换行跳出。
—— by 本人

此题也明显告诉是读入仅一行,我们可以这么做。

哇!我们现在可以在计算机里进行操作了耶!

在这里告诉大家noip很重要的一点,读完题要看数据范围。

为什么呢?因为我们可以理解题目后预估自己的水平后,结合数据范围估计一下自己大概往多少分的目标去。

扯回正题,那么我们如何知道他给了我们几个字符呢?我们之前一起读了进去,这咋办呢?

再介绍一个东东——

strlen(s)strlen(s)

这里的n指字符串的名称。

我们在代码中进行如下操作

int n=strlen(s);

就能把n记为s串的长度了。

接下来我们看到数据范围:

1<=s<=51<=∣s∣<=5

可以穷举一遍!

我们在程序中进行如下操作:

for(int i=0;i<n;i++)
{
	//do something
}

然后,我们再采用if语句判断即可。

40分:

if(s[i]>='0'&&s[i]<='9')
		ans++;

80分:

我暂时都不清楚80分是咋得的。。。

100分:

if(s[i]>='A'&&s[i]<='Z')
ans++;
if(s[i]>='a'&&s[i]<='z')
ans++;
if(s[i]>='0'&&s[i]<='9')
ans++;

AC完整代码:

#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
	char s[10];
	gets(s);
	int n=strlen(s);
	int ans=0;
	for(int i=0;i<n;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++;
	}
	printf("%d",ans);
	return 0;
}
posted @ 2018-11-11 18:35  ShineEternal  阅读(109)  评论(0编辑  收藏  举报