c语言经典测试题12

news2024/12/27 9:40:20

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.coloradmin.cn/o/1510716.html

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

相关文章

LLM PreTraining from scratch -- 大模型从头开始预训练指北

最近做了一些大模型训练相关的训练相关的技术储备,在内部平台上完成了多机多卡的llm 预训练的尝试,具体的过程大致如下: 数据准备: 大语言模型的训练依赖于与之匹配的语料数据,在开源社区有一群人在自发的整理高质量的语料数据,可以通过 以下的一些链接获取 liwu/MNBVC…

Java多线程——对象的原子更新

目录 引出对象原子更新AtomicReferenceAtomicLongFieldUpdaterABA问题 创建线程有几种方式&#xff1f;方式1&#xff1a;继承Thread创建线程方式2&#xff1a;通过Runnable方式3&#xff1a;通过Callable创建线程方式4&#xff1a;通过线程池概述ThreadPoolExecutor API代码实…

在VMvare中虚拟机安装centos7和初始设置

下载镜像 阿里云的镜像站&#xff1a;https://mirrors.aliyun.com/centos/7/isos/x86_64/ 创建虚拟机过程 虚拟机创建过程比较简单&#xff0c;以下在VMvare16中进行安装 点击左上角&#xff0c;文件-新建虚拟机&#xff1a; 选择典型 选择刚刚下载好的镜像 输入虚拟机…

#QT(本地音乐播放器)

1.IDE&#xff1a;QTCreator 2.实验&#xff1a;之前做的音乐播放器只做了一个界面&#xff0c;是因为跟的课程发现到后面需要付费&#xff0c;并且WINGW6.2.0运行QMediaPlayer时无法运行&#xff0c;会崩溃&#xff0c;现在退一步用WINGW5.12.2做一个本地音乐播放器 3.记录&am…

012集——显示高考天数倒计时——vba实现

以下代码实现高考倒计时&#xff1a; Sub 高考倒计时() 高考日期 CDate("06,07," & Year(Date)) If Date > 高考日期 Then高考日期 CDate("06-07-" & Year(Date) 1) End If 年月日 Year(Date) & "年" & Month(Date) &am…

鲜花销售小程序|基于微信小程序的鲜花销售系统设计与实现(源码+数据库+文档)

鲜花销售小程序目录 目录 基于微信小程序的鲜花销售系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1前台功能模块 2、后台功能模块 1、管理员功能模块 四、数据库设计 1、实体ER图 2、具体的表设计如下所示&#xff1a; 五、核心代码 六、论文参考 七、…

LabVIEW多表位数字温湿度计图像识别系统

LabVIEW多表位数字温湿度计图像识别系统 解决数字温湿度计校准过程中存在的大量需求和长时间校准问题&#xff0c;通过LabVIEW开发平台设计了一套适用于20多个表位的数字温度计图像识别系统。该系统能够通过图像采集、提取和处理&#xff0c;进行字符训练&#xff0c;从而实现…

LiveGBS流媒体平台GB/T28181功能-海康摄像头国标语音对讲大华摄像头国标语音对讲GB28181语音对讲需要的设备及服务准备

LiveGBS海康摄像头国标语音对讲大华摄像头国标语音对讲GB28181语音对讲需要的设备及服务准备 1、背景2、准备2.1、服务端必备条件&#xff08;注意&#xff09;2.2、准备语音对讲设备2.2.1、 大华摄像机2.2.1.1、 配置接入示例2.2.1.2、 配置音频通道编号 2.2.2、 海康摄像机2.…

现货黄金交易网上有用的交易技巧

在不同的现货黄金交易网上&#xff0c;经常有投资者分享交易技巧。由于在网上发文没什么限制&#xff0c;所以这些交易技巧都是泥沙俱下&#xff0c;质量良莠不齐。不过也有一些是有用的&#xff0c;下面我们就来介绍一下现货黄金交易网上那些有用的交易技巧。 培养防守意识。什…

swiftUI中的可变属性和封装

swiftUI的可变属性 关于swift中的属性&#xff0c;声明常量使用let &#xff0c; 声明变量使用var 如果需要在content中更改视图变化那么就需要在 var前面加上state 。 通过挂载到state列表 &#xff0c;从而让xcode找到对应的改变的值 例子&#xff1a; import SwiftUIstruc…

Java后端八股------消息中间件篇

自动确认没收到&#xff0c;实现重复消费问题&#xff0c;可以用业务唯一标识来确定业务是否被消费。 TTL也就是超时时间&#xff0c;一般去dead letter的时间为min(消息的ttl,queue的ttl)。 acksall设置是最安全的&#xff0c;但是效率太低了&#xff0c;实际的生…

App自动化测试环境搭建(详细版)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 只做记录和注意点&#xff0c;详细内容不做解释 环境&#xff1a;winappium夜神模拟器python 需…

企业电子招投标系统源码-从源码到实践:深入了解鸿鹄电子招投标系统与电子招投标

在数字化采购领域&#xff0c;企业需要一个高效、透明和规范的管理系统。通过采用Spring Cloud、Spring Boot2、Mybatis等先进技术&#xff0c;我们打造了全过程数字化采购管理平台。该平台具备内外协同的能力&#xff0c;通过待办消息、招标公告、中标公告和信息发布等功能模块…

echarts绘制雷达图

<template><div><div>【云端报警风险】</div><div ref"target" class"w-full h-full" stylewidth&#xff1a;200px;height:300px></div></div> </template><script setup> import { ref, onMounte…

11 | 怎么给字符串字段加索引?

现在&#xff0c;几乎所有的系统都支持邮箱登录&#xff0c;如何在邮箱这样的字段上建立合理的索引&#xff0c;是我们今天要讨论的问题。 假设&#xff0c;你现在维护一个支持邮箱登录的系统&#xff0c;用户表是这么定义的&#xff1a; mysql> create table SUser( ID bi…

安科瑞温湿度控制器怎么安装?

WH-M 温湿度模块主要用于中高压开关柜、端子箱、环网柜、箱变等设备内部温度和湿度的检测。该模块 采用专用外壳&#xff0c;通风效果好&#xff0c;外观精致&#xff0c;既能有效保护内部元件&#xff0c;提高使用寿命&#xff0c;又方便安装、接线。 接线方式

数据结构奇妙旅程之二叉平衡树进阶---AVL树

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

3588板子部署yoloV5

一 &#xff1a;准备 ubuntu linux X86_64系统 a.安装anaconda b.创建虚拟环境 python3.8 二&#xff1a; 下载rknn-toolkit2 传送门 unzip 解压文件夹 三&#xff1a;pt转onnx模型 四&#xff1a;onnx转rknn模型 a:cd到rknn-toolkit2-master/rknn-toolkit2/packag…

使用Java的等待/通知机制实现一个简单的阻塞队列

Java的等待/通知机制 Java的等待通知机制是多线程间进行通信的一种方式。 有三个重要的方法&#xff1a;wait()&#xff0c;notify() 和以及notifyAll() wait()&#xff1a;该方法用于让当前线程&#xff08;即调用该方法的线程&#xff09;进入等待状态并且释放掉该对象上的…

初级爬虫实战——伯克利新闻

文章目录 发现宝藏一、 目标二、简单分析网页1. 寻找所有新闻2. 分析模块、版面和文章 三、爬取新闻1. 爬取模块2. 爬取版面3. 爬取文章 四、完整代码五、效果展示 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不…