刷c语言练习题10(牛客网)

1、对于以下结构定义,(*p)->str++中的++加在()

struct { int len; char *str; } *p;

A、指针 str 上

B、指针 p 上

C、str 指向的内容上

D、语法错误

答案:D

解析:结构体指针的两种用法:

1、p -> str

2、(*p).str。

本题中的用法是非法的,所以选择选项D。

2、 以下代码输出什么?

int a = 1, b = 32;

printf("%d,%d", a << b, 1 << 32);

A、1,1

B、1,0

C、0,0

D、取决于编译器

答案:D

解析:本题中的移位表达式是不合法的,出现什么结果也是未定义的,具体要看使用的编译器对这种情况如何处理,所以选择选项D。

在实际编译器中书写这样的代码,可能由于编译器的原因出现如下结果:

以n << m为例,当m和n中至少有一个是变量时,进行的移动是循环移动,在左端移出的数会从右端移入。当m和n中两个都为常量时,移出就是移出。

3、 math.h的abs返回值()

A、不可能是负数

B、不可能是正数

C、都有可能

D、不可能是0

答案:C

解析:abs的功能为求一个数的绝对值,那么正数和零一定可能为返回值。负数是如何来的呢?以八位二进制数为例,其范围是-128~127,我们可以看到其负数的范围比正数的范围大,那么我进行abs(-128)就不能返回128,只能返回原值-128。综上,选择选项C。

4、 下面程序的输出结果是()

#include <iostream>
using namespace std;
int main()
{
    char str1[] = "hello world"; 
    char str2[] = "hello world"; 

    const char str3[] = "hello world"; 
    const char str4[] = "hello world"; 

    const char* pstring1 = "hello world"; 
    const char* pstring2 = "hello world"; 

    cout << boolalpha << ( str1==str2 ) <<  ',' ;
    cout << boolalpha << ( str3==str4 ) << ',' ; 
    cout << boolalpha << ( pstring1==pstring2 ) <<endl;
    return 0;

}

A、false,false,true

B、false,false,false

C、true,true,true

D、false,true,true

答案:A

解析:以 cout << boolalpha << ( str1==str2 ) <<  ',' ;为例,进行的是比较str1和str2的值,并返回一个布尔类型,而对str1和str2的比较实际上是地址的比较。我们知道地址具有唯一性,所以前两个输出都为false。而第三个比较中,两个指针都指向了同一字符串常量,所以两个指针的值应该是相同的,所以第三个输出为true。

5、 若有定义

typedef char T[10] ;

T * a ;

上述定义中a的类型与下面选项中完全相同的是?

A、char a[10] ;

B、char (*a)[10] ;

C、char * a ;

D、char *a[10] ;

答案:B

解析:在上述代码中,typedef用于给一个类型起别名,对于较为复杂的类型,将别名去掉即为被起别名的类型。所以本题中,T的类型是一个字符数组。观察T * a,类比int * a,那么a为指针类型,这个指针指向的是一个字符数组,所以a是一个数组指针。综上,选择选项B。

6、 若有以下说明和定义语句:

union uti {
    int n;
    double g;
    char ch[9];
} struct srt {
    float xy;
    union uti uv;
} aa;

考虑内存对齐,则变量aa所占内存的字节数是(        )

A、9

B、8

C、24

D、13

答案:C

解析:这里是结构体内嵌套了一个共用体,按照内存对其规则,先去寻找最大数据类型成员,为double占8字节。所以共用体应该开辟16字节的空间,结构体中float xy开辟8字节的空间,所以变量aa所占内存的字节数为24,选择选项C。

 7、有如下一段代码(unit16_t为2字节无符号整数,unit8_t位1字节无符号整数);

union X
{
    unint16_t a;
    struct Z
    {
        unint8_t m;
        unint8_t n;
    }z;
};
union X x;
x.a = 0x1234;

请问x.z.n在大字节序和小字节序机器上的值分别为多少()

A、0x34,0x12

B、0x12,0x34

C、0x1234,0x1234

D、0x1234,0

E、0,0x1234

答案:A

解析:本题中共用体中嵌套了一个结构体,首先由对其规则可以得到,公用体的大小为2字节。x是共用体变量,x.a = 0x1234,那么共用体2字节的空间正好存放。对于结构体中的两个成员,可以看成char arr[2],m是arr[0],n是arr[1]。

假设在大字节序机器上(大端存储),那么低字节要存到高地址,高字节要存到低地址,那么从高地址到低地址存放的是0x3412,n中存的是高地址中的数据为0x34。

假设在小字节序机器上(小端存储),那么低字节要存到低地址,高字节要存到高地址,那么从高地址到低地址存放的是0x1234,n中存的是高地址中的数据为0x12。

8、 开发C代码时,经常见到如下类型的结构体定义:

typedef struct list_t{
struct list_t *next;
struct list_t *prev;
char data[0];
}list_t;

最后一行char data[0];的作用是?

A、方便管理内存缓冲区

B、减少内存碎片化

C、标识结构体结束

D、没有作用

答案:AB

