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.hqwc.cn/news/161824.html

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

相关文章

[100天算法】-搜索旋转排序数组(day 60)

题目描述 升序排列的整数数组 nums 在预先未知的某个点上进行了旋转&#xff08;例如&#xff0c; [0,1,2,4,5,6,7] 经旋转后可能变为 [4,5,6,7,0,1,2] &#xff09;。请你在数组中搜索 target &#xff0c;如果数组中存在这个目标值&#xff0c;则返回它的索引&#xff0c;否…

Type-C接口详解

USB接口发展史 USB接口历经Type-A→Type-B→Type-C五次大的更新换代&#xff1b;目前Type-A Standard作为标准USB接口形式&#xff0c;仍然在大范围应用&#xff0c;而Micro-A以及Type-B系列已经慢慢谈出人们的视野&#xff0c;逐渐被新型的Type-C代替。 Type-C接口 24PIN Typ…

xlua源码分析(二)lua Call C#的无wrap实现

xlua源码分析&#xff08;二&#xff09;lua Call C#的无wrap实现 上一节我们主要分析了xlua中C# Call lua的实现思路&#xff0c;本节我们将根据Examples 03_UIEvent&#xff0c;分析lua Call C#的底层实现。例子场景里有一个简单的UI面板&#xff0c;面板中包含一个input fie…

注意,注意,weak_ptr有坑

class Test { public:Test(){cout << "构造函数\n";}~Test(){cout << "析构函数\n";} }; void *operator new(size_t nsize) {void *ptmp std::malloc(nsize);printf("申请内存:%d,%p\n",nsize, ptmp);return ptmp; }void operator…

Maven的总结

先要了解maven是什么&#xff1f; Maven就是一个软件&#xff0c;掌握软件安装、配置、以及基本功能&#xff08;项目构建、依赖管理&#xff09;使用就是本课程的主要目标&#xff01; 最主要的功能是为了方便Java项目jar包的导入 认识Maven maven的GVAP属性 Maven 中的 GAVP…

ssm整合原理与实战

文章目录 前言一、SSM整合原理1.1 什么是SSM整合1.2 SSM整合核心问题1.2.1 第一问&#xff1a;SSM整合需要几个IoC容器&#xff1f;1.2.2 第二问&#xff1a;每个IoC容器对应哪些类型组件&#xff1f;1.2.3 第三问&#xff1a;IoC容器之间关系和调用方向&#xff1f;1.2.4第四问…

详细讲解如何求解「内向基环森林」问题

题目描述 这是 LeetCode 上的 「2876. 有向图访问计数」 &#xff0c;难度为 「困难」。 Tag : 「基环森林」、「内向基环树」、「拓扑排序」、「图」、「BFS」 现有一个有向图&#xff0c;其中包含 n 个节点&#xff0c;节点编号从 0 到 n - 1。此外&#xff0c;该图还包含了 …

JavaEE-博客系统3(功能设计)

本部分内容为&#xff1a;实现登录功能&#xff1b;强制要求用户登录&#xff1b;实现显示用户信息&#xff1b;退出登录&#xff1b;发布博客 该部分的后端代码如下&#xff1a; Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws Ser…

基于鹰栖息算法的无人机航迹规划-附代码

基于鹰栖息算法的无人机航迹规划 文章目录 基于鹰栖息算法的无人机航迹规划1.鹰栖息搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用鹰栖息算法来优化无人机航迹规划。 1.鹰栖息…

【大数据】Apache NiFi 数据同步流程实践

Apache NiFi 数据同步流程实践 1.环境2.Apache NIFI 部署2.1 获取安装包2.2 部署 Apache NIFI 3.NIFI 在手&#xff0c;跟我走&#xff01;3.1 准备表结构和数据3.2 新建一个 Process Group3.3 新建一个 GenerateTableFetch 组件3.4 配置 GenerateTableFetch 组件3.5 配置 DBCP…

Codeforces Round 882 (Div. 2)

目录 A. The Man who became a God 题目分析: B. Hamon Odyssey 题目分析: C. Vampiric Powers, anyone? 题目分析: A. The Man who became a God 题目分析: n个人分成k组&#xff0c;每一组的力量都是这样的&#xff0c;那么如果分成k组那么就会有k-1个力量不被统计…

前端框架Vue学习 ——(五)前端工程化Vue-cli脚手架

文章目录 Vue-cliVue项目-创建Vue项目-目录结构Vue项目-启动Vue项目-配置端口Vue项目开发流程 Vue-cli 介绍&#xff1a;Vue-cli 是 Vue 官方提供的一个脚手架&#xff0c;用于快速生成一个 Vue 的项目模版 安装 NodeJS安装 Vue-cli npm install -g vue/cliVue项目-创建 图…