当前位置: 首页 > ops >正文

【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day13

🔥个人主页:@草莓熊Lotso

🎬作者简介:C++研发方向学习者

📖个人专栏: 《C语言》 《数据结构与算法》《C++知识分享》《编程工具入门指南》

⭐️人生格言:生活是默默的坚持,毅力是永久的享受。

前言:我们距离学习完C语言已经很久了,在数据结构学完后,博主准备通过这16天的强化训练和大家一起回顾C语言的知识,今天依旧是五道选择和两道编程题,希望大家能有所收获。


目录

选择题:

编程题:

1.统计每个月兔子的总数

2.数列的和


选择题:

1、如果 x=2014 ,下面函数的返回值是( )
A: 20 B: 21 C: 23 D 25

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

答案解析:

正确答案:C

这个作用是对整型中0的个数进行统计,x=x|(x+1);的作用是每次循环把x的二进制中从右往左数的最后一位0变成1,直道变成全1的时候x+1就溢出为全0,循环结束。2014的二进制是0000 0000 000 0000 0000 0111 1101 1110,所以结果是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

A选项的x是指针,赋值时使用a不合适,C选项在赋值时a变量还没定义,D选项中的x不是指针。

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

A: 对0x0这个地址取值是非法的

B: 空指针可以确保不指向任何对象或函数; 而未初始化指针则可能指向任何地方

C: 空指针与任何对象或函数的指针值都不相等

D: malloc在其内存分配失败时返回的是一个未初始化的指针

答案解析:

正确答案:D

malloc函数在内存分配失败时返回NULL,其余选项都正确

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

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

答案解析:

正确答案:C

D选项a计算时是首元素地址,再加1,就是a[1]的地址,AB明显对,C选项a[0]先和++结合,形成一个表达式,不能对表达式取地址,会报错

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

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

答案解析:

正确答案:A

A错误,因为两个地址相加无意义也可能越界,所以规定不允许指针相加。B选项,可以求出两个数据元素储存位置之间的相隔同数据类型的元素个数,C选项,赋值,没问题,D选项,判断两指针是否相同


编程题:

1.统计每个月兔子的总数

题目链接:统计每个月兔子的总数_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

#include <stdio.h>int rabbit(int n)
{if(n<=2)return 1;return rabbit(n-1)+rabbit(n-2);
}int main() {int m;scanf("%d",&m);int n=rabbit(m);printf("%d",n);return 0;
}

题目解析:

  • 这道题的关键在于寻找数字之间的规律,如果细心的同学会发现这其实是一个斐波那契数列。第 n 个月的兔子数量实际上就是第 n-1 个斐波那契数

2.数列的和

题目链接:数列的和_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

#include <stdio.h>
#include <math.h>int main()
{double n = 0.00;int m = 0;while (scanf("%lf %d", &n, &m)!=EOF){double sum = 0.00;//这里不能用float,只能用doublefor (int i = 0; i < m; i++)//控制m次{sum += n;n = sqrt(n);}printf("%.2lf\n", sum);}return 0;
}

题目解析:

  • 循环读取多组 n(数列首项 )和 m(项数 ),通过循环 m 次,每次累加当前 n 到 sum,再更新 n 为其平方根,最后按格式输出保留两位小数的前 m 项和 

往期回顾:

【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day9

【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day10

【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day11

【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day12

结语:本篇博客就到此结束了,C 语言的精髓在于对细节的掌控和对底层的理解,这需要持续实践。愿你带着这份训练中获得的思维与习惯,在编程路上走得更稳、更远。如果文章对你有帮助的话,欢迎评论,点赞,收藏加关注,感谢大家的支持。

http://www.xdnf.cn/news/18651.html

相关文章:

  • Python之matplotlib 基础三:绘制折线图
  • 什么是JSON-RPC 2.0,在项目中应该怎么使用
  • Jenkins+docker 微服务实现自动化部署安装和部署过程
  • More Effective C++ 条款08:理解各种不同意义的new和delete
  • (操作系统)死锁是什么 必要条件 解决方式
  • 【Task05】:向量数据库实践(第三章3、4节)
  • Fory序列化与反序列化
  • ArcGIS JSAPI 高级教程 - 创建渐变色材质的自定义几何体
  • MYSQL(DDL)
  • 算法:驱动智能社会的核心引擎
  • OpenIM应用机器人自动应答
  • Zabbix 7.0中文乱码矫正
  • AI产品经理面试宝典第75天:Agentic RAG系统优化策略面试题实战解析
  • 08-系统能力调用与权限管理
  • BERT(Bidirectional Encoder Representations from Transformers)模型详解
  • 【RAGFlow代码详解-1】概述
  • 【Android】从一个AndroidRuntime看类的加载
  • 结构化智能编程:用树形向量存储重构AI代码理解范式
  • 第16届蓝桥杯C++中高级选拔赛(STEMA)2025年4月真题
  • More Effective C++ 条款05: 谨慎定义类型转换函数
  • 【Flex SerialPort】一个基于Qt6的支持自定义按键指令的串口工具
  • Kubernetes保姆级教学
  • centos搭建gitlab服务器
  • 【贪心算法】day2
  • 邮箱创建时间打标与自动删除功能设计思路
  • 13种常见机器学习算法面试总结(含问题与优质回答)
  • MySQL视图有什么用?一文读懂虚拟表的六大核心价值
  • String的最大长度剖析
  • 港口集装箱编号识别误识率↓79%!陌讯多模态融合算法落地优化
  • docker 镜像问题(解决了)