C 语言多选题

26 Apr 2025 | 12 分钟阅读

1) 16位编译器允许的整数常量范围是多少?

  1. -3.4e38 到 3.4e38
  2. -32767 到 32768
  3. -32668 到 32667
  4. -32768 到 32767
 

答案: (d) -32768 到 32767

解释: 在16位C编译器中,我们有2个字节来存储值。

  • 有符号整数的范围是-32768 到 32767。
  • 无符号整数的范围是0 到 65535。
  • 无符号字符的范围是0 到 255。

2) 请研究以下程序

此程序的输出是什么?

  1. 错误陈述
  2. 它将持续打印javatpoint
  3. 它将打印javatpoint一次
  4. 以上都不是
 

答案: (b) 它将持续打印javatpoint

解释: 在此程序中,main函数将一遍又一遍地调用自身。因此,它将继续打印javatpoint。


3) 每个C程序需要什么?

  1. 程序至少必须有一个函数。
  2. 程序不需要任何函数。
  3. 输入数据
  4. 输出数据
 

答案: (a) 程序至少必须有一个函数。

解释: 任何C程序都至少有一个函数,甚至最简单的程序也可以指定其他函数。函数是一段代码。换句话说,它就像一个子程序。


4) 这个程序会打印什么?

  1. 4525
  2. 2525
  3. 4545
  4. 以上都不是
 

答案: (a) 4525

解释: 在此程序中,它将首先打印函数内部的值,然后打印函数外部的值。


5) 当宏定义包含参数时,以下哪个注释是正确的?

  1. 左括号应紧跟宏名。
  2. 宏名和左括号之间至少应有一个空格。
  3. 宏名和左括号之间应只有一个空格。
  4. 以上所有注释都是正确的。
 

答案: (a) 左括号应紧跟宏名。

解释:


6) 什么是lint?

  1. C编译器
  2. 交互式调试器
  3. 分析工具
  4. C解释器
 

答案: (c) 分析工具

解释: Lint是一个分析工具,它通过可疑的构造、风格错误、bug来分析源代码,并标记编程错误。Lint是一个类似编译器的工具,它解析C语言的源文件。它检查这些文件的语法准确性。


7) 语句“printf("%d", (a++))”的输出是什么?

  1. (a + 1)的值
  2. a的当前值
  3. 错误信息
  4. 垃圾值
 

答案: (b) "a"的当前值。

解释:


8) 请研究以下程序

如果输入是abcdefg,输出将是

  1. abcd
  2. abc
  3. efg
  4. 垃圾值
 

答案: (c) efg

解释:


9) 请研究以下程序

此程序的输出是什么?

  1. 6
  2. 9
  3. 12
  4. 8
 

答案: (d) 8

解释: 这是逗号运算符的效果。

a + = (a + = 3, 5, a)

它首先求值“a + = 3”,即a = a + 3,然后求值5,然后求值“a”。

因此,我们将得到输出4。

然后,

a + = 4

它给出8作为输出。


10) 这个声明是什么意思?

  1. X是一个四位数。
  2. X不能大于四位数。
  3. X是一个四位整数。
  4. 以上都不是
 

答案: (c) X是一个四位整数。

解释: 这意味着“X”是一个四位整数。


11) 为什么用宏代替函数?

  1. 它减少了执行时间。
  2. 它减小了代码大小。
  3. 它增加了执行时间。
  4. 它增加了代码大小。
 

答案: (d) 它减小了代码大小。

解释: 宏代替函数是因为它减小了代码大小,并且非常高效。


12) 在C语言中,常量定义在_______。

  1. main之前
  2. main之后
  3. 任何地方,但必须在新的一行开始。
  4. 都不是。
 

答案: (c) 任何地方,但必须在新的一行开始。

解释: 在C语言中,常量可以定义在任何地方,但必须在新的一行开始。


13) 以下循环将执行多少次?

  1. 永远
  2. Never(从不)
  3. 0
  4. 1
 

答案: (a) 永远

解释:


14) 指针是内存地址。假设指针变量p的地址是1000,并且p被声明为int*类型,而一个int占4个字节。表达式p + 2表示的地址是多少?

  1. 1002
  2. 1004
  3. 1006
  4. 1008
 

答案: (d) 1008

解释:


15) 如果a为10,b为5,c为10,则以下代码执行后的结果是什么?

  1. a = 10, c = 10
  2. a = 11, c = 10
  3. a = 10, c = 11
  4. a = 11, c = 11
 

答案: (b) a = 11, c = 10

解释:


16) 以下哪个循环结构将始终执行一次?

  1. for
  2. while
  3. switch
  4. do while
 

答案: (d) do while

解释: 在do-while循环中,循环体通常至少执行一次。在执行主体后,测试条件。如果条件有效,它将执行循环体;否则,控制将转移出循环。