解析:char data[0]; 在C语言中被称为“柔性数组成员”。它的主要目的是允许结构体在末尾有一个可变大小的数组,从而使得整个结构体可以作为一个连续的内存块进行分配和管理。使用柔性数组成员可以有助于减少因多次分配不同大小的内存块而导致的碎片化。综上,选择选项AB。

9、参考以下代码,在大端字节机器中x.c的值为

union A {
    short c;
    char buf[4];
} x = {0x01, 0x02, 0x03, 0x04};

A、0x102

B、0x201

C、0x304

D、0x403

答案:A

解析:在大端字节机器中,地址从高到低存储的为:0x01020304。成员c和buf共址,在大端存储下,高地址为现在的首地址,所以输出x.c应为0x102。

10、在 32 位 cpu 上选择缺省对齐的情况下,有如下结构体定义:

struct A {
    unsigned a : 19;
    unsigned b : 11;
    unsigned c : 4;
    unsigned d : 29;
    char index;
};

则 sizeof(struct A) 的值为()

A、9

B、12

C、16

D、20

答案:C

解析:在解决这道题前,要先了解一下位域的概念。

C语言中的位域是一种数据结构,它允许在结构体中定义其成员占用的位数,而不是通常的字节数。位域的主要目的是节省内存,特别是在需要存储大量位(bit)数据但每个数据项不需要一个完整字节(8位)的情况下。位域的定义是在结构体内部,通过指定成员的类型后跟一个冒号和一个数字来完成的,这个数字表示该成员应该占用的位数。以unsigned a : 19;为例,19表示该成员占19bit。

在32位CPU选择缺省对齐的情况下,每个位域支持32位。同时,一个位域必须存储在一个字节中,不能够跨两个字节。所以a和b占用四个字节,c占用四个字节,d占用四个字节,index占四个字节。共占用16个字节,选择选项C。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/897043.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mycat2安装配置

安装配置 安装 目前Mycat2下载地址已经不可访问&#xff0c;安装包可从参考资料[1]获取 下载后解压zip文件&#xff0c;将jar放在lib目录下 编辑配置文件 编辑conf文件夹下的prototypeDs.datasource.json 更改数据库相关信息 启动 windows环境下启动Mycat 以管理员身份运行…

[论文阅读]Deep Depth Completion of a Single RGB-D Image

摘要 我们的工作目标是完成RGB-D图像的深度通道。商用级深度摄像头通常无法捕捉光滑、明亮、透明和远处表面的深度信息。为了解决这个问题&#xff0c;我们训练了一个深度网络&#xff0c;该网络以RGB图像作为输入&#xff0c;并预测稠密的表面法线和遮挡边界。然后&#xff0…

只需15秒!这也太短了吧,单反自动拍VR就看这篇

在如今这个追求高效的时代&#xff0c;拍摄VR全景不再是复杂的技术挑战&#xff0c;而是轻松可实现的日常操作。720云相机电动云台的问世彻底颠覆了传统VR拍摄的方式&#xff0c;只需15秒&#xff0c;一键拍摄&#xff0c;极简流程即可呈现出令人惊叹的VR全景效果。 集成多功能…

机器视觉系统硬件组成之工业相机篇

工业相机是一种非常重要的机器视觉器件&#xff0c;它能够将被采集的图像信息通过电路转换成电信号&#xff0c;再通过模数转换器&#xff08;ADC&#xff09;将其转化为数字信号&#xff0c;最后以标准的视频信号输出。工业相机在机器视觉领域得到了广泛应用&#xff0c;包括质…

新时代AI桌宠:XGO Rider让你的办公室瞬间高大上

​ XGO Rider Luwu 智能打造了桌面双轮足式机器人 XGO Rider&#xff0c;这款全球首创的轮腿式桌面AI机器人&#xff0c;正在悄然改变我们的办公环境。它不仅是一个高科技玩具&#xff0c;更是一个能大幅提升工作效率和办公室科技感的智能助手。 XGO Rider 新时代“桌宠” micr…

基于zbar的二维码识别和机器人视觉巡线,附源码,使用ROS 2与OpenCV 结合的方式,让机器人识别二维码并执行设定动作

目录 前言 二维码扫描库——Zbar Zbar库的功能主要包含以下四个部分&#xff1a; 代码实现 运行结果 拉到文末有惊喜 前言 微信登录要扫二维码&#xff0c;手机支付要扫二维码&#xff0c;共享单车也要扫二维码。除了这些在日常生活中已经非常普及的扫码场景之外&#xf…

开源OpenStack

1.查询HCS基于OpenStack哪个版本开发 2.九大核心组件 OpenStack可以对接FC也可以对接KVM主机&#xff1b;&#xff08;OpenStack 对接华为FusionCompute&#xff0c;一个集群对应 openstack 一台计算主机&#xff09;-引申出nova compute 2.1nova nova两个核心组件nova contro…

图的最小生成树算法--普里姆(Prim)算法和克鲁斯克尔(Kruskal)算法

一、图的最小生成树 最小生成树&#xff08;Minimum spanning tree&#xff0c;MST&#xff09;是最小权重生成树&#xff08;Minimum weight spanning tree&#xff09;的简称&#xff0c;是一个连通加权无向图中一棵权值最小的生成树。 在一给定的无向图 G ( V , E ) G …

