NOIP 普及组初赛 · NOIP 2007 普及组初赛试题 第 23 题

选择题 · 答案 15,46 · 考点:位运算、输入输出

← 整套速查表 NOIP 普及组初赛 全部真题

题目

看程序写结果:

#include<stdio.h>
int main()
{
	int i, p[5], a, b, c, x, y = 20;
	for ( i = 0; i <= 4; i++ )
		scanf( "%d", &p[i] );
	a = (p[0] + p[1]) + (p[2] + p[3] + p[4]) / 7;
	b = p[0] + p[1] / ( (p[2] + p[3]) / p[4]);
	c = p[0] * p[1] / p[2];
	x = a + b - p[(p[3] + 3) % 4];
	if ( x > 10 )
		y += (b * 100 - a) / (p[p[4] % 3] * 5);
	else
		y += 20 + (b * 100 - c) / (p[p[4] % 3] * 5);
	printf( "%d,%d\n", x, y );
	return(0);
}
//注:本例中,给定的输入数据可以避免分母为 0 或数组元素下标越界。

输入:6 6 5 5 3

答案:15,46

考点

位运算 讲解 →位运算 真题汇总 →输入输出

解题思维

看到整数除法 → 先想截断;看到 p[p[4]%3] → 先算内层下标

常见错误

易把 13/7 算成 1.85 或误判下标 p[p[4]%3] 指向 p[3]

详细解析(节选)

考点:整数除法截断|数组嵌套下标

程序在做什么

输入 5 个整数存入数组 p,按特定公式计算 a、b、c、x,根据 x 大小分支更新 y,最后输出 x 和 y。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断