PAT乙级1053

本文详细解析了一个关于观察期统计的编程问题,强调了题目中观察期与统计天数的区别,通过C++代码示例展示了如何正确理解和实现题目的要求,包括输入数据处理、条件判断及结果输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接

坑点``

题目里说的观察期超过给定的天数,而不是统计出来的天数超过给定的天数(测试点1、2)

实现


#include <iostream>
#include <cstdio>
using namespace std;


int main()
{
	int N, D,k,count1=0,count2=0,i,j;	//count1 可能 count2 空
	double e,temp;
	cin >> N >> e >> D;
	int m = 0;
	for (i = 0; i < N; i++)
	{
		cin >> k;
		m = 0;
		for (j = 0; j < k; j++)
		{
			cin >> temp;
			if (temp < e)	m++;
		}
		
		if (m > (k / 2))
		{
			k > D ? count2++ : count1++;
		}
	}
	printf("%.1f%% %.1f%%", (double)count1 / N * 100, (double)count2  / N * 100);
    return 0;
}


### 关于 PAT 乙级 C语言 题目1053 的解题思路 目前未找到针对 PAT 乙级 C语言 题目1053 的具体描述或官方文档。然而,基于以往的经验和其他相似题目[^1],可以推测该类题目通常涉及数据处理、字符串操作或者算法设计等内容。 #### 假设题目背景 假设题目要求统计某些特定条件下学生的成绩分布情况(类似于题目1038),则可以通过以下方式实现: 1. **输入解析**: 使用 `scanf` 或者其他标准库函数读取输入数据。 2. **数据存储**: 利用数组或其他容器结构保存学生成绩及其对应的学生数量。 3. **逻辑判断**: 对每个查询分数进行匹配并输出符合条件的结果。 4. **边界条件**: 特别注意当 k 超过一定范围时可能存在的重复查询需求。 以下是基于上述假设的一个通用解决方案框架: ```c #include <stdio.h> #define MAX_SCORE 101 // 根据实际情况调整最大分值定义 int main(){ int scores[MAX_SCORE]={0}; // 初始化计数器数组 int n,k; scanf("%d",&n); for(int i=0;i<n;i++){ int score; scanf("%d",&score); if(score>=0 && score<MAX_SCORE){ scores[score]++; } } scanf("%d",&k); while(k--){ int queryScore; scanf("%d",&queryScore); if(queryScore >=0 && queryScore < MAX_SCORE ){ printf("%d\n",scores[queryScore]); }else{ printf("Invalid Score\n"); } } return 0; } ``` 此代码片段展示了如何通过简单的循环和条件语句来完成基本的成绩统计功能,并能够应对多次相同请求的情形。 另外,在涉及到字符串解析的情况下,可借鉴如下技巧用于分离复合型输入中的数值部分[^2]: ```c #include <stdio.h> int main() { char inputStr[] = "Your mixed string with numbers like 123 and 456."; int numberBuffer; /* 提取第一个整数 */ sscanf(inputStr, "%*[^0-9]%d", &numberBuffer); printf("First Number Extracted: %d\n", numberBuffer); return 0; } ``` 以上例子说明了利用格式化输入函数可以从复杂文本中抽取所需的数字信息。 最后提醒一点就是对于大规模的数据集运算效率考量非常重要[^4][^5],因此建议尽可能采用高效排序算法以及合理剪枝策略减少不必要的计算开销。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值