C语言----每日五道选择题Day1

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: 没有缺陷

答案及解析

答案:BC

A选项错误,因为我们i值的更新在内部


B选项正确,一般float型只能精确到小数后六位(即1e-6),所以我们应该将float型数据的绝对值与1e-6比较,来判断是否为零


        float的精度误差在1e-6;double精度误差在1e-15;所以要判断一个float型数:if(fabs(f)<1e-6);要判断一个double型数:if(fabs(f)<1e-15);若满足,则为零。

C选项正确,我们的数组越界了。


D选项错误,代码有缺陷。

第二题

2、请指出以下程序的错误( )【多选】

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

A: 1 

B: 2

C: 3

D: 4

答案及解析

答案:AC

第1处:两种情况之一成立都是要返回的,应该用或,此处用的是与 所以错误。

第2处:在语句GetMemory(&str,80);中传入str的地址,在语句char*str=NULL;中str初始化为空指针,但是str指针变量也有地址,所以参数char**p里面的p保存的是指针变量str的地址,所以调用GetMemory函数之后,动态开辟的空间的地址存放在了str中,在函数返回之后没有释放内存,但是这不会导致程序错误,只会导致内存泄漏。

第3处:用&str是错的,应该直接用str,是刚申请下来的空间首地址,可以用来接收字符串的copy。

第4处:printf可以直接打印字符串;

第三题

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

答案及解析

答案AC

对于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、下面这个程序执行后会有什么错误或者效果( )【多选】

#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: 内存泄露

答案及解析

答案:AB

数组下标越界:数组大小255,但是当a[255]就是256个元素,导致越界了。

死循环:这个是因为无符号字符型的变量大小在0-255之间,所以说i永远不可能大于255的,是个死循环。

内存泄漏:创建的临时变量,在栈中会由系统自动释放,所以是不存在内存泄漏的问题。

栈溢出:属于缓冲区溢出的一种。栈溢出是由于C语言系列没有内置检查机制来确保复制到

缓冲区的数据不得大于缓冲区的大小,因此当这个数据足够大的时候,将会溢出缓冲区的范围

第五题

5、请问下列程序的输出是多少( )

#include<stdio.h>
int main()
{unsigned char i = 7;int j = 0;for(;i > 0;i -= 3){++j;}printf("%d\n", j);return 0;
}

A: 2 

B: 死循环 

C: 173 

D: 172

答案及解析

答案:C

本题就是找规律,计算什么时候能遇到0

unsigned char 8位数据位,范围在0-255,所以-2时,变成254;同理-1时,变成255;最后减到0时,不满足循环条件,for停止。刚好173次。

 7 4 1 ==> 共(7-1)/3+1=3次(1-3=-2,即254,继续循环)

254 251 ... 5 2 ==> 共(254-2)/3+1=85次(2-3=-1,即255,继续循环)

255 252 ... 6 3 ==> 共(255-5)/3+1=85次(3-3=0,退出循环) 所以总共173次

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

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

相关文章

[MICROSAR Adaptive] --- autosar官方文档阅读建议

目前互联网上没有太多的 Adaptive AUTOSAR 的学习资料,官方文档是一个很不错的途径。看过官方文档才发现,目前很多关于 Adaptive AUTOSAR 的文章都是官方文档的简化翻译,不如直接看官方文档更全面深入。 1 Adaptive AUTOSAR 文档官方下载地址 https://www.autosar.org/sta…

微信小程序:实现多个按钮提交表单

效果 核心步骤 通过data-type给不同按钮进行设置&#xff0c;便于很好的区分不同按钮执行不同功能 data-type"" 完整代码 wxml <form action"" bindsubmit"formSubmit"><button style"margin-bottom:5%" data-type"pa…

SpringBoot 多组 Kafka 配置

SpringBoot 多组 Kafka 配置 单组 Kafka 配置 时隔多日&#xff0c;冒个泡吧。 场景 是 我在日常的开发过程中需要监听 kafka 的消息进行回调处理&#xff0c;但是呢&#xff0c;不同的三方服务他们用了不同的 kafka 集群&#xff0c;那么默认的 Spring 自动读取的 kafka 配…

[黑马程序员SpringBoot2]——运维实用篇

目录&#xff1a; 工程打包与运行打包插件Boot工程快速启动&#xff08;Linux版本&#xff09;临时属性配置文件4级分类自定义配置文件多环境开发(yaml版)多环境开发多文件版&#xff08;yaml版&#xff09;多环境开发多文件版&#xff08;properties版&#xff09;多环境分组…

vue如何实现视频全屏切换

最近项目开发中遇到一个视频窗口全屏切换功能&#xff0c;为此在这里做个记录。 具体的实现思路&#xff1a; <template><div class"content-box"><div class"container"><div id"screen" class"screen"><…

难题来了:分库分表后,查询太慢了,如何优化?

说在前面&#xff1a; 尼恩社群中&#xff0c;很多小伙伴反馈&#xff0c; Sharding-JDBC 分页查询的速度超级慢&#xff0c; 怎么处理&#xff1f; 反馈这个问题的小伙伴&#xff0c;很多很多。 而且这个问题&#xff0c;也是面试的核心难题。前段时间&#xff0c;有小伙伴…

MySQL数据库干货_13—— MySQL查询数据

