【PTA题目】7-9 统计大写辅音字母 (15 分)

英文辅音字母是除AEIOU以外的字母。本题要求编写程序,统计给定字符串中大写辅音字母的个数。

输入格式:

输入在一行中给出一个不超过80个字符、并以回车结束的字符串。

输出格式:

输出在一行中给出字符串中大写辅音字母的个数。

输入样例:

HELLO World!

结尾无空行

输出样例:

4

结尾无空行

#include<stdio.h>
int main(){
    int count=0;
    char a[80];
    for(int i=0;i<80;i++){
        scanf("%c",&a[i]);
        if(a[i]=='\n')
        break;
    }
    for(int i=0;i<80;i++){
        if(a[i]>'A'&&a[i]<='Z'){
            if(a[i]!='E'&&a[i]!='I'&&a[i]!='O'&&a[i]!='U'){
                count++;
            }
        }
        if(a[i]=='\n')
        break;
    }
    printf("%d\n",count);
    return 0;
}

### 实现思路 为了统计字符串中大写辅音字母的数量,在编程时可以采用遍历输入字符串的方法,逐字符判断其是否属于指定的大写辅音范围。具体来说,先定义哪些字符被认为是大写辅音字母——即了&#39;A&#39;, &#39;E&#39;, &#39;I&#39;, &#39;O&#39;, 和 &#39;U&#39;之外的所有大写字母;接着通过循环读取每一个字符并检查它是否满足条件,如果符合条件则增加计数器。 对于Python语言而言,可以通过列表推导式简化这一过程,并利用内置函数`isupper()`来验证字符是不是大写字母[^2]。而对于C语言,则需要手动设置逻辑去排元音以及确认其余的字符处于&#39;A-Z&#39;之间[^4]。 下面别展示两种不同语言下的解决方案: #### Python版本实现方案 ```python def count_upper_consonants(s): consonant_count = sum(1 for c in s if c.isupper() and c not in "AEIOU") return consonant_count input_string = input().strip() result = count_upper_consonants(input_string) print(result) ``` 这段代码首先定义了一个名为`count_upper_consonants`的功能函数,用于接收一个字符串参数`s`,并通过生成表达式计算其中不属于"A", "E", "I", "O", 或者"U"的大写字母总数。之后从标准输入获取一行数据作为待处理的字符串,并调用上述方法得到最终的结果值打印出来。 #### C语言版本实现方案 考虑到PTA平台上的特定要求,这里提供了一种更简洁有效的C语言解法: ```c #include <stdio.h> int main(){ int cnt = 0; char ch; while ((ch=getchar()) != &#39;\n&#39;){ if(ch>=&#39;B&#39;&&ch<=&#39;D&#39;||ch>=&#39;F&#39;&&ch<=&#39;H&#39;||ch>=&#39;J&#39;&&ch<=&#39;N&#39;||ch>=&#39;P&#39;&&ch<=&#39;T&#39;||ch>=&#39;V&#39;&&ch<=&#39;Z&#39;) ++cnt; } printf("%d\n", cnt); return 0; } ``` 此段代码同样实现了相同功能,但是采用了不同的方式来判定目标字符集合。通过连续读入单个字符直到遇到换行符为止,并且只针对非元音的大写字母进行累加操作,最后输出累计次数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

茶然o

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

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

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

打赏作者

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

抵扣说明:

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

余额充值