HDOJ 2027 统计元音

本文介绍了一个简单的C语言程序,用于统计输入字符串中的元音字母(a, e, i, o, u)的数量。通过逐字符扫描并使用tolower函数转换为小写来判断是否为元音。

        统计输入的字符串中元音字母出现的次数,分别统计记数就好。

#include <cstdio>
#include <cctype>

const int MAX_SIZE = 100 + 2;
char str[MAX_SIZE];
//#define yangyuan
int main()
{
#ifdef yangyuan
	freopen("in.txt", "r", stdin);
#endif // yangyuan
    int n;
    scanf("%d", &n);
    getchar();// 读取末尾的换行符'\n'
    int a, e, i, o, u;
    while (n--)
	{
		fgets(str, MAX_SIZE, stdin);
		a = e = i = o = u = 0;
        for (int k = 0 ; k < MAX_SIZE && str[k] != '\n' && str[k] != '\0'; ++k)
		{
            switch (tolower(str[k]))
            {
			case 'a':
                a++;
				break;
			case 'e':
				e++;
				break;
			case 'i':
				i++;
				break;
			case 'o':
				o++;
				break;
			case 'u':
				u++;
				break;
            }
		}
        printf("a:%d\n", a);
        printf("e:%d\n", e);
        printf("i:%d\n", i);
        printf("o:%d\n", o);
        printf("u:%d\n", u);
        if (0 != n)
			printf("\n");
	}
    return 0;
}


<think>嗯,用户想知道在杭电OJ(HDOJ)的第100题中,也就是题号从2000到2099之间,哪道题开始涉及到结构体排序。首先,我需要回忆一下这些题目的内容,或者查找相关资料。 结构体排序通常涉及到自定义排序规则,比如按照多个条件对结构体中的字段进行排序。在编程题中,这类问题常见于需要对一组数据进行特定规则排序的情况,比如学生成绩按分数和姓名排序,或者事件按时间排序等。 接下来,我需要回顾HDOJ的题目列表,特别是2000到2099题号范围内的题目。可能需要逐个查看这些题目,找出需要结构体排序的题目。不过,由于记忆有限,可能需要借助以往的解题经验或者在线资源来确认。 比如,HDOJ 2020题是绝对值排序,但这里可能只需要对数值进行绝对值处理后再排序,可能不需要结构体。HDOJ 2033题是关于时间相加的,可能也不涉及结构体。HDOJ 2040题是亲和数,可能也不涉及排序。 再往后的题目中,HDOJ 2076题是计算夹角,可能不需要结构体。HDOJ 2093题是考试排名,这个题目可能需要结构体,因为需要处理学生的多个属性(解题数和罚时),并根据这些属性进行排序。这可能是一个需要结构体排序的题目。 不过,我需要进一步确认题号。比如,HDOJ 2093的题目描述是否真的需要结构体。根据回忆,考试排名问题通常要求按解题数目从多到少,再按罚时从少到多排序,这就需要定义一个结构体存储每个学生的信息,然后自定义比较函数进行排序。因此,HDOJ 2093可能是一个涉及结构体排序的题目。 此外,HDOJ 2023题是求平均成绩,可能需要结构体来存储学生和课程的信息,但可能不需要排序。而HDOJ 2052题是图像旋转,可能不需要结构体。HDOJ 2065题是"红色病毒"问题,属于数学或递推,也不涉及结构体。 因此,在2000到2099范围内,HDOJ 2093可能是第一个需要结构体排序的题目。当然,可能还有其他题目更早涉及,比如HDOJ 2027统计元音可能需要结构体来存储各个元音的数量,但排序可能不是主要部分。需要进一步确认。 可能还需要检查HDOJ 2000到2099的列表,例如HDOJ 2039题是判断三角形,可能不需要结构体。HDOJ 2043题是密码安全性检查,也不涉及结构体。HDOJ 2054题是大数比较,可能也不需要结构体。 综上,HDOJ 2093考试排名应该是这个范围内较早涉及结构体排序的题目。用户可能需要从这道题开始练习结构体排序的应用。</think>在杭电OJ(HDOJ)的 **2000-2099** 题号范围内,涉及结构体排序的典型题目是 **HDOJ 2093(考试排名)**。以下是逐步说明: --- ### **1. 题目背景** **HDOJ 2093(考试排名)** 要求根据学生的比赛成绩进行排名。需要处理以下规则: - **解题数**从高到低排序。 - 若解题数相同,按 **总罚时** 从低到高排序。 - 若解题数和罚时都相同,按 **姓名** 字典序排序。 这种多条件排序需要定义结构体存储学生信息,并自定义排序规则。 --- ### **2. 结构体定义** 首先定义一个结构体存储每个学生的信息: ```cpp struct Student { string name; // 学生姓名 int solved; // 解题数 int penalty; // 总罚时 }; ``` --- ### **3. 自定义排序规则** 在C++中,通过自定义比较函数实现多条件排序: ```cpp bool compare(const Student &a, const Student &b) { if (a.solved != b.solved) { return a.solved > b.solved; // 解题数降序 } else if (a.penalty != b.penalty) { return a.penalty < b.penalty; // 罚时升序 } else { return a.name < b.name; // 姓名字典序升序 } } ``` --- ### **4. 题目关键点** - **输入处理**:需要解析每行输入中的解题时间和罚时。 - **数据存储**:使用结构体数组或`vector<Student>`存储所有学生信息。 - **排序调用**:使用`sort()`函数并传入自定义的`compare`函数。 --- ### **5. 其他可能涉及结构体排序的题目** 在2000-2099范围内,以下题目也可能涉及结构体排序: - **HDOJ 2023(求平均成绩)**:可能需要结构体存储学生多门课程的成绩,但排序不是核心。 - **HDOJ 2068(RPG的错排)**:不涉及结构体排序。 - **HDOJ 2080(夹角有多大II)**:无需结构体。 --- ### **总结** 建议从 **HDOJ 2093(考试排名)** 开始练习结构体排序。掌握该题后,可尝试更复杂题目(如多字段排序或动态条件排序)。其他结构体排序的经典题分布在 **2100+** 题号范围(如HDOJ 2138)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值