2道经典的C语言练习题(解答超详细)

文章目录

  • 每日一言
  • 1
  • 2
  • 结语
    • ⭐如果发现自己做错了,请不要气馁,做题就是一个查漏补缺的过程。每个人不是天生就会写代码的,给自己一些时间,不要放弃,加油陌生人!

每日一言

当你关注到自己行为背后的意图时,你开始看见自己了;当你关心意图背后的需要和感受时,你才真的看见了。
-伯特·海灵格


1

下面代码的运行结果为?

int main()
{unsigned char puc[4];struct tagPIM{unsigned char ucPim1;unsigned char ucData0 : 1;unsigned char ucData1 : 2;unsigned char ucData2 : 3;}*pstPimData;pstPimData = (struct tagPIM*)puc;memset(puc,0,4);pstPimData->ucPim1 = 2; pstPimData->ucData0 = 3;pstPimData->ucData1 = 4;pstPimData->ucData2 = 5;printf("%02x %02x %02x %02x\n",puc[0], puc[1], puc[2], puc[3]);return 0;
}

正确答案:

02 29 00 00

解析:
想要回答正确这道题,你必须要对位段有一定的了解(如果忘记了,快去复习吧~),接下来我们一步步分析
我们先看结构体:

 struct tagPIM{unsigned char ucPim1;unsigned char ucData0 : 1;unsigned char ucData1 : 2;unsigned char ucData2 : 3;}*pstPimData;

首先思考一下这个问题:这个结构体占用了几个字节?
让我们把图画出来:
在这里插入图片描述
答案是2个字节

 unsigned char puc[4];给了我们4个字节pstPimData = (struct tagPIM*)puc;结构体只占用2个字节

知道了这些,我们再看赋值

 pstPimData->ucPim1 = 2; pstPimData->ucData0 = 3;pstPimData->ucData1 = 4;pstPimData->ucData2 = 5;

因为 ucPim1 把一个字节占据了,所以在这里插入图片描述
因为 ucData0 = 3 ,而 3 转换成二进制为 11 ,而又因为 ucData0 只分配到了一个比特位,于是越界了,发生截断,只保留了后一位 1
因为 ucData1 = 4 ,而 4 转换成二进制为 100 ,而又因为 ucData1 只分配到了两个比特位,于是越界了,发生截断,只保留了后两位 00
大家根据以上过程来想一想 ucData2 = 5 的结果吧。
最终 puc[1] 如下:
在这里插入图片描述
最后用16进制打印出 puc 的每个元素
其中 puc[0] 不用多说,就是 2
puc[1] 为 29
计算过程如下:
在这里插入图片描述
如果看不懂的话,就去复习进制转换吧~
puc[2] 和 puc[3] memset 后都动过,不必多说,肯定是00
嘿嘿,这道题就做出来了 ^_^

2

有以下宏定义和结构定义

#define MAX_SIZE A+B
struct _Record_Struct
{unsigned char Env_Alarm_ID : 4;unsigned char Para1 : 2;unsigned char state;unsigned char avail : 1;
}*Env_Alarm_Record;
struct _Record_Struct *pointer = (struct _Record_Struct*)malloc(sizeof(struct _Record_Struct) * MAX_SIZE);

当 A=2,B=3时,pointer 分配几个字节的空间?

正确答案:

9

在做这道题时要注意,#define 执行的是查找替换
让我们一步一步来分析
首先看结构体

struct _Record_Struct
{unsigned char Env_Alarm_ID : 4;unsigned char Para1 : 2;unsigned char state;unsigned char avail : 1;
}*Env_Alarm_Record;

它占几个字节呢?
答案是 3
原因:
结构体向最长的 char 对齐,前两个位段元素一共 4+2 位,不足8位,合起来占 1 字节,最后一个单独 1 字节,一共 3 字节。
由于 #define 执行的是查找替换, sizeof(struct _Record_Struct) * MAX_SIZE这个语句其实是 3*2+3 ,结果为9

结语

⭐如果发现自己做错了,请不要气馁,做题就是一个查漏补缺的过程。每个人不是天生就会写代码的,给自己一些时间,不要放弃,加油陌生人!

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos 8.0 安装sysbench 1.0.17

序号步骤说明执行命令执行结果备注1 下载并解压sysbench-1.0.17.zip sysbench-1.0.17.zip2安装依赖文件 yum install automake libtool -y yum install /usr/include/libpq-fe.h 3安装sysbench cd sysbench-1.0.17 ./autogen.sh ./configure \ --prefix/sysbench \ --with-pgsq…

快乐学Python,Python基础之组织代码「类与对象」

在上一篇文章中,我们了解了函数。这一篇文章我们来了解一下Python中另外一个重要的概念:类与对象。 1、类与对象 (1)类与对象有什么关系? 你可能会奇怪,为什么要叫类与对象呢?是两个不同的东…

Rustdesk本地配置文件存在什么地方?

环境: rustdesk1.1.9 Win10 专业版 问题描述: Rustdesk本地配置文件存在什么地方? 解决方案: RustDesk 是一款功能齐全的远程桌面应用。 支持 Windows、macOS、Linux、iOS、Android、Web 等多个平台。 支持 VP8 / VP9 / AV1 …

Nacos 学习之系列文章

系列文章目录 目录 系列文章目录 文章目录 前言 一、Nacos是什么? 二、Nacos的主要功能 服务发现和服务健康监测 动态配置服务 动态 DNS 服务 三、Nacos 地图 四、Nacos 生态图 总结 前言 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Naco…

白话机器学习的数学-3-评估

1、 模型评估 那我们如何测量预测函数 fθ(x)的正确性,也就是精度呢? 观察函数的图形,看它能否很好地拟合训练数据: 这是只有一个变量的简单问题,所以才能在图上展 示出来。 过像多重回归这样的问题,变量增…

