数据结构经典测题3

1.

设有定义: char *p; ,以下选项中不能正确将字符串赋值给字符型指针 p 的语句是【多选】( )

A: p=getchar(); B: scanf("%s",p); C: char s[]="china"; p=s; D: *p="china";

答案为ABD

A选项,首先类型就不匹配,getchar()函数返回值是int,只能赋值给整型,此时p为char*类型。B选项,p指针在定义的时 候没有分配内存,这行代码在运行的时候会报野指针错误。C选项,指针p指向数组s。D选项,*p代表p指向内存的内容, 这 里要使用p = "china"才正确.

2.

#include<stdio.h>
int main()
{
static char *s[] = {"black", "white", "pink", "violet"};
char **ptr[] = {s+3, s+2, s+1, s}, ***p;
p = ptr;
++p;
printf("%s", **p+1);
return 0;
}

上述代码输出结果是什么?

A: ink B: pink C: white D: hite

答案为A

char **ptr[] 是一个二级指针数组,存的是s这个指针数组中每个元素的地址,p是一个三级指针,ptr这个二级指针数组的 数组名会退化成一个三级指针赋值给p,++p相当于是在ptr数组上往后跳了一个元素的位置,*p就是ptr数组第二个元素的内 容,也就是指向s数组中s+2这个元素的地址,**p就得到了s数组中s+2这个元素的内容, s数组中保存的是字符串的首地址,那就 得到了"pink"这个元素的首地址,在**p+1就是这个地址向后偏移一个字节,也就指到了'i'上,所以printf("%s",**p+1);输出的就 是"ink".

3.

若有定义语句: char s[3][10],(*k)[3],*p; 则以下赋值语句错误的是( )

1.p = s;
2.p = k;
3.p = s[0];
4.k = s;

A: 124 B: 1234 C: 12 D: 234

答案为A

题目主要就考指针类型是否一样,char s[3][10]中s运算时会退化为数组指针,类型为char (*)[10],所指向的每个数组长度 为10;char (*k)[3]很明显k就是一个数组指针,类型也为 char (*)[3],所指向的每个数组的长度为3;char *p类型为char * 指针,s[0]代表二维数组第一行,运算时会退化为第一行首元素地址,类型为char *。在没有强制类型转换的情况下,只有 类型完全相同的指针才能相互赋值.

4.

假设 sizeof(void *) 为4,sizeof(char) 为1,那么对于 char str[sizeof("ab")]; sizeof(str) 的值是( )

A: 2 B: 3 C: 4 D: 代码无法编译

答案为B

因为sizeof是计算数据结构的大小,数组就是一种数据结构,sizeof(str)此时str代表整个数组。对于"ab",编译器都会自动 在后面添一个0,占据一个字节,共3个字节,故数组str的长度为3,元素是char类型,故最终结果为3.

5.

有如下程序段,则对函数 fun 的调用语句正确的是【多选】( )

char fun(char *);
int main()
{
char *s = "one", a[5] = {0}, (*f1)(char *) = fun, ch;
return 0;
}

A: *f1(&a); B: f1(*s); C: f1(&ch); D: ch = *f1(s);要改成(*f1)(s)才正确

答案为CD

我们知道使用(*f1)(s)与f1(s)效果是相同的。*f1(s)中()的优先级比*高,先结合为f1(s),返回结果是char,*f1(s)是对返回结 果char类型数据解引用,是错的,改成(*f1)(s)是对的,故D正确;对ch取地址得到char *,作为参数没问题,C正确;A错 在对char解引用,B错在参数类型不匹配.

6.

给定两个字符串 s1 和 s2 ,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符 串.

bool CheckPermutation(char* s1, char* s2){
int table1[256] = {0}, table2[256] = {0};
int len1 = strlen(s1);
int len2 = strlen(s2);
if (len1 != len2) return false;//长度都不同,直接不可能了
while(*s1 != '\0' && *s2 != '\0') {
table1[*s1] += 1;//以字符ascii值为下标对s1字符串的字符进行计数table2[*s2] += 1;//以字符ascii值为下标对s2字符串的字符进行计数
s1++;
s2++;
}
for (int i = 0; i < 256; i++) {
if (table1[i] != table2[i]) { //判断两个字符串相同位置是否计数相同即可
return false;
}
}
return true;
}

