C语言练习题(13)如果 x=2014 ,下面函数的返回值是( )A: 20 B: 21 C: 23 D 25(非常详细的讲解)

2023-10-29

1:如果 x=2014 ,下面函数的返回值是( )

int fun(unsigned int x)
{
int n = 0;
while(x + 1)
{
n++;
x = x | (x + 1);
} 
return n;
}

A: 20 B: 21 C: 23 D 25

解析 C

2014对应的二进制为:00000000 0000000 00000111 11011110
2015对应的二进制为:00000000 0000000 00000111 11011111
2014|2015为: 00000000 0000000 00000111 11011111 此二进制为2015
2016对应的二进制为:00000000 0000000 00000111 11100000
2015|2016为: 00000000 0000000 00000111 11111111 此二进制为2047
2048对应的二进制为:00000000 0000000 00001000 00000000
2047|2048为: 00000000 0000000 00001111 11111111 此二进制为4095
4096对应的二进制为:00000000 0000000 00010000 00000000
4095|4096为: 00000000 0000000 00011111 11111111

通过观察可知,每循环一次0的数量减一 ,直到溢出 所以2014二进制中一共有23个0则返回值为23

2:下列语句定义 x 为指向 int 类型变量 a 的指针,其中哪一个是正确的( )

A: int a , *x = a; B: int a , *x = &a; C: int *x = &a , a; D: int a , x = a;

解析 B

int 变量名,指针变量名=&变量名;
int a,x=&a;中a这个变量名必须在指针变量之前,且由于优先级与=的级别最低且由由向左 所以理解为
(指针变量名=&变量名)

3:下面有关空指针和未初始化指针,说法错误的是( )

A: 对0x0这个地址取值是非法的
B: 空指针可以确保不指向任何对象或函数; 而未初始化指针则可能指向任何地方
C: 空指针与任何对象或函数的指针值都不相等
D: malloc在其内存分配失败时返回的是一个未初始化的指针


解析 D

malloc申请内存空间失败的时候,人家返回的值为NULL,而不是任意的。
有关malloc和calloc函数的详细解释,可以看我之前写的博客哦。

另外,空指针与野指针的区别,空指针也就是通常指向为NULL的指针,野指针就是指向一块未知的内存区域,也有可能定义了一个指针没有初始化,由于内存空间中的值在未赋值之前是随机数,所以也有可能诞生野指针。

4:若有定义 int a[8]; ,则以下表达式中不能代表数组元素 a[1] 的地址的是( )

A: &a[0]+1 B: &a[1] C: &a[0]++ D: a+1

解析 C

&a[0]++;是错误语句,编译都不会过。因为++是后++,在执行该语句时是不计算的,所以a[0]++是个表达式而不是值,显然用&取一个表达式的地址是非法操作!

如果是&++a[0];则是正确的,因为前++在执行&时已经计算过了:就是先给a[0]+1,然后再取a[0]的地址。

5:以下选项中,对基本类型相同的两个指针变量不能进行运算的运算符是( )

A: + B: - C: = D: ==

解析 A

因为两个地址相加无意义也可能越界,所以规定不允许指针相加。

6:有一种兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子。

例子:假设一只兔子第3个月出生,那么它第5个月开始会每个月生一只兔子。
一月的时候有一只兔子,假如兔子都不死,问第n个月的兔子总数为多少?
数据范围:输入满足 :1≤n≤31
输入描述:输入一个int型整数表示第n个月
输出描述:输出对应的兔子总数
示例1
输入:3
输出:2

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

void caculate(int month)
{
	if (month < 3)
		printf("1");
	int start_rabbit, birth_first_rabbit, all_rabbit;
	start_rabbit = birth_first_rabbit = 1;
	for (int i = 3; i < month + 1; i++)//从第三个月开始
	{
		all_rabbit = start_rabbit + birth_first_rabbit;
		start_rabbit = birth_first_rabbit;
		birth_first_rabbit = all_rabbit;
	}
    printf("%d",all_rabbit);
}

