数据结构经典测试题4

1.

#include <stdio.h>
int main()
{
char *str[3] ={"stra", "strb", "strc"};
char *p =str[0];
int i = 0;
while(i < 3)
{
printf("%s ",p++);
i++;
}
return 0;
}

上述代码运行结果是什么?

A: stra strb strc B: s t r C: stra tra ra D: s s s

答案为C

p是char*类型,每次++,后移一个地址,char *p = str[0]相当于char *p = "stra",p先指向其中的字符's',printf输出遇到 0停止,第一次输出"stra",p++后,指向字符't',第二次输出"tra",第三次输出"ra".

2.

#include <stdio.h>
int main() {
int m[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int(*p)[4] = (int(*)[4])m;
printf("%d", p[1][2]);
return 0;
}

上述代码运行结果是什么?

A: 7 B: 3 C: 8 D: 4

答案为A

p是一个数组指针,指向的数组元素是int,长度是4,p被赋值为m的首地址,此时p+1在数组m里会跳过4个元素,相当于 是将m中的元素四个一组进行管理,p[1]拿到第二组{5,6,7,8},而p[1]是5的地址,p[1][2]就是这一组里第三个元素7.

3.

int main()
{
char p1[15]="abcd", *p2="ABCD", str[50]="xyz";
strcpy(str + 2, strcat(p1+2, p2+1));
printf("%s", str);
return 0;
}

上述代码运行结果是什么?

A: xyabcAB B: abcABz C: ABabcz D: xycdBCD

答案为D

计算时p1、str退化为首元素地址,则p1+2相当于是字符串"cd"的首地址,p2+1相当于是字符串"BCD"的首地址,strcat函 数将两个字符串拼接,并把新字符串"cdBCD"的首地址返回,再执行strcpy(str+2,"cdBCD");str+2是数组第3个元素'z'的地址 所以,strcpy(str+2,"cdBCD")也就是将'z'及其后的字符用"cdBCD"替换,而前面的"xy"不受影响 所以最后输出"xycdBCD".

4.

4、以下叙述中正确的是( )

A: 两个字符串可以用关系运算符进行大小比较

B: 函数调用strlen(s);会返回字符串s实际占用内存的大小(以字节为单位)

C: C语言本身没有提供对字符串进行整体操作的运算符

D: 当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和

答案为C

A选项错误,通常C语言中两个字符串比较大小,是借助strcmp()函数进行的。B选项中strlen返回的是字符串除结束符'\0'的 部分,实际占用内存大小加上结尾符。D选项两个字符串拼接后,原本每个字符串后都会有一个字符串结束符'\0',而拼接 后,字符串结束符只剩下一个,所以占用空间会减一.

5.

#include<stdio.h>
char* f(char* str, char ch)
{
char* it1 = str;
char* it2 = str;
while(*it2 != '\0')
{
while (*it2 == ch)
{
it2++;
}
*it1++ = *it2++;
}
return str;
}
int main() {
char a[10];
strcpy(a, "abcdcccd");
printf("%s", f(a, 'c'));
return 0;
}

上述代码运行结果时什么?

A: abdcccd B: abdd C: abcc D: abddcccd

答案为D

内层while循环的作用让指针it2跳过字符'c',第一次越过后停在原字符串第一个'd'上,而在之前it1和it2是同步的,赋值不会 改变字符串内容,此时it1停在第一个'c'上,*it1++ = *it2++;语句将'c'替换为'd',字符串变更为"abddcccd",同时指针it1加 加停在第四个字符'd'上,it2再次跳过字符'c',停在最后一个'd'上,赋值后,字符串不变,再后移外层循环遇到0结束.

6.

URL化。编写一种方法,将字符串中的空格全部替换为 %20 。假定该字符串尾部有足够的空间存放新增字符, 并且知道字符串的“真实”长度。

示例:

输入:"Mr John Smith ", 13 输出:"Mr%20John%20Smith"

输入:" ", 5 输出:"%20%20%20%20%20"

char* replaceSpaces(char* S, int length){
int count = 0;
for (int i = length - 1; i >= 0; i--) {
if (S[i] == ' ') count++;//统计空格的个数
}
int r_end = length + count * 2; //实际所需数组空间的长度
int c_end = length - 1;//字符串的末尾
S[r_end--] = '\0';//先设置字符串结尾标志
while(c_end >= 0){ //从后往前开始遍历替换
if (S[c_end] == ' ') {//当前字符是空格则向末尾添加 %20
S[r_end--] = '0';
S[r_end--] = '2';
S[r_end--] = '%';
c_end--;
continue;
}
S[r_end--] = S[c_end--];//当前是非空格则直接赋值即可
}
return S;
}
谢谢

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Rocky/Centos Linux安装Code-server,并注册成服务自启动

文章目录 Rocky/Centos Linux安装Code-server&#xff0c;并注册成服务自启动介绍安装1. 下载压缩包2. 解压缩3. 执行启动命令4. 浏览器访问5. 开机自启动 Rocky/Centos Linux安装Code-server&#xff0c;并注册成服务自启动 介绍 VS Code Server是微软推出的VSCode风格的Web…

谷歌AI拿下IMO奥数银牌!6道题轻松解出4道~

本周四&#xff0c;谷歌DeepMind团队宣布了一项令人瞩目的成就&#xff1a;&#xff1a;用 AI 做出了今年国际数学奥林匹克竞赛 IMO 的真题&#xff0c;并且距拿金牌仅一步之遥。这一成绩不仅标志着人工智能在数学推理领域的重大突破&#xff0c;也引发了全球范围内的广泛关注和…

私域电商丨软件系统开发中,一定要避开的几个坑,看懂少很多弯路

文丨微三云胡佳东&#xff0c;点击上方“关注”&#xff0c;为你分享市场商业模式电商干货。 - 大家好&#xff0c;我是软件开发胡佳东&#xff0c;每天为大家分享互联网资讯干货&#xff01; 在数字化时代的今天&#xff0c;软件开发是已经成为推动科技进步和商业发展的重要…

vmware虚拟机安装linux没有IP地址

直接设置固定IP 1、在虚拟机菜单栏选择编辑&#xff0c;然后点击虚拟网络编辑器 2、选择Vmnet8 Net网络连接方式&#xff0c;随意设置子网IP 3、点击NAT设置页面&#xff0c;查看子网掩码和网关&#xff0c;修改静态IP会用到 4、打开电脑控制面板–网络和Internet–网络连…

面试常考Linux指令

文件权限 操作系统中每个文件都拥有特定的权限、所属用户和所属组。权限是操作系统用来限制资源访问的机制&#xff0c;在 Linux 中权限一般分为读(readable)、写(writable)和执行(executable)&#xff0c;分为三组。分别对应文件的属主(owner)&#xff0c;属组(group)和其他用…

前端知识笔记之HTML

1.标签元素与属性&#xff0c;注意事项 2.多级标签排序List&#xff0c;无顺序&#xff08;Ul&#xff09;和有顺序(Ol) 3.HTML页面结构 4.页面跳转&#xff0c;注意#是统一页面的跳转 5.图片、视频、音频 标签 6.前端表单与后端方法 数据接收的demo 7.常见表单项 8.注意日期类…

Python爬虫知识体系-----Urllib库的使用

数据科学、数据分析、人工智能必备知识汇总-----Python爬虫-----持续更新&#xff1a;https://blog.csdn.net/grd_java/article/details/140574349 文章目录 1. 基本使用2. 请求对象的定制3. 编解码1. get请求方式&#xff1a;urllib.parse.quote&#xff08;&#xff09;2. ur…

Linux 安装 GDB (无Root 权限)

引入 在Linux系统中&#xff0c;如果你需要在集群或者远程操作没有root权限的机子&#xff0c;安装GDB&#xff08;GNU调试器&#xff09;可能会有些限制&#xff0c;因为通常安装新软件或更新系统文件需要管理员权限。下面我们介绍可以在没有root权限的情况下安装GDB&#xf…

谷粒商城-性能压测

1.压力测试 在项目上线前对其进行压力测试(以每个微服务为单元) 目的:找到系统能承载的最大负荷,找到其他测试方法更难发现的错误(两种类型:内存泄漏,并发与同步). 1.性能指标 响应时间(Response Time (RT)): 响应时间 指用户从客户端发起一个请求开始,到客户端接收到从服务…

2023IMO预选题几何第5题

在锐角 △ A B C \triangle ABC △ABC 中, ω ω ω 是外接圆, O O O 是外心. D D D, E E E 分别是 ω ω ω 上不同于 B B B, C C C 的点, 满足 B D BD BD ⊥ A C AC AC, C E CE CE ⊥ A B AB AB. 设直线 C O CO CO, A B AB AB 交于点 X X X, 直线 B O BO BO,…

怎样在 Nginx 中配置基于请求客户端指纹识别数据的路由?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; 文章目录 怎样在 Nginx 中配置基于请求客户端指纹识别数据的路由 怎样在 Nginx 中配置基于请求客户端指纹识别数据的路由 在当今数字化的世界中&#xff0c;网站和应用程…

mac M1安装Roop教程及所遇到的问题

1.安装miniconda&#xff0c;下载地址&#xff1a; 按 Python 版本划分的最新 Miniconda 安装程序链接&#xff1a;https://docs.anaconda.com/miniconda/miniconda-other-installer-links/ 下载后直接默认安装即可。 我用的是&#xff1a;Python3.10对应的Miniconda 2.下载…

GIT新手提交操作

1、创建一个本地分支 进入Xshell已经拉取的该项目的项目代码路径下执行git checkout -b 姓名全拼音&#xff0c;例如&#xff1a;git checkout -b xiewei&#xff0c;当前显示已创建。 cuihengyidell-PowerEdge-T550:~/SVN/Git_R11/R11_V4.02.0_Source$ git checkout -b cuih…

[数据集][目标检测]躺坐站识别检测数据集VOC+YOLO格式9488张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;9488 标注数量(xml文件个数)&#xff1a;9488 标注数量(txt文件个数)&#xff1a;9488 标注…

STM32开发环境配置记录——关于PlatformIO + VSCode + CubeMX的集成环境配置

目录 前言 介绍 PlatformIO STM32CubeMX Visual Studio Code 正文 使用STM32CubeMX生成PlatformIO可以支持的Makefile文件 1. 选择目标引脚并配置 2. 配置时钟树 3. [关键&#xff01;调试则需要&#xff1a;]选择调试器类型 4. 选择对应的目标IDE配置代码与文件 使…

Spring Boot中如何实现全链路调用日志跟踪?

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 引言 在Spring Boot中实现全链路调用日志跟踪&#xff0c;主要依赖于Mapped Diagnostic Context&#xff08;MDC&#xff09;功能。MDC是一种用于在多线程条件下记录日志的功能&#xff0c;它可以看作是与当…

【Unity】关于Luban的简单使用

最近看了下Luban导出Excel数据的方式&#xff0c;来记录下 【Unity】关于Luban的简单使用 安装Luban开始使用UnityLubanC# 扩展 安装Luban Luban文档&#xff1a;https://luban.doc.code-philosophy.com/docs/beginner/quickstart 1.安装dotnet sdk 8.0或更高版本sdk 2.githu…

Java面经之Java并发

进程&#xff1a;程序的一次执行 线程&#xff1a;一个进程在执行的过程可以产生多个线程 多个线程共享进程的堆和方法区资源&#xff0c;但每个线程有自己的程序计数器、虚拟机栈、本地方法栈 其中程序计数器是为了线程切换后恢复到正确的执行位置&#xff1b;虚拟机栈和本地…

Zabbix自定义监控内容部署+邮件报警+Zabbix自愈+Zabbix批量添加主机

一、自定义监控项 1.1自定义监控项原理 1&#xff09;先明确获取监控指标数据的命令或脚本; 2&#xff09;在被监控主机配置文件子目录&#xff08;/etc/zabbix/zabbix_agent2.d/)中创建以.conf后缀的监控项配置文件&#xff0c;自定义获取监控指标数据的键值&#xff1b; …

【VUE】个人记录:父子页面数据传递

1. 父传子 在父页面中&#xff0c;调用子页面的组件位置处&#xff0c;通过“&#xff1a;”进行参数传递 <child-component :childData"parentData"></child-component>parentData对象&#xff0c;需要在父页面的data中进行初始化声明 在子页面中&am…