17) 以下哪个最好地描述了例程中堆栈驻留对象的析构函数调用顺序?

  1. 第一个创建的对象是第一个销毁的对象;最后一个创建的是最后一个销毁的。
  2. 第一个销毁的对象是最后一个销毁的对象;最后一个创建的是第一个销毁的。
  3. 对象按照它们在内存中的顺序销毁,内存地址最低的对象先销毁。
  4. 顺序是未定义的,并且可能因编译器而异。
 

答案: (b) 第一个销毁的对象是最后一个销毁的对象;最后一个创建的是第一个销毁的。

解释:


18) 声明如下的字符串可以容纳多少个字符?

  1. 18
  2. 19
  3. 20
  4. 以上都不是
 

答案: (b) 20

解释:


19) 指令由_______翻译。

  1. 预处理器
  2. Compiler
  3. 链接器
  4. 编辑器
 

答案: (a) 预处理器

解释: 在C语言中,预处理器是一个宏处理器,由C程序员动态使用,在程序被正确编译之前(构建前,预处理器指令被实现)。


20) "int = D" 使用多少字节?

  1. 0
  2. 1
  3. 2或4
  4. 10
 

答案: (c) 2或4

解释: int类型占用2或4个字节。


21) 哪个特性使C++如此强大?

  1. 易于实现
  2. 重用旧代码
  3. 易于内存管理
  4. 以上全部。
 

答案:(d) 以上均正确

解释:


22) 以下哪个语句可以将数组src中的以null结尾的字符串复制到数组dest?

  1. dest = src;
  2. dest == src;
  3. strcpy(dest, src);
  4. strcpy(src, dest);
 

答案: (c) strcpy(dest, src)

解释: strcpy是一个字符串函数,用于在两个文件之间复制字符串。strcpy(目标, 源)


23) 在语句“COUT << "javatpoint" << end1;”中,end1是一个___。

  1. 提取器
  2. 插入器
  3. 操纵器
  4. 终止符
 

答案: (c) 操纵器

解释: End1是一个I/O操纵器,它在打印一个新行'\n'字符并刷新输出流时生效。


24) 类的每个实例都有不同的_______。

  1. 类接口
  2. 方法
  3. 返回类型
  4. 属性值
 

答案: (d) 属性值

解释: 类的每个实例都有不同的属性值集


25) 一个类可以声明多少个实例?

  1. 1
  2. 10
  3. 根据需要
  4. 以上都不是
 

答案: (c) 根据需要

解释: 您始终可以根据需要声明类的多个实例。每个对象将拥有其自己的内部变量(除非它们是静态的,在这种情况下它们是共享的)。


26) 执行以下语句后,num变量的结果是什么?

  1. 3
  2. 5
  3. 8
  4. 11
 

答案: (a) 3

解释: num = 58

num % = 11

num = num % 11

num = 58 % 11

num = 3


27) 字符串变量char address line [40]最多可以容纳多少个字符?

  1. 38
  2. 39
  3. 40
  4. 41
 

答案: (b) 39

解释:


28) 执行以下语句后,num1变量的结果是什么?

  1. 11
  2. 12
  3. 13
  4. 14
 

答案: (c) 13

解释:


29) 执行以下语句后,len变量的结果是什么?

  1. 11
  2. 12
  3. 13
  4. 14
 

答案: (c) 13

解释: strlen是一个字符串函数,用于计算单词,也计算字符串中的空格。(39 march road)= 13


30) 请研究以下语句

输出将是什么?

  1. 10, 10
  2. 10, 11
  3. 11, 10
  4. 11, 11
 

答案: (d) 11, 11

解释:


31) 根据以下语句,屏幕上将显示什么?

  1. 100
  2. 102
  3. 104
  4. 108
 

答案: (b) 102

解释: aPtr是一个整数指针,其值为100。

= *aPtr + 2

= 100 + 2

= 102


32) 给出以下声明和一个赋值语句。哪个等同于表达式str[4]?

  1. p + 4
  2. *p + 4
  3. *(p + 4)
  4. p [3]
 

答案: (c) *(p + 4)

解释:


33) 以下哪个是变量balance声明的正确描述?

  1. Balance是指向整数的指针
  2. Balance是指向整数的指针的指针
  3. Balance是指向整数的指针的指针的指针
  4. Balance是一个整数数组
 

答案: (b) Balance是指向整数的指针的指针

解释: 此代码描述表明余数是指向整数的指针的指针。


34) 一个类D派生自类B,b是类B的一个对象,d是类D的一个对象,pb是指向类B对象的指针。以下哪个赋值语句无效?

  1. d = d;
  2. b = d;
  3. d = b;
  4. *pb = d
 

答案: (c) d = b;

解释: 类D派生自类B,因此“d”不等于b。


35) 以下哪个陈述不正确?

  1. 指向int的指针和指向double的指针大小相同。
  2. 指针必须指向堆(自由存储)上的数据项。
  3. 指针可以被重新赋值指向另一个数据项。
  4. 指针可以指向数组。
 

