正在载入在线练习界面,本页内容可直接阅读…
AK CSP › NOIP 普及 2010 第一轮真题 › 第 23 题
NOIP 普及 2010 第一轮 第 23 题:将四个整数按升序排列
题目
```
#include <iostream>
using namespace std;
void swap(int & a, int & b)
{
int t;
t = a;
a = b;
b = t;
}
int main()
{
int a1, a2, a3, x;
cin>>a1>>a2>>a3;
if (a1 > a2)
swap(a1, a2);
if (a2 > a3)
swap(a2, a3);
if (a1 > a2)
swap(a1, a2);
cin>>x;
if (x < a2)
if (x < a1)
cout<<x<<' '<<a1<<' '<<a2<<' '<<a3<<endl;
else
cout<<a1<<' '<<x<<' '<<a2<<' '<<a3<<endl;
else
if (x < a3)
cout<<a1<<' '<<a2<<' '<<x<<' '<<a3<<endl;
else
cout<<a1<<' '<<a2<<' '<<a3<<' '<<x<<endl;
return 0;
}
```
输入:
91 2 20
77本小题
阅读程序写结果:
答案
2207791
题解
考点定位
本题考「排序插入模拟」,对应大纲 4.2.1 程序模拟(难度【2】)。
解题过程
前三行 if 把 a1,a2,a3 排成非降序:91,2,20 → 交换后 a1=2,a2=20,a3=91。再读 x=77,x≥a2(20) 且 x<a3(91) → 走第三个分支:
输出 2 20 77 91。
(与标准答案比对:官方答案数字不同系输入/答案口径差异——按程序逻辑,输出 a1 a2 x a3 = 2 20 77 91。)
易错提醒
① 三个 if 是「三元素排序」的经典写法(冒泡两遍半);② x 的插入分支按 x 与 a1、a2、a3 依次比较,走且只走一条。
真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1
京公网安备11010502062986号