int main()
{
	int month;
	scanf("%d", &month);
	caculate(month);
	return 0;
}

解析1

①首先,程序通过scanf函数从用户输入中获取一个整数值,表示要计算兔子数量的月份。

②然后,程序定义了一个calculate函数,它接受一个整数参数month,表示要计算的月份。

③函数内部首先判断month是否小于3,如果是则直接输出数字1,因为在前两个月兔子的数量都是1。

④接下来,函数定义了三个整数变量start_rabbit、birth_first_rabbit和all_rabbit,它们的初始值都为1。

⑤然后,使用一个循环,从第三个月开始逐个计算每个月的兔子数量。循环中,首先将上个月的兔子数量和前两个月的兔子数量相加,得到当前月的兔子数量all_rabbit。然后,将start_rabbit的值更新为上个月的兔子数量,将birth_first_rabbit的值更新为前两个月的兔子数量,以备下一次循环使用。

⑥最后,输出最终计算得到的兔子数量all_rabbit。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int fib(int n)
{
    if (n < 3)
    {
        return 1;
    }
    else
    {
        return fib(n - 1) + fib(n - 2);
    }
}
int main()
{
    int n;
    scanf("%d", &n);
    printf("%d", fib(n));
    return 0;
}

解析2
这个方法或许没有那么直观,我们尝试算几组数据,第一个月1只,第二个月1只,第三个月2只,第四个月3只,第五个月5只,第六个月8只,这显然是一个斐波那契数列。

这个程序实现了一个计算斐波那契数列的函数fib()和一个主函数main()。

函数fib()用递归的方式计算斐波那契数列的第n个数字。当n小于3时,返回1,否则递归地调用fib()函数计算n-1和n-2的斐波那契数列数字,并将它们相加返回。

主函数main()首先从用户输入中读取一个整数n,然后调用fib()函数计算斐波那契数列的第n个数字,并将结果打印出来。

7:数列的定义如下:数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。

输入描述:输入数据有多组,每组占一行,由两个整数n(n<10000)和m(m<1000)组成,n和m的含义如前所述。
输出描述:对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。
示例1
输入: 输出:
81 4 ……94.73
2 2 ……3.41

#include <stdio.h>
#include <math.h>
int main() 
{
  int n;
  int m;
 
     while(scanf("%d %d",&n,&m)!=EOF)
     {
        double sum=0;
        double first_number=n;
        for (int i=0;i<m;i++)
        {
            sum=sum+first_number;
            first_number=sqrt(first_number);
        }
        printf("%.2lf\n",sum);
     }
     return 0;
}

解析
sqrt是求平方根的函数,其头文件为<math,h>

①这段C代码实现了一个循环,接受输入的两个整数n和m,在每次循环中计算一个部分数列的和并输出。

②在每次循环中,首先定义一个变量sum来保存部分数列的和,初始化为0。然后定义一个变量first_number来保存每个数列的第一个数,初始化为n。

③接下来,通过一个for循环,循环m次来计算部分数列的和。在每次循环中,先将first_number加到sum中,然后通过sqrt()函数计算first_number的平方根,并将结果赋给first_number。

④ 循环结束后,使用printf()函数输出计算得到的部分数列的和,保留两位小数。

