c语言经典测试题12

1.题1

float f[10];
// 假设这里有对f进行初始化的代码
for(int i = 0; i < 10;)
{
if(f[++i] == 0)
break;
}

上述代码有那些缺陷()

A: for(int i = 0; i < 10;)这一行写错了 B: f是float型数据直接做相等判断有风险

C: f[++i]应该是f[i++]    D: 没有缺陷

我们来分析一下:我们创建了一个float类型的数组,for循环中没有调整步骤,但是在if()中却有一个调整i变量的操作,可以弥补没有调整的操作,我们知道for循环中可以没有调整但是肯呢个会导致陷入死循环。显然在这里是不会存在的。还有就是float类型的数据如果直接相等是可能出问题的,因为浮点数在存入内存时可能保存不完整,这样的话可能你不会得到想要的结果,在这里++i是一个前置++,这样的话会使f数组中的第一个元素得不到比较,这会影响代码的严谨。所以我们应该选B,C

2.题2

void GetMemory(char **p, int num)
{
if(NULL == p && num <= 0)//1
return;
*p = (char*)malloc(num);
return;
}
int main()
{
char *str = NULL;
GetMemory(&str, 80); //2
if(NULL != str)
{
strcpy(&str, "hello"); //3
printf(str); //4
}
return 0;
}

上述代码有那些错误的地方()

A: 1 B: 2 C: 3 D: 4

我们来分析一下:1处是为了避免直接传入空指针,和传入的数值不能为0,所以这里应该用或,如果用的是&&的话,是两个同时成立才会直接返回。所以1错误。2处大家会不会觉得是错的呢?在这里我们对空指针str进行取地址操作,看上去像是错的,其实这只是未定义行为,并不是错的,而且我们的GetMemory函数中是不能直接传空指针,但是没有规定不能通过地址找到str。3处strcpy函数的参数是目标空间的地址,和需要复制空间的地址,这两个参数都是一级指针,但是在这里我们对str进行了取地址操作,这样的话我们strcpy就需要用二级指针来解说,很显然strcpy不具备这个条件,所以3是错的。4是对的,之前有说过。

3.题3

#include <stdio.h>
typedef union
{
int a;
struct
{
short b;
short c;
};
}X;
int main()
{
X x;
x.a = 0x20150810;
printf("%x,%x\n", x.b, x.c);
return 0;
}

上述代码运行结果可能是() 

