题目链接:https://www.luogu.org/problemnew/show/P5015
分析:
这道题大概是给个签到分吧。很显然的字符串操作。本篇题解主要帮助初学者,请大佬略过。
首先给大家介绍一个叫
gets(s)
的东东。
s☞字符串的名称
他有什么作用呢?
将一行字符从文件或屏幕中读入,可以读空格,遇到换行跳出。
—— by 本人
此题也明显告诉是读入仅一行,我们可以这么做。
哇!我们现在可以在计算机里进行操作了耶!
在这里告诉大家noip很重要的一点,读完题要看数据范围。
为什么呢?因为我们可以理解题目后预估自己的水平后,结合数据范围估计一下自己大概往多少分的目标去。
扯回正题,那么我们如何知道他给了我们几个字符呢?我们之前一起读了进去,这咋办呢?
再介绍一个东东——
strlen(s)
这里的n指字符串的名称。
我们在代码中进行如下操作
int n=strlen(s);
就能把n记为s串的长度了。
接下来我们看到数据范围:
1<=∣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;
}