pandas保存style到excel文件中

更多pandas style用法请参考:https://pandas.liuzaoqi.com/doc/chapter8/style.html 示例程序 import numpy as np import pandas as pd# 示例数据 dataframe pd.DataFrame({"date": pd.date_range("2024-01-01", "2024-02-01"),&…

D51+D52|接雨水

503.下一个更大元素ll 初始思路:这样这道题就变成了一道很纯粹的单调栈问题,因为只涉及了一个数组。但又因为这个数组是一个循环数组所以问题又变的有些复杂。 初始思路: 在循环数组的问题中,比较需要考虑的就是数组中最后一个…

web——德州扑克

1.此案例只用于学习 2.未接入游戏规则 HTML代码部分 <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width"><meta name"Poker Skin" content&quo…

模式识别实验三

实验三 一  实验名称 感知器设计 二 目的和意义 使用感知器完成线性分类任务 三 操作步骤或算法结构 数据预处理。载入数据文件&#xff08; iris.csv 文件&#xff09;中的数据&#xff0c;并将其分成样本向量矩阵X和样本分类结果向量 G \bf G G。 给 4 4 4 列向量的…

【Vue3】2-5 : 指令系统与事件方法及传参处理

本书目录&#xff1a;点击进入 一、标签属性中的使用 - 指令系统 1.1 那么模板语法是否可以在标签属性中进行使用呢? ▶ 当然可以&#xff1a;使用 指令系统 二、指令系统 2.1 v-bind 2.2 v-on 三、实战 3.1 methods 选项 3.2 $event语法 一、标签属性中的使用 - 指令…

RT_Thread 调试笔记:时间相关,时钟管理函数,延时,定时器、 毫秒转换为时分秒 等

说明&#xff1a;记录日常使用 RT_Thread 开发时做的笔记。 持续更新中&#xff0c;欢迎收藏。 1. 延时函数 1. us延时函数 rt_hw_us_delay(rt_uint32_t us);//输如数据是us rt_hw_us_delay(200);//输入数据是us 2. ms延时函数 rt_thread_mdelay(1000);//输入数据是ms 2…

【教学类-综合练习-07】20240102 大4班 综合材料 (涂色类)对称动物面具,对称蝴蝶、头饰等

背景需求 年终了&#xff0c;清理库存&#xff0c;各种打印的题型纸都拿出来&#xff0c;当个别化学习材料 教学过程&#xff1a; 时间&#xff1a;2024年1月2日 班级&#xff1a;大4班 人数&#xff1a;25人 这次混了一点“EBRU湿拓郁金香”的纸片&#xff0c; 裁剪花朵…

从零学Java - String类

Java String类 文章目录 Java String类1 String1.1 常用两种创建方式1.2 比较两种创建方式1.3 字符串不可变性1.4 面试题 2 常用方法2.1 练习 3 可变字符串3.1 常用方法3.2 验证StringBuilder的高效性3.3 练习3.4 面试题: 4 正则表达式4.1 元字符4.2 其他字符4.2.1 预定义字符4…

基于Tosca和Terraform的多云资源编排探索

01 导言 随着企业采用多云战略和迁移到云平台&#xff0c;需要依赖不同的云资源来支持业务系统。传统的手动开通和配置资源关联关系的方法在多云环境下变得耗时且复杂&#xff0c;给运维带来困难。 为了应对多云环境中基础设施管理的复杂性&#xff0c;寻找一种高效的多云资源编…

mysql索引失效的情况

目录 1破坏最左前缀法则2在索引列上做任何计算、函数操作&#xff0c;会导致索引失效而转向全表扫描。3存储引擎不能使用索引中范围条件右边的列4Mysql在使用不等于时无法使用索引会导致全表查询5is null可以使用索引&#xff0c;但是is not null无法使用索引6like以通配符开头…

Packet Tracer - Configure AAA Authentication on Cisco Routers

Packet Tracer - 在思科路由器上配置 AAA 认证 地址表 目标 在R1上配置本地用户账户&#xff0c;并使用本地AAA进行控制台和vty线路的身份验证。从R1控制台和PC-A客户端验证本地AAA身份验证功能。配置基于服务器的AAA身份验证&#xff0c;采用TACACS协议。从PC-B客户端验证基…

软件测试|测试平台开发-Flask入门:Flask动态路由

前言 之前我们介绍了flask发送http请求&#xff0c;以及flaskURL的详解&#xff0c;我们使用的路由都是固定的&#xff0c;一个路径和一个视图函数绑定&#xff0c;当访问这条路径时会触发相应的处理函数。但是当我们要处理更为复杂的情况时&#xff0c;比如我们有多个用户&am…

Mybatis面经

Mybatis &#x1f4d1;前言 本文主要是【Mybatis】——Mybatis面经的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每…

【书生·浦语大模型实战营03】《基于 InternLM 和 LangChain 搭建你的知识库》学习笔记

《基于 InternLM 和 LangChain 搭建你的知识库》 常见术语 RAG: Retrieval Augmented Generation&#xff0c;检索增强生成 1. 大模型开发范式 1.1 RAG VS Finetune RAGFinetune低成本可个性化微调可实时更新知识覆盖面广受基座模型影响大成本高昂单次回答知识有限无法实时…

Elasticsearch:Search tutorial - 使用 Python 进行搜索 (二)

这个是继上一篇文章 “Elasticsearch&#xff1a;Serarch tutorial - 使用 Python 进行搜索 &#xff08;一&#xff09;” 的续篇。在今天的文章中&#xff0c;我们接着来完成如何进行分页及过滤。 分页 - pagination 应用程序处理大量结果通常是不切实际的。 因此&#xff0…