谢谢

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

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

相关文章

如何优化 Selenium 和 BeautifulSoup 的集成以提高数据抓取的效率?

摘要 在互联网时代&#xff0c;数据的价值日益凸显。对于电商网站如京东&#xff0c;其商品信息、用户评价等数据对于市场分析、产品定位等具有重要意义。然而&#xff0c;由于这些网站通常使用 JavaScript 动态生成内容&#xff0c;传统的爬虫技术难以直接获取到完整数据。本…

【Unity实战】yield return null还是WaitForEndOfFrame

当在Unity中编写协程&#xff08;尤其是协程套无限循环&#xff09;时&#xff0c;常常会用到yield关键字来控制协程的执行流程避免程序假死。以下是常见做法&#xff1a; yield return null 当使用yield return null时&#xff0c;协程会在下一帧继续执行。这意味着协程将暂…

SSM超市管理系统-计算机毕业设计源码12393

目 录 摘要 Abstract 1 绪论 1.1研究的背景和意义 1.2研究内容 1.3论文结构与章节安排 2 开发技术介绍 2.1 SSM框架 2.2 MySQL数据库 3 超市管理系统系统分析 3.1 可行性分析 3.2 系统流程分析 3.2.1 数据流程 3.3.2 业务流程 3.3 系统功能分析 3.3.1 功能性…

机器学习 | 回归算法原理——最速下降法(梯度下降法)

Hi&#xff0c;大家好&#xff0c;我是半亩花海。接着上次的最小二乘法继续更新《白话机器学习的数学》这本书的学习笔记&#xff0c;在此分享最速下降法&#xff08;梯度下降法&#xff09;这一回归算法原理。本章的回归算法原理基于《基于广告费预测点击量》项目&#xff0c;…

使用 AntV G2 绘制折线图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 使用 AntV G2 绘制折线图 应用场景介绍 AntV G2 是一款基于 Vue 的数据可视化框架&#xff0c;可用于创建交互式图表。本代码展示了如何使用 AntV G2 绘制折线图&#xff0c;以可视化时间序列数据。 代码基本…

数据结构——队列(java实现)及相应的oj题

文章目录 前言队列队列的概念队列的实现队列的链表实现实现的方法与属性内部类实现节点入队列出队列获取队头元素但不删除判空获取队列元素个数 队列的数组实现循环队列方法属性实现&#xff1a;构造方法向循环队列插入一个元素&#xff0c;成功插入则为真。从循环队列中删除一…

Axivion Suite 7.8现已发布

现已实现100%覆盖MISRA规则&#xff0c;并加入了高级功能来提高代码分析能力。 我们很高兴地宣布Axivion Suite 7.8发布。全新版本的Axivion Suite对编译器、配置、分析、仪表板 (WebUI)和IDE插件的架构验证和静态代码分析功能均进行了升级。 100%覆盖所有可测试的MISRA规则 …

昇思25天学习打卡营第15天|K近邻算法实现红酒聚类

这个实验是关于如何使用MindSpore框架在红酒数据集上实现K近邻&#xff08;KNN&#xff09;算法来进行聚类分析的。KNN是一种简单但非常有效的机器学习算法&#xff0c;它通过计算样本之间的距离来决定其分类KNN算法的核心思想是&#xff0c;一个样本的类别可以通过它与训练集中…

Pytorch使用教学1-Tensor的创建

0 导读 在我们不知道什么是深度学习计算框架时&#xff0c;我们可以把PyTorch看做是Python的第三方库&#xff0c;在PyTorch中定义了适用于深度学习的张量Tensor&#xff0c;以及张量的各类计算。就相当于NumPy中定义的Array和对应的科学计算方法&#xff0c;正是这些基本数据…

【Nacos安装】

这里写目录标题 Nacos安装jar包启动Docker单体Docker集群 Nacos相关配置日志配置 Nacos安装 jar包启动 下载jar包 在官方下载链接&#xff0c;根据需求选择相应的版本下载。 解压 tar -zxvf nacos-server-2.4.0.1.tar.gz或者解压到指定目录 tar -zxvf nacos-server-2.4.0…