MySQL查询数据 SELECT基本查询 SELECT语句的功能 SELECT 语句从数据库中返回信息。使用一个 SELECT 语句&#xff0c;可以做下面的事&#xff1a; 列选择&#xff1a;能够使用 SELECT 语句的列选择功能选择表中的列&#xff0c;这些列是想 要用查询返回的。当查询时&#xf…

vue-render函数的三个参数

第一个参数(必须) - {String | Object | Function} Vue.component(elem, {render: function(createElement) {return createElement(div);//一个HTML标签字符/*return createElement({template: <div></div>//组件选项对象});*//*var func function() {return {t…

使用electron ipcRenderer接收通信消息多次触发

使用electron ipcRenderer接收通信消息多次触发 在使用electron ipcRenderer.on接收ipcRenderer.send的返回值时&#xff0c;ipcRenderer.send发送一次信息&#xff0c; ipcRenderer.on会打印多个日志&#xff0c; renderer.once(get-file-path, (event: any, paths: any) &g…

商用车自动驾驶进入「拐点」时刻

对于自动驾驶的商业化落地来说&#xff0c;这个「性感」的赛道一直备受争议。在过去几年&#xff0c;包括港口、矿山等在内的封闭场景进入商业订单的收获期&#xff1b;但类似干线物流这样的半开放式场景&#xff0c;却喜忧参半。 今年初&#xff0c;作为全球自动驾驶领域的技…

利用MySQL玩转数据分析之基础篇

知识无底&#xff0c;学海无涯&#xff0c;到今天进入MySQL的学习4天了&#xff0c;知识点虽然简单&#xff0c;但是比较多&#xff0c;所以写一篇博客将MySQL的基础写出来&#xff0c;方便自己以后查找&#xff0c;还有就是分享给大家。 1、SQL简述 1&#xff09;SQL的概述 S…

windows 用vs创建cmake工程并编译opencv应用项目生成exe流程简述

目录 前言一、安装opencv&#xff08;1&#xff09;下载&#xff08;2&#xff09;双击安装&#xff08;3&#xff09;环境变量和system文件夹设置 二、打开vs创建项目三、编辑cpp&#xff0c;.h&#xff0c;cmakelist.txt文件&#xff08;1&#xff09;h文件&#xff08;2&…

【Python从入门到进阶】41、有关requests代理的使用

接上篇《40、requests的基本使用》 上一篇我们介绍了requests库的基本使用&#xff0c;本篇我们来学习requests的代理。 一、引言 在网络爬虫和数据抓取的过程中&#xff0c;我们经常需要发送HTTP请求来获取网页内容或与远程服务器进行通信。然而&#xff0c;在某些情况下&…

生成Linux系统下的一些文件

生成Linux系统下的一些文件 文章目录 生成Linux系统下的一些文件1. Initrd1.1 dracut命令1.2 mkinitramfs命令 2. GRUB2.1 Grub2.2 grub.cfg2.3 grub.efi 3. fstab3.1 自动更新3.2 手动更新 4. 生成用户 1. Initrd 通常, lib/modules/下的文件夹名称和内核的版本名是一致的, 所…

通过在Z平面放置零极点的来设计数字滤波器

文章来源地址&#xff1a;https://www.yii666.com/blog/393376.html 通过在Z平面放置零极点的来设计数字滤波器 要求&#xff1a;设计一款高通滤波器&#xff0c;用在音频信号处理过程中&#xff0c;滤掉100Hz以下的信号。 实现方法&#xff1a;通过在Z平面放置零极点的来设…

数据结构与算法【02】—线性表

CSDN系列专栏&#xff1a;数据结构与算法专栏 针对以前写的数据结构与算法系列重写(针对文字描述、图片、错误修复)&#xff0c;改动会比较大&#xff0c;一直到更新完为止 前言 通过前面数据结构与算法基础知识我们知道了数据结构的一些概念和重要性&#xff0c;那么本章总结…

华为政企光传输网络产品集

产品类型产品型号产品说明 maintainProductEA5800-X15 典型配置 上行160G 下行64口GPON 16口XGS PONEA5800系列多业务接入设备定位为面向NG-PON的下一代OLT&#xff0c;基于分布式架构&#xff0c;运用虚拟接入技术&#xff0c;为用户提供宽带、无线、视频回传等多业务统一承…

15、Nuxt.js代理转发解决跨域问题

nuxt.config.js export default {...// Modules: https://go.nuxtjs.dev/config-modulesmodules: ["nuxtjs/axios"],axios: {proxy: true, // 开启代理转发prefix: "/api"},// 代理转发proxy: {/api: {target: "https://mock.mengxuegu.com/mock/654…

【UE 材质】简单的闪闪发光材质

效果 节点 参考视频&#xff1a; https://www.bilibili.com/video/BV1uK411y737/?vd_source36a3e35639c44bb339f59760641390a8

MySQL(8):聚合函数

聚合函数介绍 聚合函数&#xff1a; 对一组数据进行汇总的函数&#xff0c;输入的是一组数据的集合&#xff0c;输出的是单个值。 聚合函数类型&#xff1a;AVG(),SUM(),MAX(),MIN(),COUNT() AVG / SUM 只适用于数值类型的字段&#xff08;或变量&#xff09; SELECT AVG(…