pta统计英文字母和数字字符

本题要求编写程序,输入N个字符,统计其中英文字母、数字字符和其他字符的个数。

输入格式:
输入在第一行中给出正整数N,第二行输入N个字符,最后一个回车表示输入结束,不算在内。

输出格式:
在一行内按照

letter = 英文字母个数, digit = 数字字符个数, other = 其他字符个数

的格式输出。请注意,等号的左右各有一个空格,逗号后有一个空格。

输入样例:
在这里给出一组输入。例如:

10
aZ &
09 Az

输出样例:
在这里给出相应的输出。例如:

letter = 4, digit = 2, other = 4

#include <stdio.h>

int letter = 0, digit = 0, other = 0, n;
char ch;
int a;

int main()
{
    scanf("%d", &n);

    int i = 1;
    while (i <= n)
    {
        ch = getchar();
        if (ch != '\n')
        {
            if ('0' <= ch && ch <= '9')
            {
                digit++;
            }
            else if (('A' <= ch && ch <= 'Z') || ('a' <= ch && ch <= 'z'))
            {
                letter++;
            }
            else
            {
                other++;
            }
            i++;
        }
        else
        {
            continue;
        }
        
    }

    printf("letter = %d, digit = %d, other = %d", letter, digit, other);

    return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 题目描述: 给定一个字符串,统计其中英文字母数字字符的个数。 输入格式: 输入为一个字符串,长度不超过10000。 输出格式: 输出两个整数,分别表示字符串中英文字母数字字符的个数,中间用一个空格隔开。 样例输入: Hello123 样例输出: 5 3 解题思路: 遍历字符串,判断每个字符是否为英文字母数字字符,如果是则对应计数器加1。 代码实现: ### 回答2: pta上的题目要求我们写一个程序,来求字符串中英文字母数字字符的个数。这个问题比较简单,我们只需要遍历这个字符串中的每个字符,然后判断它是不是英文字母或者数字字符,如果是,那么就计数器加一,最后输出计数器的值即可。 具体的实现方法可以使用C++来编写,代码如下所示: ```c++ #include <iostream> #include <string> using namespace std; int main() { string s; getline(cin, s); // 读入字符串,包括空格 int letterCount = 0; // 英文字母计数器 int digitCount = 0; // 数字字符计数器 for (int i = 0; i < s.size(); i++) { if (isalpha(s[i])) // 判断是否为英文字母 { letterCount++; } else if (isdigit(s[i])) // 判断是否为数字字符 { digitCount++; } } cout << letterCount << " " << digitCount << endl; // 输出结果 return 0; } ``` 以上程序通过使用 getline() 函数来读入整行字符串,然后使用 isalpha() 和 isdigit() 函数来判断每个字符是否为英文字母数字字符。最后,分别统计英文字母数字字符的个数,最后再将结果输出即可。 需要注意的是,如果使用空格来区分字符,而不使用 getline() 函数来读入整行字符串的话,会导致空格不能正确判断为非英文字母数字字符。因此,我们建议在读入字符串时使用 getline() 函数。 ### 回答3: 题目描述: 输入个字符串,要求计算其中英文字母数字字符的个数。 解题思路: 本题的思路相对比较简单,我们只需要从字符串的头开始遍历,每次判断一下当前字符是否为英文字母数字字符,如果是的话就相应的计数器加1,最终输出计数器即可。 Python代码如下: ```python s = input() # 输入字符串 count_num = 0 # 数字计数器 count_alpha = 0 # 母计数器 for char in s: if char.isdigit(): # 判断是否为数字字符 count_num += 1 # 数字计数器加1 elif char.isalpha(): # 判断是否为字符 count_alpha += 1 # 母计数器加1 print(count_alpha, count_num) # 输出结果 ``` C++代码如下: ```cpp #include <iostream> #include <string> using namespace std; int main() { string s; cin >> s; // 输入字符串 int count_num = 0; // 数字计数器 int count_alpha = 0; // 母计数器 for (int i = 0; i < s.size(); i++) { if (isdigit(s[i])) // 判断是否为数字字符 { count_num++; // 数字计数器加1 } else if (isalpha(s[i])) // 判断是否为字符 { count_alpha++; // 母计数器加1 } } cout << count_alpha << ' ' << count_num << endl; // 输出结果 return 0; } ``` 时间复杂度分析: 本题中,我们只需要遍历一遍字符串,时间复杂度为$O(n)$,其中$n$为字符串的长度,因此算法的时间复杂度与字符串的长度成正比。 空间复杂度分析: 本题中,我们只需要开两个额外的变量来记录计数结果,因此算法的空间复杂度为$O(1)$,是一个常数级别的复杂度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Len1Mi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值