win11环境下成功安装mamba

文章目录 1. Mamba环境搭建2. triton安装3. causal_conv1d安装3.1 下载causal_conv1d工程文件源码3.2 修改setup.py文件3.3 安装 causal_conv1d 4. Mamba安装4.1 下载mamba工程文件源码4.2 修改setup.py文件4.3 安装 mamba 5. 查看所有成功安装的库6. 测试mamba安装是否成功6.1…

软件质量管理体系,软件评审资料,资质认证资料,安全建设,数据安全及项目管理全套资料(原件参考)

软件项目质量管理体系是指一套系统化的管理方法、流程、工具和文档&#xff0c;旨在确保软件项目从需求分析、设计、开发、测试到部署和维护的整个生命周期中&#xff0c;都能达到预定的质量标准和客户期望。该体系通过明确的角色和责任、标准化的工作流程、有效的质量控制和持…

MySQL(python开发)——(3)表数据的基本操作,增删改查

MySQL&#xff08;python开发)——&#xff08;1&#xff09;数据库概述及其MySQL介绍 MySQL&#xff08;python开发)——&#xff08;2&#xff09;数据库基本操作及数据类型 MySQL—— 表数据基本操作 一、表中插入(insert)数据——增 insert into 表名 values (值1&#…

springboot2.0x 和springboot 1.0 整合redis 使用自定义CacheManager 问题

问题描述&#xff1a; 在我们深入理解springboot2.0x的缓存机制的时候&#xff0c;发现在springboot1.0 和springboot2.0 中默认的序列化都是使用的jdk的 Serializer 实现这个接口&#xff0c;jdk自带的序列化方法&#xff0c;由此我们需要自己去创建自定义的RedisCacheManager…

解决springboot redisTemplate lua execute hash脚本 field有转义符的问题

问题&#xff1a;使用execute&#xff0c;是 result redisTemplate.execute(redisScript,Collections.singletonList(hashKey), // KEYSargs.toArray()); // ARGV会存在field有转义符 发现这个方法是直接调用下图的方法 使用的序列化的方式是 template.getValueSerializer(…

详解23种设计模式——第一部分:概述+创建型模式

目录 1. 概述 2. 创建型模式 2.1 简单&#xff08;静态&#xff09;工厂模式 2.1.1 介绍 2.1.2 实现 2.2 工厂模式 2.3 抽象工厂模式 2.4 单例模式 2.4.1 饿汉模式 2.4.2 懒汉模式 2.4.3 线程安全的懒汉式 2.4.4 DCL单例 - 高性能的懒汉式 2.5 建造者模式 2.6 原…

【进阶OpenCV】 (19)-- Dlib库 --人脸表情识别

文章目录 表情识别一、原理二、代码实现1. 摄像头前预处理2. 计算嘴唇变化3. 绘制嘴唇轮廓4. 显示结果5. 完整代码展示 总结 表情识别 目标&#xff1a;识别人物的喜悦状态。 一、原理 我们在对一张人脸图片进行关键点定位后&#xff0c;得到每个关键点的位置&#xff1a; 比…

go压缩的使用

基础&#xff1a;使用go创建一个zip func base(path string) {// 创建 zip 文件zipFile, err : os.Create("test.zip")if err ! nil {panic(err)}defer zipFile.Close()// 创建一个新的 *Writer 对象zipWriter : zip.NewWriter(zipFile)defer zipWriter.Close()// 创…

【Linux】————动静态库

作者主页&#xff1a; 作者主页 本篇博客专栏&#xff1a;Linux 创作时间 &#xff1a;2024年10月22日 一&#xff0e;库的定义 什么是库&#xff0c;在windows平台和linux平台下都大量存在着库。 本质上来说库是一种可执行代码的二进制形式&#xff0c;可以被操作系统载…

渗透实战 JS文件怎么利用

1.前言 关于JS在渗透测试中的关键作用&#xff0c;想必不用过多强调&#xff0c;在互联网上也有许多从JS中找到敏感信息从而拿下关键系统的案例。大部分师傅喜欢使用findsomething之类的浏览器插件&#xff0c;也有使用诸如Unexpected.information以及APIFinder之类的Burp插件…

ES6 Promise的用法

学习链接&#xff1a;ES6 Promise的用法&#xff0c;ES7 async/await异步处理同步化&#xff0c;异步处理进化史_哔哩哔哩_bilibili 一、同步与异步区别 1.JavaScript代码是单线程的程序&#xff0c;即通过一行一行代码顺序执行&#xff0c;即同步概念。 2.若处理一些简短、…

算法魅力-双指针的实战

目录 1.双指针的介绍 1. 左右指针&#xff08;对撞指针&#xff09; 2. 快慢指针 2.题目练习讲解 2.1 移动零 算法思路 代码展示 画图效果效果 2.2 复写零 算法思路 代码展示 2.3 快乐数 算法思路 代码展示 2.4 盛最多水的容器 算法思路 代码展示 结束语 1.双指针的…