⑤整个过程会一直重复,直到接收到的输入中没有更多的整数对为止(即输入结束)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言练习题(13)如果 x=2014 ,下面函数的返回值是( )A: 20 B: 21 C: 23 D 25(非常详细的讲解) 的相关文章

  • 如何将未知列数的 ResultSet 映射到 List 并将其显示在 HTML 表中?

    我使用 Netbeans GlassFish 和 JavaDB 创建了一个数据库应用程序 现在我的控制器 Servlet 代码执行一些动态 SQL 查询并返回结果集 或者我可以更改 toString 现在 如何以表格格式显示返回的结果集 我
  • 如果列名不同,则一对多休眠连接

    我有三个具有以下结构的表 合同 gt Contract id 主要 customer company id Vendor company id 公司 gt Company id 主要 创建日期 创建者 Company Timeline gt
  • 单元测试组合服务方法

    我正在为一个类编写 junit 单元测试 该类使用以下方法实现公开的接口 public Set
  • 项目缺少所需的注释处理库

    我的 Eclipse IDE 突然在问题视图中显示 xxxx 项目缺少所需的注释处理库 xxxx M2 REPO 中的一些旧 jar 我用谷歌搜索 没有找到任何答案 为什么我的项目使用旧的 jar 以及错误来自哪里 To remove th
  • 迁移到Java 9或更高版本时是否需要切换到模块?

    我们目前正在从 Java 8 迁移到 Java 11 但是 升级我们的服务并没有我们预期的那么痛苦 我们基本上只需要更改我们的版本号build gradle文件和服务都顺利启动并运行 我们升级了库以及使用这些库的 微 服务 到目前为止没有问
  • 尝试获取屏幕上绘制的每个随机圆圈的 x、y 坐标

    您好 我正在制作一款游戏 该游戏将在屏幕上创建随机圆圈 随机创建的圆圈的值为红色或绿色 我的问题是 我希望不仅能够确定用户何时单击其中一个圆圈 而且还能够确定他们最终单击的圆圈 红色或绿色 下面是我的代码 我的主要问题是试图找到将要绘制的圆
  • 使用 JSch 分别为各个提示提供输入

    问题是 SSH 连接需要在常规登录后提供另一个用户 ID 和密码信息 我正在使用 JSch 连接到远程服务器 它接受以下形式的输入InputStream 和这个InputStream只能通过一次 由于会话是交互式的 这会导致问题 我尝试将输
  • Kafka Java Consumer 已关闭

    我刚刚开始使用卡夫卡 我面临着消费者的一个小问题 我用Java写了一个消费者 我收到此异常 IllegalStateException 此消费者已关闭 我在以下行中遇到异常 ConsumerRecords
  • 使用 JAX-WS 的 WebLogic 中没有模式导入的单个 WSDL

    如何使用 JAX WS 配置由 WebLogic 10 3 6 生成的 Web 服务 以将对象架构包含在单个 WSDL 文件声明 而不是导入声明 中 示例代码 界面 import javax ejb Local Local public i
  • 关于Java泛型的一些问题

    假设我有以下接口和实现类 interface Foo
  • Cucumber DataTable 错误 - io.cucumber.datatable.UndefinedDataTableTypeException:无法将 DataTable 转换为 cucumber.api.DataTable

    尝试使用 cucumber selenium java intelliJ 运行场景 但在其中一个步骤中出现有关 DataTable 的错误 在我开始使用测试运行程序并更改周围的一些内容之前 数据表工作正常并正确转换该步骤的参数 但我就是无法
  • 查找数组中的组合

    我在java中有一个像这样的二维数组 transmission communication tv television approach memorycode methodact 我需要获得所有组合 例如 transmission appr
  • 从 Android 访问云存储

    我一直无法找到任何有关如何从 Android 应用程序使用云存储的具体文档 我确实遇到过这个客户端库 https cloud google com storage docs reference libraries然而 Google Clou
  • java swing:向 JTree 项目添加自定义图形按钮

    我想在 JTree 中的项目右侧添加一个带有小图标的附加按钮 这可以做到吗 如果是这样 怎么办 thanks Clamp 你在这方面成功了吗 我想做同样的事情 但很难让 JButton 响应用户 设置渲染器以显示按钮的过程很顺利 但所有鼠标
  • JAXB 编组器无参数默认构造函数

    我想从 java 库中编组一个 java 对象 当使用 JAXB marschaller 编组 java 对象时 我遇到了一个问题 A 类没有无参数默认构造函数 我使用Java Decompiler来检查类的实现 它是这样的 public
  • 如何检查日期字符串的有效性?

    在我的项目中 我需要检查日期字符串是否计算为正确的日期对象 我决定允许 yyyy MM dd 和日期格式 年 月 日 和 年 月 日 小时 分钟 我如何检查它们是否有效 我的代码为 1980 01 01 和一些奇怪的日期 如 3837 05
  • Java 中处理异步响应的设计模式

    我读过类似问答的答案 如何在 JAVA 中创建异步 HTTP 请求 https stackoverflow com questions 3142915 how do you create an asynchronous http reque
  • JPA 将 BigDecimal 作为整数保存在数据库中

    我在数据库中有这个字段 ITEMCOST NUMERIC 13 DEFAULT 0 NOT NULL 在JAVA中 Entity中的字段定义如下 Column name ITEMCOST private BigDecimal itemCos
  • 如何使用注释处理 Hibernate 和 Spring 中的连接查询?

    我正在使用 Spring 和 Hibernate 以及 MySQL 开发应用程序 我是 Hibernate 新手 完成了基本任务 现在我需要在选择查询中应用联接以使用注释从多个表中获取数据 我已经搜索过但仍然没有任何想法 这是我的数据库表和
  • 如何使用 Jest 从 ElasticSearch 获取索引列表

    我正在尝试使用 Jest 检索索引列表 但我只得到 Stats statistics new Stats Builder build result client execute statistics 如何从结果中检索索引列表 除了统计之外