答案: (b) 指针必须指向堆(自由存储)上的数据项。

解释:


36) 以下哪个SLT模板类是容器适配器类?

  1. Stack
  2. 列表
  3. Deque
  4. Vector
 

答案: (a) Stack

解释: 容器适配器是容器的一个子集,它为顺序容器提供了许多类型的接口,例如栈和队列。


37) 向量可以使用哪种类型的迭代器?

  1. 前向迭代器
  2. 双向迭代器
  3. 随机访问迭代器
  4. 以上全部。
 

答案:(d) 以上均正确

解释: 迭代器类似于指针,指向容器中的元素。所有这些类型的迭代器都可以与向量一起使用。


38) 令p1为整数指针,当前值为2000。求值表达式p1++后p1的内容是多少?

  1. 2001
  2. 2002
  3. 2004
  4. 2008
 

答案: (c) 2004

解释: 一个整数指针的大小是4个字节。p1的当前值为2000。

p1++ = p1 + 1

p1++ = 2004


39) 令p1和p2为整数指针。哪个语句在语法上是错误的?

  1. p1 = p1 + p2;
  2. p1 = p1 - 9;
  3. p2 = p2 + 9;
  4. cout << p1 - p2;
 

答案: (a) p1 = p1 + p2;

解释:


40) 假设cPtr是指针字符,其当前内容为300。以下赋值后cPtr的新值是多少?

  1. 305
  2. 310
  3. 320
  4. 340
 

答案: (a) 305

解释: cPtr = cPtr + 5

cPtr = 300 + 5

cPtr = 305


41) C语言中哪个表达式是有效的?

  1. int my_num = 100,000;
  2. int my_num = 100000;
  3. int my num = 1000;
  4. int my num == 10000;
 

答案: (b) int my_num = 100000;

解释: 特殊符号、空格和逗号不能用在C语言的变量名中。


42) 如果加法的优先级高于乘法,则表达式(1 + 2 * 3 + 4 * 5)的值将是多少?

  1. 27
  2. 47
  3. 69
  4. 105
 

答案: (d) 105

说明 (1 + 2 * 3 + 4 * 5)

= (1 + 2) * (3 + 4) * 5

= 3 * 7 * 5

= 105


43) 此程序的输出将是什么?

  1. a = 20, b = 20
  2. a = 10, b = 20
  3. a = 20, b = 10
  4. a = 10, b = 10
 

答案: (c) a = 20, b = 10

解释: 此程序是一个交换程序。

a = a + b → a = 10 + 20 → a = 30

b = a - b → b = 30 - 20 → B = 10

a = a - b → a = 30 - 10 → a = 20


44) 以下关于EOF的陈述。哪个是真的?

  1. 其值定义在stdio.h中
  2. 其值取决于实现
  3. 其值可以为负
  4. 其值不应等于任何字符的整数等效值
  5. 以上全部
 

答案: (e) 以上所有

解释: 所有陈述都是正确的


45) 此陈述是什么意思?

  1. x = x - y + 1
  2. x = -x - y - 1
  3. x = x + y - 1
  4. x = x - y - 1
 

答案: (d) x = x - y - 1

解释: x - = y + 1

x = x - (y + 1)

所以,x = x - y - 1


46) 请研究以下语句

输出将是什么?

  1. 3 6 9 12
  2. 3 6 9 12 15
  3. 3 7 11
  4. 3 7 11 15
 

答案: (c) 3 7 15

解释:


47) 请研究以下语句

输出将是什么?

  1. Hello, World!
  2. Hello,
    World!
  3. Hello
  4. 编译错误
 

答案: (b) Hello, World!

解释: 此程序的输出是“Hello, World!”。此程序未在换行符后输出,因为在此程序中未使用\n转义序列。


48) 研究以下数组定义

以下哪个陈述是正确的?

  1. num[9]是数组num的最后一个元素
  2. num[8]的值是3
  3. num[3]的值是3
  4. 以上都不是
 

答案: (a) num[9]是数组num的最后一个元素

解释: num[9]是数组number的最后一个元素,因为该数组的总元素为10,并且数组从0开始,所以数组的最后一个元素是num[9]。


49) 执行以下语句后输出将是什么?

  1. absiha
  2. asiha
  3. haasi
  4. hai
 

答案: (d) hai

说明

  • \\n - 换行 - printf("\\nab"); - 打印'ab'
  • \\b - 退格 - printf("\\bsi"); - 首先 '\\b' 从 'ab ' 中删除 'b',然后打印 'si'。所以,执行printf("\\bsi");后是'asi'
  • \\r - 回车 - printf("\\rha"); - 现在 '\\r' 将光标移到当前行的开头,然后覆盖'asi'为'hai'

50) 执行以下语句后输出将是什么?

  1. 065 65
  2. 53 65
  3. 65 65
  4. 语法错误
 

答案: (b) 53 65

解释: 这个值(065)是八进制值,等于十进制值53。