PTA c语言 买文具

某小学要购置文具。批发市场中 A 牌的铅笔卖 5 元一支,C 牌的铅笔卖 2 元一支,D 牌的简易铅笔卖1元2只(捆绑销售,只能买偶数只)。

如果想用n元买n支笔,问有多少种买法?(题目保证 n 是正整数,读者无需考虑)

(注意当某牌的铅笔为 0 支时,也是合理的方案)

输入格式:

在一行中输入一个正整数n。

输出格式:

直接输出方案的数目。

输入样例1: 

450

输出样例1:

51 

输入样例2:

输出样例2:

#include <stdio.h>

int main() {
	int sum, a, b, c, n, i = 0;
	scanf("%d", &sum);
	for (a = 0; a <= sum / 5; a++) {
		for (b = 0; b <= sum / 2; b++) {
			for (c = 0; c <= 2 * sum; c++) {

				if ( a + b + c == sum && 5 * a + 2 * b + 0.5 * c == sum) {
					i++;
				}
			}
		}
	}
	printf("%d", i);
}

 

# 题目重述 实现如下分段函数: $$ y = \begin{cases} x^2 + 1 & \text{if } 0 < x \leq 5 \\ 0 & \text{if } x = 0 \\ -x + 4 & \text{if } -5 < x < 0 \\ \text{No meaning} & \text{otherwise} \end{cases} $$ 输入格式:输入一个实数 $ x $。 输出格式:输出 `x=xx.xx, y=yy.yy`(保留两位小数),或输出 `No meaning`。 --- # 给出答案(答案为带注释的代码块) ```c #include <stdio.h> int main() { double x; scanf("%lf", &x); // 读取输入的x值 if (x == 0) { printf("x=%.2f, y=%.2f\n", x, 0.00); // x等于0时y为0 } else if (x > 0 && x <= 5) { double y = x * x + 1; // 0 < x <= 5时,y = x&sup2; + 1 printf("x=%.2f, y=%.2f\n", x, y); } else if (x > -5 && x < 0) { double y = -x + 4; // -5 < x < 0时,y = -x + 4 printf("x=%.2f, y=%.2f\n", x, y); } else { printf("No meaning\n"); // 其他情况无意义 } return 0; } ``` --- # 代码解析 1. 使用 `double x` 接收输入,确保能处理实数。 2. 使用 `if-else` 分支结构严格判断四个区间条件,避免重复匹配。 3. 注意判断顺序:先判断孤立点 $ x = 0 $,再判断开区间和闭区间。 4. 输出使用 `%.2f` 控制小数点后两位,符合 PTA 格式要求。 5. 所有输出均为标准格式,无额外空格或字符。 --- # 知识点(列出该代码中遇到的知识点) - **分支嵌套与条件判断**:通过 `if-else if-else` 正确划分互斥区间,防止逻辑冲突。 - **浮点数比较**:注意 `x == 0` 对于浮点数虽存在精度风险,但在本题输入精确情况下可接受。 - **格式化输出**:使用 `printf("%.2f")` 精确控制数值输出格式,满足PTA严格输出要求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值