IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言试题十道(第四期) -> 正文阅读

[C++知识库]C语言试题十道(第四期)

1.代码段

#include <stdio.h>

int main() {
? ? int i = 1;
? ? sizeof(i++);
? ? printf("%d\n", i);
? ? return 0;
}的输出为()

  • 1
  • 4
  • 2
  • 8

正确答案:?A

解析:
根据C99规范, sizeof是一个编译时刻就起效果的运算符,在其内的任何运算都没有意义,
sizeof(i++); 在编译的时候被翻译成?
sizeof((i++的数据类型)) 也就是 sizeof(int); 不会执行i++了。
sizeof是运算符,它在编译时起作用,而不是运行时。
也就是说,在编译时,就得到了sizeof(int),运行时,i++根本没有执行过。

2.?补充下面函数代码:

如果两段内存重叠,用 memcpy 函数可能会导致行为未定义。 而 memmove 函数能够避免这种问题,下面是一种实现方式,请补充代码。

#include <iostream>
using namespace std;

void *memmove(void *str1, const void *str2, size_t n) {
    char *pStr1 = (char *)str1;
    char *pStr2 = (char *)str2;
    if () {
        for (size_t i = 0; i != n; ++i) {
            *(pStr1++) = *(pStr2++);
        }
    } else {
        pStr1 += n - 1;
        pStr2 += n - 1;
        for (size_t i = 0; i != n; ++i) {
            *(pStr1--) = *(pStr2--);
        }
    }
    return ();
}
pStr1 < pStr2       str1
pStr1+n < pStr2       str2
pStr1+n < pStr2 || pStr2+n < pStr1       str2
pStr2+n < pStr1       str1

正确答案:A

解析:

原型:void *memmove( void* dest, const void* src, size_t count );

头文件:<string.h>

功能:由src所指内存区域复制count个字节到dest所指内存区域。

如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中。但复制后src内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能相同。?

当pStr1< pStr2时,即?pStr1的首地址小于???pStr2的首地址,正序拷贝

当pStr1> pStr2时,即?pStr1的首地址大于???pStr2的首地址,倒叙拷贝

3.?

在 C 语言中,C99除外,一维数组的定义方式为:

元素类型 数组名[E];

E 为(?? )。

常量表达式
整型表达式
整型常量或整型表达式
整型常量表达式

正确答案:D

4.设有 int x=11; 则表达式 (x++ * 1/3) 的值是( )

3

4

11

12

正确答案:A

解析:

x++是在;之后执行的,相当于(x*1/3);x++;

(x*1/3)表达式算出的结果值为Int类型,自动去小数点

结果为3

5.以下正确的函数原型为()

f1( int x; int y );
void f1( x, y );
void f1( int x, y );
void f1( int, int );

正确答案;D

解析:

函数原型:指明函数的名字,返回的类型,有几个参数,这几个参数是什么类型,不需要函数体,也不需要形式参数的名字,其中用分号作为原型的结束符。

6.

执行下面代码后

1

2

int?num?=?7,?sum?=?7;

sum?=?num++,?sum++,?++num;

后sum的值为(?)

7
8
9
10

正确答案:B

解析:

sum = num ++ .到这里为止,和后面的++num. sum++完全是2段语句。

所以第一段。num++ 先赋值 7 给 sum, 再给自己加1.

此时 sum =7, num =8.

第二段:sum++,++num,? 各自给自己加一。

结果 sum =8, num = 9

7.对于char *pa[7]的描述中,正确的是( )

pa是一个指向数组的指针,所指向的数组是7个char型元素
pa是一个指向某数组中第7个元素的指针,该元素是char型变量
pa[7]表示数组的第7个元素的值,是char型的值
pa是一个具有7个元素的指针数组,每个元素是一个char型指针

正确答案:D

8.在C++, 基类至少含有一个虚函数时,下列哪一个可以做为对象继承之间的转换

static_cast
dynamic_cast
const_cast
reinterpret_cast

正确答案:B

解析:

dynamic_cast :?

继承体系安全向下转型或跨系转型;找出某对象占用内存的起始点

static_cast:

同旧式C转型,如int 到double

const_cast:

常用于去除某个对象的常量性

reinterpret_cast

不具备移植性,常见用途是转化函数指针类型

9.下列叙述正确的是:

预处理命令行必须位于源文件的开头
在源文件的一行上可以有多条预处理命令
宏名必须用大写字母表示
宏替换不占用程序运行时间

正确答案:D

解析:?预处理指令指示在程序正式编译前就由编译器进行的操作,可放在程序中任何位置。源文件的每一行只能有一条预处理命令,如果指令一行放不下,可以通过反斜杠“/”进行控制。宏名通常由大写字母表示,而非必须宏是在预编译期间进行的,将代码中的指定字符转换,转换结束后,再进行编译,所以不占用程序运行时间

10.

对于代码段

1

struct?sk{int?a;?float?b;}?data,?*p?=?&data;

则对data中的a成员的正确引用是()

(*p).data.a
(*p).a
p->data.a
p.data.a

正确答案:B

解析:

1、如果是指针指向结构体,就用? ?->? (“形状像个箭头,表示指向,记为指针访问结构体成员的方式”)

2、结构体类型名访问结构体成员变量 用,成员访问运算符?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-03 12:51:42  更:2021-12-03 12:51:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:54:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码