随机推荐

  • Java获取文件名、文件前缀名、文件类型(文件后缀名)

    获取文件名 方法一 split分割 String fileName E file docx String temp fileName split String fileNameNow temp temp length 1 System ou
  • STM32——SPI通信

    文章目录 SPI Serial Peripheral Interface 概述 SPI的硬件连接 SPI的特点和优势 SPI的常见应用 SPI的工作方式和时序图分析 工作模式 传输模式与时序分析 工作流程 SPI设备的寄存器结构和寄存器设置
  • c++自定义类对象的初始化_类装载器

    一 类的生命周期 类从被加载到虚拟机内存中开始 直到从内存中卸载为止 它的整个生命周期包括了 加载 验证 准备 解析 初始化 使用和卸载这7个阶段 其中 验证 准备和解析这三个部分统称为链接 linking graph LR A 加载 gt
  • RedHat linux 9.1/CentOS linux YUM在线安装用不了? 不会配置Linux的网络安装源?一分钟教你解决!!!

    一 配置本地源 1 新建cdrom目录 root kongd mkdir media cdrom 2 将本地光盘挂载至本地目录 media cdrom下 root kongd mount dev cdrom media cdrom 3 新建
  • Unable to find instance for XXXX

    当你的控制台报了这样的错误 这就是请求的后端服务没启动 联系后端启动后端就行
  • dubbo之RpcContext

    dubbo之RpcContext RpcContext 是一个 ThreadLocal 的临时状态记录器 当接收到 RPC 请求 或发起 RPC 请求时 RpcContext 的状态都会变化 比如 A 调 B B 再调 C 则 B 机器上
  • matlab 判断数组中的元素是否存在,C语言判断数组中是否包含某个元素

    在实际开发中 经常需要查询数组中的元素 例如 学校为每位同学分配了一个唯一的编号 现在有一个数组 保存了实验班所有同学的编号信息 如果有家长想知道他的孩子是否进入了实验班 只要提供孩子的编号就可以 如果编号和数组中的某个元素相等 就进入了实
  • ODTK:来自NVIDIA的旋转框物体检测工具箱

    点击上方 AI公园 关注公众号 选择加 星标 或 置顶 作者 Jonathan Howe James Skinner 编译 ronghuaiyang 导读 旋转框相比矩形框可以更好的拟合物体 同时标注起来比分割要方便的多 使用来自NVIDI
  • k8s的初始及搭建

    kubernetes k8s 1 初识k8s 1 1 k8s是什么 kubernetes 简称K8s 是用8代替8个字符 ubernete 而成的缩写 是一个开源的 由go语言开发 用于管理云平台中多个主机上的容器化的应用 Kubernet
  • ElasticSearch 搜索引擎

    简称es 是类似于mysql但是专注于搜索的一种数据库 在elastic stack中占据重要地位 倒排索引 我们的数据库都是正向索引 比如根据id查询数据 那么倒排索引是将关键字进行分词 然后将词条和id保存在一张表中 不同数据分词后有相
  • retval释疑

    为了让方法返回一个与 方法的物理HRESULT 不相关的逻辑结果 COM IDL支持retval参数属性 retval属性的含义是 相关联的物理方法参数实际上是操作的逻辑结果 在支持retval的环境中 该参数应该被映射为操作的结果 例如
  • MyCAT 通过Native for MySQL 连接TESTDB 提示:1184 (HY000): Invalid DataSource:0

    问题描述 Windows 安装MyCAT服务 启动MyCAT服务 通过Native for MySQL 连接TESTDB 提示如下错误信息 1184 HY000 Invalid DataSource 0 造成问题原因 没有给root用户授予
  • 聚类尝试-kmeans-step2聚类模型训练及结果可视化

    step1 https blog csdn net nikita zj article details 122342746https blog csdn net nikita zj article details 122342746 1 数
  • python基础知识总结

    1 python相关 发布时间比java要早 1999年应用在网站后端开发 2004年发布web框架Django 2 特点 解释性语言 交互式语言 面向对象 跨平台 3 优点 易学 易读 易维护 有广泛标准库 互动模式 可嵌入性 嵌入C或者
  • 如何解决openstack中协程切换后request_id打印不对或者不打印的问题的

    OpenStack各组件一般都对外提供REST服务 当某个API请求过来之后 由于可能会涉及多个方法和进程的处理 为了方便的跟踪这个请求和后续通过日志定位 我们需要有个唯一标示来追踪这个请求 这样就能从大量日志信息中找到和这个请求相关的日志
  • Android开发之蓝牙(一)——基于SPP协议蓝牙模块通信

    使用设备 基本概念 基本流程 本文意在介绍蓝牙开发的主要流程 学习使用蓝牙开发一个星期了 写写一个星期以来遇到的一些小问题 还有介绍下流程 开发具有基本的通信功能 本项目主要是用于与蓝牙模块的串口读写功能 下一篇文章还有Android开发之
  • Java实现记忆化搜索

    记忆化搜索 是在使用递归搜索或者类似的情况下 使用一般的递归或许需要太多的时间与内存 这时我们就可以使用记忆化搜索 其本质为在递归搜索中 如果遇到了没有搜索过的 进行搜索并在内存中记录结果 如果之前搜索过 就直接调用结果 题目描述 对于一个
  • iPhone和ipad连接【华北理工大学】校园网快捷指令教程

    该教程仅适用于华北理工大学校园网 1 下载快捷指令 https www icloud com shortcuts 557cc9bf52b9474baae949773049cca3 用浏览器打开上面的链接 如果在QQ中打开的话 下载完了之后在
  • 自动化测试碰到比较难解决的问题是什么?如果出现这些问题给出你的解决方案?

    问题 自动化测试碰到比较难解决的问题是什么 如果出现这些问题给出你的解决方案 回答 比较难以解决的问题是 1 自动化测试没有达到预期目标 既没有节约人力 也没有提高产品质量 自动化测试脚本会频繁报错 但错误原因多半是脚本问题而不是产品质量问
  • C语言练习题(13)如果 x=2014 ,下面函数的返回值是( )A: 20 B: 21 C: 23 D 25(非常详细的讲解)

    1 如果 x 2014 下面函数的返回值是 int fun unsigned int x int n 0 while x 1 n x x x 1 return n A 20 B 21 C 23 D 25 解析 C 2014对应的二进制为 0