GESP 四级 · GESP 202406 C++ 四级 第 13 题

选择题 · 答案 A

← 整套速查表 GESP 四级 全部真题

题目

下面的程序中,如果输入 10 0 ,会输出( )。

#include<iostream>
using namespace std;

double Division(int a, int b)
{
    if (b == 0)
        throw "Division by zero condition!";
    else
        return ((double)a / (double)b);
}

void func()
{
    int len, time;
    cin >> len >> time;
    cout << Division(len, time) << endl;
}

int main()
{
    try {
        func();
    }
    catch (const char* errmsg)
    {
        cout << errmsg << endl;
    }
    catch (const int errmsg)
    {
        cout << errmsg << endl;
    }
    return 0;
}
答案:A

解题思维

答案A。指针和数组的代码追踪:画出变量和指针的内存示意图,追踪每次赋值后值的变化。

常见错误

指针和数组追踪时画内存布局图可以大大简化理解。

详细解析(节选)

【考点】异常处理|throw 语句|catch 块顺序

1. 🎯 考纲定位

GESP C++ 四级「函数与异常」模块。命题人盯住的是:学生以为只要写了 try-catch 就万事大吉,却常忽略「抛出的类型必须和 catch 参数类型匹配」这一硬性规则,导致本题大量考生凭直觉选 D 或 B。

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