PAT-乙级 1012 数字分类(C语言)

博客主要讨论了PAT乙级考试中一道关于数字分类的题目,指出在处理A2类数字的交错求和时,不能将求和结果为0作为此类数字不存在的判断依据,因为这可能导致误判。

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

这个题目如果总是有个测试点过不去就是因为A2类的交错求和的结果本身就有可能是0,而把0作为判断这一类数字不存在的条件是错误的。(转自https://blog.youkuaiyun.com/LIUJIALING_lala/article/details/81170544)

#include <stdio.h>

int main() {
	int numbers,i,num,n=1,intMax=0;
	scanf("%d", &numbers);
	int value[5] = { 0 }, count[5] = { 0 };
	int *numberPointer;
	numberPointer = (int *)malloc(4 * numbers);
	for (i = 0; i < numbers; i++)
		scanf("%d", (numberPointer + i));
	for (i = 0; i < numbers; i++) {
		num = *(numberPointer + i) % 5;
		switch (num) {
		case 0:if (*(numberPointer + i) % 2 == 0) { value[num] += *(numberPointer + i) ; count[num]++; }break;
		case 1:value[num] += *(numberPointer + i)*n; n *= -1; count[num]++; break;
		case 2:count[num]++; break;
		case 3:value[num] += *(numberPointer + i); count[num]++; break;
		case 4:if (*(numberPointer + i) > intMax) { intMax = *(numberPointer + i); value[num] = *(numberPointer + i); count[num]++; }break;
		}
	}
	//输出
	for (i = 0; i < 5; i++) {
		if (count[i] == 0)
			printf("N");
		else if (i == 0 || i == 1 || i == 4)
			printf("%d", value[i]);
		else if (i == 2)
			printf("%d", count[i]);
		else if (i == 3)
			printf("%.1lf", (double)value[3] / count[3]);
		if (i != 4)
			printf(" ");
	}
	free(numbersPointer);
	//system("pause");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值