找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

892

积分

0

好友

118

主题
发表于 4 天前 | 查看: 11| 回复: 0

本文整理了GESP C++一级认证中关于输入输出语句的专项练习题目,旨在帮助考生巩固基础,熟悉考试题型。所有题目均基于真题改编,并附有详细解析。

专项练习题

  1. 下面C++代码段执行后的输出是____。

    int a=3,b=4;
    cout<<"a+b="<<a+b;

    答案: a+b=7
    解析: cout 语句先输出字符串 “a+b=”,然后计算 a+b 的值 7 并输出,中间无换行。

  2. C++语句 cout << (2, 3, “23”) 的输出为 2, 3, 23 。____(√/×)
    答案: ×
    解析: 逗号运算符的求值结果为最后一个表达式的值。因此,整个表达式 (2, 3, “23”) 的值是字符串 “23”,输出为 23

  3. C++语句 cout << (2 * 3, 3 % 10, 2+3) 的输出为 6,3,5 。____(√/×)
    答案: ×
    解析: 逗号运算符返回最后一个表达式的值。(2 * 3, 3 % 10, 2+3) 的值为 5,所以输出是 5

  4. C++语句 cout << “5%2=” << 5 % 2 执行后的输出是____。
    答案: 5%2=1
    解析: cout 先输出字符串 “5%2=”,然后输出 5 % 2 的计算结果 1

  5. 执行C++语句 cin >> a 时如果输入 5+2,下述说法正确的是( )。
    A. 变量a将被赋值为整数7
    B. 变量a将被赋值为字符串,字符串内容为5+2
    C. 语句执行将报错,不能输入表达式
    D. 依赖于变量a的类型。如果没有定义,会有编译错误
    答案: D
    解析: C++是编译型语言,变量 a 必须在编译时确定类型。如果 a 未定义,代码无法通过编译。如果 a 是整型,cin >> a 会读取第一个遇到的整数 5+2 会留在输入缓冲区中。

  6. 下面C++代码执行后的输出是____。

    int a=1;
    cout<<"a+1= "<<a+1<<endl;

    答案: a+1= 2
    解析: 输出字符串 “a+1= “,注意有一个空格,然后输出表达式 a+1 的结果 2,最后换行。

  7. 下面C++代码执行后的输出是____。

    int a = 1;
    printf("a+1=%d\n", a+1);

    答案: a+1=2
    解析: printf%d 是整型格式化输出占位符,会被后面参数 a+1 的值 2 替换。

  8. C++语言中下面可以完成数据输入的语句是( )。
    A. printf语句
    B. scanf语句
    C. default语句
    D. cout语句
    答案: B
    解析: scanf 是C语言标准输入函数,在C++中也可用。cin 是C++更常用的输入方式,但选项中没有。printfcout 用于输出,defaultswitch 语句中的关键字。

  9. C++语句 printf(“%d#%d&”,2,3) 执行后输出的是 2[#3](javascript:;)&。 ____(√/×)
    答案: ×
    解析: 该语句会输出 2#3&%d 会被依次替换为 23#& 是普通字符,原样输出。

  10. C++函数 scanf() 必须含有参数,且其参数为字符串型字面量,其功能是提示输入。____(√/×)
    答案: ×
    解析: scanf 的第一个参数是格式化字符串,用于指定输入数据的格式和类型,并非用于“提示输入”。提示输入通常应使用 printfcout 先输出提示信息。

  11. C++语句 printf(“5%%2={%d}\n”,5 % 2) 执行后的输出是____。
    答案: 5%2={1}
    解析: 在格式化字符串中,%% 用于输出一个百分号字符 %%d5%2 的结果 1 替换。

  12. 对整型变量i,执行C++语句 cin >> i, cout << i 时如果输入 5+2 ,下述说法正确的是( )。
    A. 将输出整数7
    B. 将输出 5
    C. 语句执行将报错,输入表达式不能作为输出的参数
    D. 语句能执行,但输出内容不确定
    答案: B
    解析: cin >> i 会从输入中读取第一个整数 5 并赋值给 i,随后的 +2 不会被处理。cout << i 输出 i 的值 5

  13. 下面C++代码执行后的输出是____。

    float a;
    a = 101.101;
    a = 101;
    printf("a+1={%.0f}",a+1);

    答案: a+1={102}
    解析: 变量 a 先被赋值为 101.101,后被重新赋值为整数 101(自动转换为浮点数 101.0)。printf 中的 %.0f 表示以浮点数格式输出,但不保留小数部分,因此 a+1102.0 输出为 102

  14. C++的整型 N 被赋值为5,语句 printf(“%d*2”,N) 执行后将输出 10 。____(√/×)
    答案: ×
    解析: 该语句会输出 5*2%d 被替换为 N 的值 5*2 是普通字符原样输出,并不会进行计算。

  15. 在C++中,下列表达式错误的是( )。
    A. cout << “Hello,GESP!” << endl;
    B. cout << ‘Hello,GESP!’ << endl;
    C. cout << “”“Hello,GESP!”“” << endl;
    D. cout << “Hello,GESP!’ << endl;
    答案: D
    解析: D选项字符串的引号不匹配,以双引号开始,却以单引号结束,会导致编译错误。B选项使用单引号表示字符,但 ‘Hello,GESP!’ 是多字符常量,行为由编译器定义,通常不用于输出字符串。A正确。C使用三个双引号,在C++中不是标准字符串字面量语法。

  16. C++语句 printf(“6%2={%d}”, 6%2) 执行后的输出是 ____。
    答案: 6%2={0}
    解析: 6%2 求余结果为 0,替换 %d。注意第一个 % 是普通字符,第二个 %d 组成占位符。

  17. 成功执行下面的C++代码,先后从键盘上输入5回车和2回车,输出是( )。

    cin >> a;
    cin >> b;
    cout << a + b;

    A. 将输出整数7
    B. 将输出52,5和2之间没有空格
    C. 将输出5和2,5和2之间有空格
    D. 执行结果不确定,因为代码段没有显示a和b的数据类型
    答案: D
    解析: 代码片段没有声明变量 ab 的类型。如果它们是整型,则输入 52 后输出 7;如果是字符型,则可能输出其ASCII码的和或其他结果。由于类型未知,结果无法确定。

  18. N是C++程序中的整型变量,则语句 scanf(“%d”, &N) 能接收形如正整数、负整数和0输入,但如果输入含字母或带小数点数,将导致无法执行。____(√/×)
    答案: ×
    解析: scanf(“%d”, &N) 要求输入匹配十进制整数格式。如果输入包含字母或小数点,scanf 会读取失败,变量 N 的值保持不变(或未定义),程序会继续执行后面的语句,不会“无法执行”(如崩溃),除非后续代码依赖 N 的有效值。

  19. 在C++代码中整型变量X被赋值为20.24,则 cout << (X++, X+1) / 10 执行后输出的是 2.124 。____(√/×)
    答案: ×
    解析: X 是整型变量,赋值为 20.24 会发生截断,X 的实际值为 20。表达式 (X++, X+1) 先执行 X++(X变为21,表达式值为20),然后计算 X+1(21+1=22),逗号表达式的结果为 2222 / 10 是整数除法,结果为 2。因此输出为 2

  20. 有关下列C++代码的说法 ,正确的是( )。

    printf("Hello,GESP!");

    A. 配对双引号内 ,不可以有汉字
    B. 配对双引号可以相应改变为英⽂单引号⽽输出效果不变
    C. 配对双引号可以相应改变为三个连续英⽂单引号⽽输出效果不变
    D. 配对双引号可以相应改变为三个连续英⽂双引号⽽输出效果不变
    答案: A
    解析: A正确,C++标准中,字符串字面量应使用双引号,单引号用于字符。双引号内可以有汉字(如果源文件和编译器支持对应编码)。B、C、D均错误,改变引号类型或数量将导致语法错误。

  21. X是C++语⾔的基本类型变量 ,则语句 cin>>X, cout <<X 能接收键盘输⼊并原样输出。____(√/×)
    答案: ×
    解析: “原样输出”的说法不准确。对于数值类型(如int, float),cin 读取的是数字的文本形式并转换为内部二进制表示,cout 输出时再将二进制表示转换回文本数字,这个过程是“值”的传递,并非字符级的“原样”。对于字符类型(char),输入空格、换行符等控制字符时,cin 的行为可能导致其不被读取,从而无法“原样”输出。

  22. C++语句 cout << (3,2) 执⾏后 ,将输出3和2 ,且3和2之间有逗号间隔。 ____(√/×)
    答案: ×
    解析: 逗号表达式 (3,2) 的求值结果是最后一个表达式的值 2。因此只输出一个整数 2

  23. 在C++中 ,对浮点变量 float f ,则语句 cin >> f; cout << (f<1); 在输⼊是 2e-1 时,输出是0。____(√/×)
    答案: ×
    解析: 2e-1 是科学计数法,表示 0.2cin >> f 能正确读取。条件 f<1(即 0.2<1)为真,在C++中布尔值 truecout 输出时默认为 1。因此输出是 1,不是 0

  24. 下面C++语句( )执行后的输出是 __ 0322$$
    A. printf(“__ %2d%02d$$”, 3, 22)
    B. printf(“__ %02d%2d$$”, 3, 22)
    C. printf(“__ %02d%02d$$$$”, 3, 22)
    D. printf(“____ %02d%02d$$$$”, 3, 22)
    答案: B
    解析: %2d:输出至少2位宽,不足补空格,3输出为 ” 3″%02d:输出至少2位宽,不足补0,22本身就是2位,输出”22″。组合起来就是 __ 0322$$_代表空格)。

  25. 有关下列C++代码的说法,错误的是( )。

    printf("我爱码代码!");

    A. 配对双引号内的汉字改为英文 Hello ,C++代码能正确执行
    B. 配对双引号内的汉字改为 Hello代码! ,C++代码能正确执行
    C. 代码中的每个双引号,都可以改为两个单引号
    D. 代码中的每个双引号,都可以改为三个双引号
    答案: C
    解析: C选项错误。printf 的参数必须是字符串,应用双引号括起来。将其改为两个单引号(如 ’ ‘)在语法上是两个独立的字符常量,不能构成一个字符串参数,会导致编译错误。D选项,三个双引号 ””” 不是C++标准语法,通常会导致编译错误。A和B选项描述的是字符串内容更改,只要符合语法(如B中字符串包含中文和英文),代码就能执行。

  26. 下面C++代码执行后的输出是____。

    int N = 10;
    printf("{N}*{N}={%d*%d}", N, N, N * N);

    答案: {N}*{N}={10*10}
    解析: printf 的格式化字符串中,前两个 %d 分别被参数 N (10) 替换,第三个 %d 没有对应的参数,这属于未定义行为,通常会导致错误的输出或程序崩溃。但按题目意图和常见编译器行为,可能只匹配前两个参数,输出 {N}*{N}={10*10},最后一个 N*N 对应的 %d 被忽略或输出乱码。严谨答案应为“输出结果未定义”。但结合选择题环境,考察点是格式化匹配,可能预期输出 {N}*{N}={10*10}

  27. 对下列C++的代码,描述准确的是( )。

    int first = 10;
    printf("{%d}\n", First)

    A. 执行后输出10
    B. 执行后输出 {First}
    C. 执行后输出 “{First}”
    D. 编译报错,因为First应该是first
    答案: D
    解析: C++区分大小写。变量声明为 first,但在 printf 中使用了未定义的标识符 First,编译器会报错“First was not declared in this scope”。

  28. C++的 int 类型变量 X 的值为8,如果执行 cout<< (++X)++; ,则输出和执行后 X 的值分别是____。
    答案: 输出9,X为10
    解析: 表达式 (++X)++ 包含前自增和后自增。++X 先将X从8增加为9,并返回X的引用(值为9)。然后对这个引用(即X本身)进行后自增 (9)++,后自增表达式返回自增前的值 9 作为整个表达式的结果输出。但是,后自增操作本身会执行,X的值最终变为 10

  29. 下面C++代码执行后的输出是____。

    int a,b;
    a=3;
    b=4;
    prinff("a+b=%02d[#a](javascript:;)+b={a+b}",a+b,a+b)

    答案: 代码无法编译通过
    解析: 函数名拼写错误,prinff 应为 printf。此外,格式化字符串中有两个格式说明符 %02d%d(隐藏在 {a+b} 中?),但只提供了一个参数 a+b,参数数量不匹配。即使纠正拼写,这也是一个运行时错误。

  30. 执行C++代码 cout << (12 + 12.12) 将报错,因为12是int类型,而12.12是float类型,不同类型不能直接运算。____(√/×)
    答案: ×
    解析: C++支持隐式类型转换。在进行 12 + 12.12 运算时,整型 12 会先被提升为 double 类型(12.12 默认是 double),然后进行双精度浮点数加法,结果为 24.12,可以被 cout 正确输出,不会报错。

  31. 下面的C++代码中变量N和M都是整型,则执行时如果先输入10并输入一个制表符后输入20并回车,其输出的数值是____。

    scanf("%d", &N);
    scanf("%d", &M);
    printf("{%d}",N+M);

    答案: {30}
    解析: scanf%d 会跳过输入中的空白字符(包括空格、制表符、换行符)直到找到数字。因此,第一个 scanf 读取 10,第二个 scanf 跳过制表符读取 20N+M 等于 30

  32. 执行C++代码 cout << (12 + 12.12) 将报错,因为 12 是 int 类型,而 12.12 是 floa t类型,不同类型不能直接运算。____(√/×)
    答案: ×
    解析: 此题与第30题重复。C++在算术运算前会进行隐式类型转换,将低精度类型向高精度类型转换。int 类型的 12 会被转换为 double 类型,然后与 12.12 相加,得到 double 类型结果,cout 可以正常输出。




上一篇:Jackson Views实战指南:在SpringBoot中优雅管理API响应数据
下一篇:Kotlin多平台移动开发实战:提升效率、统一逻辑与原生体验解析
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 21:53 , Processed in 0.150704 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表