A: 2015,810 B: 50810,201 C: 810,2015 D:`20150,810

我们来分析一下:对于0x20150810
如果按照大端模式存储:从低地址到高地址:20 15 08 10 输出从低地址到高地址:20 15 08 10
如果按照小端模式存储:从低地址到高地址:10 08 15 20 输出从高地址到低地址:08 10 20 15
此数以int类型赋值给联合体x.a,而以结构成员b和c分开访问,分别拿到低地址的2个字节和高地址的2个字节,大端下是2015和810,小端下是810和2015

4.题4

#define MAX 255
int main()
{
unsigned char A[MAX], i;
for(i = 0; i <= MAX; i++)
A[i] = i;
return 0;
}

上述这个程序执行后会有什么错误或者效果()

A: 数组越界 B: 死循环 C: 栈溢出 D: 内存泄露

我们来分析一下:我们定义了一个MAX值为255,我们知道无符号的char最大值为255,再加1就变为0,我们的for循环判断条件为i<=MAX但是我们的i最大也只能为255,所以不可能让循环停下来。所以程序会陷入死循环,还有一个问题我们的A[i]中的i=Max时,就会导致数组越界。这里没有不断地申请空间,且也不是在动态内存中申请的空间。

5.题5

2、给定一个长度为n的数组 nums ,请你找到峰值并返回其索引。数组可能包含多个峰值,在这种情况下,返回任 何一个所在位置即可。 1.峰值元素是指其值严格大于左右相邻值的元素。严格大于即不能有等于 2.假设 nums[-1] = nums[n] = 负无穷小 3.对于所有有效的 i 都有 nums[i] != nums[i + 1]

示例: 输入:[2,4,1,2,7,8,4] 返回值:1 说明:4和8都是峰值元素,返回4的索引1或者8的索引5都可以

int findPeakElement(int* nums, int numsLen ) {
//边界情况处理,1个元素前后都是负无穷 以及 0号位置大于1号位置,-1位置负无穷的情况
if (numsLen == 1 || nums[0] > nums[1]) return 0;
//末尾位置数据大于上一个位置数据,而nums[numsLen]负无穷的情况
if (nums[numsLen-1] > nums[numsLen-2]) return numsLen-1;
int left = 0, right = numsLen - 1, mid;
while(left < right) {
mid = left + (right - left) / 2;
if (nums[mid] < nums[mid + 1])//中间比右边小,意味着右边肯定有个峰值
left = mid + 1;
else //否则在左边包括当前位置肯定有个峰值
right = mid;
}
return left;
}
谢谢

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

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

相关文章

CentOS 7 基于官方源码制作openssh 9.7p1 rpm包(without ssl)—— 筑梦之路

2024年3月11日&#xff0c;openssh 发布9.7 p1版本&#xff0c;这里在centos7 x86_64系统上来进行制作适用于centos 7 redhat 7 x86_64操作系统的openssh 9.7版本rpm包。 特别说明&#xff1a;9.6版本以后官方不再使用openssl&#xff0c;因此安装后ssh -V 查看会显示without …

各种环境下载链接

多环境镜像站 https://developer.aliyun.com/mirror/?spma2c6h.25603864.0.0.75fb4dda6bhioC http://mirrors.163.com/ http://mirrors.ustc.edu.cn/ http://mirrors.zju.edu.cn/ debeaver https://dbeaver.io/download/ mysql https://downloads.mysql.com/archives/comm…

【YOLOv8模型网络结构图理解】

YOLOv8模型网络结构图理解 1 YOLOv8的yaml配置文件2 YOLOv8网络结构2.1 Conv2.2 C3与C2f2.3 SPPF2.4 Upsample2.5 Detect层 1 YOLOv8的yaml配置文件 YOLOv8的配置文件定义了模型的关键参数和结构&#xff0c;包括类别数、模型尺寸、骨干&#xff08;backbone&#xff09;和头部…

谷歌seo外链重要还是内容重要?

想做网站&#xff0c;内容跟外链缺一不可&#xff0c;如果真的要说哪个更重要&#xff0c;那内容依旧是网站的核心&#xff0c;而外链则是额外的加分项 内容永远是王道&#xff0c;不管谷歌seo的算法怎么变&#xff0c;只要你的内容没问题&#xff0c;那就肯定不会牵扯到你的网…

【蓝桥杯】分糖果(DFS)

问题描述 两种糖果分别有 9个和 16 个&#xff0c;要全部分给 7 个小朋友&#xff0c;每个小朋友得到的糖果总数最少为 2个最多为 5 个&#xff0c;问有多少种不同的分法。糖果必须全部分完。 只要有其中一个小朋友在两种方案中分到的糖果不完全相同&#xff0c;这两种方案就…

Oracle 配置多个缓冲池(Keep pool Recycle Pool)

默认情况下&#xff0c;Oracle只有一个缓冲池 - Buffer Cache&#xff0c;其可以满足基本数据缓存需求。但某些数据的访问模式可能与普通数据不同&#xff0c;对于访问非常频繁的数据和很少访问的数据&#xff08;两种极端&#xff09;&#xff0c;Oracle可以支持配置两个独立的…

“312血洗四周年”!比特币冲破7.2万创新高!手持华尔街资金与减半叙事,跃升为全球第8大资产!

在过去一周时间里&#xff0c;比特币三次突破了2021年11月的历史高点。周一&#xff0c;加密市场延续涨势&#xff0c;比特币涨至72000美元以上&#xff0c;盘中一度触及72800美元&#xff0c;以太坊攀升至4000美元以上。 随着比特币再次创下新纪录&#xff0c;其市值已突破1.4…

python基础及网络爬虫

网络爬虫(Web crawler)&#xff0c;有时候也叫网络蜘蛛(Web spider)&#xff0c;是指这样一类程序——它们可以自动连接到互联网站点&#xff0c;并读取网页中的内容或者存放在网络上的各种信息&#xff0c;并按照某种策略对目标信息进行采集&#xff08;如对某个网站的全部页面…

记录一下C++的学习之旅吧--C++基础

文章目录 前言using namespace std; 使用标准命名空间一、helloworld-输出表示1.1代码1.2 运行结果 二、变量2.1.1 普通变量代码2.1.2 运行结果2.2.1 常量和变量代码2.2.2 运行结果 三、sizeof---统计数据类型所占的内存大小3.1 代码3.2 运行结果 四、小数表示4.2 运行结果 五、…

基于React低代码平台开发:直击最新高效应用构建

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》《项目实战》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录…

C#使用自定义的节点类Node(int data)实现二叉树类BinaryTree及其方法

目录 一、涉及到的知识点 1.树结构 2.树结构的数据类型定义 &#xff08;1&#xff09;结构定义 &#xff08;2&#xff09;基本操作 3.二叉树 &#xff08;1&#xff09;定义和特点 &#xff08;2&#xff09;遍历二叉树的输出结果 二 、二叉树的实例 一、涉及到的知…

【JavaWeb】Tomacat部署Web项目

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍【JavaWeb】Tomacat部署Web项目的详细使用以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录获&#xff0c;友友们有任何问题…

《为什么学生不喜欢上学?》读书笔记

书简介 美国弗吉尼亚大学心理学教授威林厄姆的教育心理学著作。 作者在文末揭示了撰写此书的目的&#xff1a; 【 教育是将世代积累的智慧传递给孩子&#xff0c;我们强烈地相信它的重要性&#xff0c;因为我们知道&#xff0c;它为每个孩子以及其他所有人都带来了更好生活的希…

./ 相对路径与node程序的启动目录有关

node:internal/fs/sync:78 return binding.openSync( ^ Error: ENOENT: no such file or directory, open D:\前端的学习之路\项目\codeHub\keys\private_key.pem at Object.open (node:internal/fs/sync:78:18) at Object.openSync (node:fs:565:…

Spring Boot 实现文件本地以及OSS上传

Spring Boot 实现文件上传 Maven依赖 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.15.1</version> </dependency>上传到本地 package yang.controller;import java.…

js关于防抖和节流的问题

目录 一、防抖 1、防抖代码编写 2、添加一个是否立即执行的参数flag 3、防抖应用场景 二、节流 1、节流函数编写 时间戳 定时器 时间戳 定时器。 2、节流场景 scroll 滚动 input 动态搜索 三、总结 四、防抖的库 防抖和节流的话题&#xff0c;无论是在面试还是在…

【网站项目】014乡镇自来水收费系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

Java的控制流语句详解

Java的控制流语句详解 文章目录 Java的控制流语句详解前言一、顺序结构二、选择结构1. if语句&#xff1a;用于判断一个条件是否为真&#xff0c;如果为真则执行相应的代码块。2. if...else if...else语句&#xff1a;用于在条件为真时执行一段代码&#xff0c;否则执行另一段代…

在Dart中,读取文件有两种常见的方式:使用 Stream 和使用 Future

使用 Stream 读取文件&#xff1a; import dart:io;void main() {Stream<List<int>> stream File("example.txt").openRead();stream.listen((List<int> event) {// 处理文件内容print(event);}); }异步处理&#xff1a; Stream 适用于处理大文件…

Qualcomm AI Hub-API介绍

Qualcomm AI Hub极大的简化了AI 模型部署到边缘设备的过程。本文主要介绍了Qualcomm AI Hub使用的各种API接口&#xff0c;还有各个模型配置的参数数据&#xff0c;具体可以参考API documentation API介绍&#xff1a; Core API API的核心功能&#xff0c;可直接通过qai_hub获…