NOIP 普及组初赛 · NOIP 2008 普及组初赛试题 第 24 题

阅读程序 · 答案 2,3,1 · 考点:输入输出、位运算、分支结构

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

题目

阅读程序写结果:

#include<iostream>
using namespace std;
void foo(int a, int b, int c)
{
	if(a > b) 
		foo(c, a, b);
	else
		cout<<a<<','<<b<<','<<c<<endl;
}
int main()
{
	int a, b, c;
	cin >> a >> b >> c;
	foo(a, b, c);
	return 0;
}

输入: 3 1 2

答案:2,3,1

考点

输入输出位运算 讲解 →位运算 真题汇总 →分支结构

解题思维

看到 a>b 递归,否则输出 → 模拟两层调用

常见错误

易把 foo(c,a,b) 误记为交换 a,b;误以为会无限递归或输出全局有序

详细解析(节选)

考点:递归函数执行流程模拟

程序在做什么

输入三个整数 a,b,c,调用 foo(a,b,c)。若 a>b 则递归调用 foo(c,a,b),否则直接输出当前 a,b,c 并返回。

同考点真题

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