PAT L1-003. 个位数统计

本文介绍了一个简单的C语言程序,该程序用于统计输入字符串中每个数字字符出现的次数,并输出统计结果。通过使用字符数组和整数数组进行操作,程序能够有效处理包含大量数字字符的字符串。

题目链接

#include <stdio.h>
#include <string.h>

int
main() {
    int ans[10], i;
    char s[1005];

    scanf("%s", s);
    for( i = 0; i < 10; i++ ) {
        ans[i] = 0;
    }
    for( i = 0; i < strlen(s); i++ ) {
        ans[s[i] - '0']++;  ///
    }
    for( i = 0; i < 10; i++ ) {
        if( ans[i] != 0 ) {
            printf("%d:%d\n", i, ans[i]);
        }
    }

    return 0;
}
### 关于 PAT L1-003 目及答案解析 #### 目描述 给定一个长度不超过 10 的由小写英文字母组成的字符串,要求统计其中元音字母(a, e, i, o, u)的数量。如果遇到字符 'y' 或者 'Y',则将其视为半元音,在其前后均为辅音的情况下计为元音;其他情况下不计入。 输入格式: 输入一个小写字母组成的字符串 S (1 ≤ |S| ≤ 10),可能包含'y'。 输出格式: 输出两个整数 n 和 m,分别表示不含'y'的元音数量以及考虑'y'后的总元音数量,中间用单个空格分隔。 ```cpp #include <iostream> #include <string> using namespace std; bool is_vowel(char c){ string vowels = "aeiou"; return vowels.find(c) != string::npos; } int count_vowels(const string& s){ int normal_count = 0, special_count = 0; for(int i=0; i<s.size(); ++i){ if(is_vowel(s[i])) { ++normal_count; ++special_count; } else if(s[i]=='y'||s[i]=='Y'){ bool prev_consonant = true, next_consonant=true; if(i>0 && !is_vowel(s[i-1])&&(s[i-1]!='y'&&s[i-1]!='Y')) prev_consonant=false; if(i<s.length()-1&&!is_vowel(s[i+1])&&(s[i+1]!='y'&&s[i+1]!='Y')) next_consonant=false; if(!prev_consonant&&next_consonant||!next_consonant&&prev_consonant) ++special_count; } } cout << normal_count << " " << special_count; } ``` 此代码实现了对给定字符串中元音及其特殊情况下的计算功能[^1]。通过定义辅助函数`is_vowel()`来判断某个字符是否属于标准意义上的元音,并利用布尔变量跟踪'y'前后的状态变化情况,从而实现特殊条件下'y'作为元音处理的需求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值