TikTok达人合作中的消费者行为研究:精准营销新趋势

随着全球社交媒体技术的飞速发展&#xff0c;TikTok作为短视频领域的佼佼者&#xff0c;其独特的达人带货模式不仅成为驱动消费市场发展的新力量&#xff0c;还深刻改变了消费者的购买行为。本文Nox聚星将和大家探讨TikTok达人合作过程中消费者的行为模式和偏好变化。 一、消费…

SkyWalking入门搭建【apache-skywalking-apm-10.0.0】

Java学习文档 视频讲解 文章目录 一、准备二、服务启动2-1、Nacos启动2-2、SkyWalking服务端启动2-3、SkyWalking控制台启动2-4、自定义服务接入 SkyWalking 三、常用监控3-1、服务请求通过率3-2、服务请求拓扑图3-3、链路 四、日志配置五、性能剖析六、数据持久化6-1、MySQL持…

企业怎么才能用上大语言模型?

题图&#xff5c;视觉中国 以ChatGPT为起点&#xff0c;大语言模型&#xff08;LLM&#xff09;用全面的技术创新&#xff0c;以及在用户和产业中的应用落地&#xff0c;再次掀起了一个AI新浪潮。 与它的前辈们相比&#xff0c;大语言模型因为打通了语言这一人类沟通中介&…

关联查询(xml)

多对多&#xff1a;数据库中需要有中间表&#xff0c;在两个实体类中都加入对方的List集合&#xff0c;在写查询语句时写三张表

MySQL第一阶段:多表查询、事务

继续我的MySQL之旅&#xff0c;继续上篇的DDL、DML、DQL、以及一些约束&#xff0c;该到了多表查询和事务的学习总结&#xff0c;以及相关的案例实现&#xff0c;为未来的复习以及深入的理解做好知识储备。 目录 多表查询 连接查询 内连接 外连接 子查询 事务 事务简介…

RTK高精度定位终端的功能跟用途

RTK高精度定位终端是一种集成了高精度定位技术的手持或便携式设备&#xff0c;其功能和用途广泛且重要。以下是RTK高精度定位终端的主要功能和用途&#xff1a; 一、功能 高精度定位&#xff1a; RTK技术通过接收卫星信号和地面基站的差分修正数据&#xff0c;实现厘米级甚至…

开源安全信息和事件管理(SIEM)平台OSSIM

简介 OSSIM&#xff0c;开源安全信息和事件管理&#xff08;SIEM&#xff09;产品&#xff0c;提供了经过验证的核心SIEM功能&#xff0c;包括事件收集、标准化和关联。 OSSIM作为一个开源平台&#xff0c;具有灵活性和可定制性高的优点&#xff0c;允许用户根据自己的特定需…

Java Linux操作系统

1、操作系统是协助用户调度硬件工作&#xff0c;充当用户和计算机硬件之间的桥梁 2、Linux内核 提供了linux系统的主要功能 3、发行版Centos&#xff1a;内核应用程序 4、快照&#xff1a;保存虚拟机的状态&#xff0c;当虚拟机出现问题的时候&#xff0c;可以恢复原始的状态…

华为强制恢复出厂设置后如何恢复数据?数据重生的2个方法介绍

华为作为全球知名的手机品牌&#xff0c;其产品在市场上广受欢迎。然而&#xff0c;有时由于各种原因&#xff0c;我们可能需要强制恢复出厂设置&#xff0c;这往往意味着数据的丢失。那么&#xff0c;如何在华为强制恢复出厂设置后&#xff0c;让数据“重生”呢&#xff1f;本…

Postman测试工具详细解读

目录 一、Postman的基本概念二、Postman的主要功能1. 请求构建2. 响应查看3. 断言与自动化测试4. 环境与变量5. 集合与文档化6. 与团队实时协作 三、Postman在API测试中的重要性1. 提高测试效率2. 保障API的稳定性3. 促进团队协作4. 生成文档与交流工具 四、Postman的使用技巧1…