C++1级考试真题参考答案(2025年3月)

四季读书网 1 0
C++1级考试真题参考答案(2025年3月)

第 1 题 

参加考试的宝宝们都是小程序员啦!本题就请你直接在屏幕上输出“我是小小程序员”这句话的汉语拼音 `wo shi xiao xiao cheng xu yuan`。

我的答案:

#include<iostream>using namespace std;intmain(){    cout << "wo shi xiao xiao cheng xu yuan" << endl;    return 0;

第 2 题 

因为猫是液体,所以可以很容易地通过测量一个长方体容器的容积来得到容器里猫的体积。输入在第一行中给出 3 个不超过 100 的正整数,分别对应容器的长、宽、高。输出在一行中输出猫的体积。

我的答案:

#include<iostream>using namespace std;intmain(){    int length, width, height, s;    cin >> length >> width >> height;    s = length * width * height; // 核心计算    cout << s << endl;     return 0;}

第 3 题 

有人向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”。(数的总个数不超过3000)在一行中输出第一次出现的“250”是对方扔过来的第几个数字(计数从1开始)。题目保证输出的数字在整型范围内。 

我的答案:

#include<iostream>using namespace std;intmain(){    int num, cnt = 0;    // 使用无限循环读取,直到遇到250为止    while(1)    {        cin >> num;        cnt++; // 计数器增加        if(num == 250break// 找到目标,退出循环    }     cout << cnt << endl;     return 0;}

第 4 题

姥姥在劳动节假期出席了八云学长的婚礼,婚礼上有一个小游戏比较适合拿来出题,于是就有了这个题目。在游戏中,主持人手举一个计时器,递给参与游戏的宾客一个红色按钮,按下后计时器上的数字就开始以每厘秒一个数字的速度跳动。宾客要在最接近 3 秒(即 300 厘秒)的时刻再次按下按钮,停止计时。停止的时刻的计时结果最接近 300 厘秒的宾客获得大奖。具体的获奖规则是:计时结果与 300 厘秒的误差不超过 5 厘秒者获得大玩偶,超过 5 厘秒但没超过 15 厘秒者获得小玩偶,超过 15 厘秒者不得奖。给定一位宾客的计时结果,请你帮主持人判断一下,这位宾客可以获得什么奖?

输入给出一位宾客的计时结果,是以厘秒为单位,在区间 [100, 500] 内的整数。首先在第一行输出误差,格式为: 结论 误差 其中 `结论` 有 3 种可能:如果宾客过早停止计时,则输出 `kuai le`(快了);如果过晚停止计时,则输出 `man le`(慢了);如果精准达到 300 厘秒,则输出 `jue le`(绝了)。此外,`误差` 是宾客的计时结果与 300 厘秒之间的差值,是个非负整数。 第二行输出宾客应该获得的奖品:`da wan ou`(大玩偶)、或 `xiao wan ou`(小玩偶)、或 `xie xie can yu`(谢谢参与)。

我的答案:

#include<iostream>#include<cmath>// 引用数学库,使用 abs 函数using namespace std;intmain(){    int n;    cin >> n;    // 第一行输出:判断快慢    if(n < 300) cout << "kuai le" << endl;    else if(n > 300) cout << "man le" << endl;    else cout << "jue le" << endl;    // 计算误差绝对值    int error = abs(n - 300);    // 第二行输出:判断奖品    if(error <= 5) cout << "da wan ou" << endl;    else if(error <= 15) cout << "xiao wan ou" << endl;    else cout << "xie xie can yu" << endl;    return 0;}

第 5 题

卡拉兹(Callatz)猜想:对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 3n+1 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 3n+1,以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……

我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000 的正整数 n,简单地数一下,需要多少步(砍几下)才能得到 n=1?每个测试输入包含 1 个测试用例,即给出正整数 n 的值。输出从 n 计算到 1 需要的步数。

我的答案:

#include<iostream>using namespace std;intmain(){    int n;    cin>>n;    int cnt=0;    while(n!=1)    {        if(n%2==0) n /=2;        else n=(3*n+1)/2        cnt++;    }    cout<<cnt<<endl;    return 0;}

上一个真题再现 | 2025(初级)社会工作实务

下一个当前已是最新一个了

抱歉,评论功能暂时关闭!