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

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

🔥个人主页:@草莓熊Lotso

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

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

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

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


目录

选择题:

编程题:

1.珠玑妙算

2.两数之和


选择题:

1、有以下函数,该函数的功能是( )

A.比较两个字符的大小 B.计算s所指字符串占用内存字节的个数

C.计算s所指字符串的长度 D.将s所指字符串复制到字符串t中

int fun(char* s)
{char* t = s;while (*t++);return(t - s);
}

答案解析:

正确答案:B

循环在*t为0时停止,同时t++,t最后会停在字符串结束的'\0'之后的一个位置,t作为尾部指针减去头部指针就是整个字符串占用内存的字节数,包含\0在内;而c答案字符串长度不包括最后的\0

2.若有:float a[3]={1.5,2.5,3.5},*pa=a;*(pa++)*=3; ”,则 *pa 的值是( )

A.1.5 B.2.5 C.3.5 D.4.5

答案解析:

正确答案:B

在*pa=a中指针pa指向a[0];pa++返回值仍是操作之前的值;*(pa++)取pa指向的地址的值;*(pa++)*=3将该值变为原来的3倍,也就是数组a的第一个值为4.5;由于pa++之后pa指针移动了sizeof(float)个字节,所以pa指向a[1],所以值为2.5

3、以下程序运行后的输出结果是( )

A.运行后报错 B.6 6 C.6 11 D.5 10

答案解析:

正确答案:A

指针q初始化为NULL,接着又解引用指针q,是错误的,对NULL指针是不能解引用的

4.设有定义:char *p[]={"Shanghai","Beijing","Honkong"}; 则结果为j字符的表达式是()

A.*p[1] +3 B.*(p[1] +3) C.*(p[3] +1) D.p[3][1]

答案解析:

正确答案:B

B选项,p是个char*类型的数组,p[1]拿到字符串"beijing"的首地址,再加3便是'j'的地址,解地址拿到'j'

5、以下叙述中正确的是( )

A: 即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以不同

B: 如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息

C: 设变量p是一个指针变量,则语句p=0;是非法的,应该使用p=NULL;

D: 指针变量之间不能用关系运算符进行比较

答案解析:

正确答案:B

A 选项描述不正确,不同类型指针一般不可以直接赋值;C选项中,p=NULL;和p=0;是等价的;D选项中,指向同一数组的两指针变量进行关系运算可表示它们所指数组元素之间的位置关系。B选项正确


编程题:

1.珠玑妙算

题目链接:面试题 16.15. 珠玑妙算 - 力扣(LeetCode)

题目描述:

题目示例:

代码演示:

int* masterMind(char* solution, char* guess, int* returnSize)
{int* answer = (int*)malloc(sizeof(int) * 2);for (int i = 0; i < 2; i++){answer[i] = 0;}*returnSize = 2;//猜中for (int i = 0; i < 4; i++){if (solution[i] == guess[i]){answer[0]++;guess[i]--;solution[i] += 1;}}//伪猜中for (int i = 0; i < 4; i++){for (int j = 0; j < 4; j++){if (solution[i] == guess[j]){solution[i] += 1;guess[j]--;answer[1]++;}}}return answer;
}

题目解析:

  • 先遍历统计 “猜中”(位置和颜色都对)次数,同时标记已匹配位置;再遍历统计 “伪猜中”(颜色对但位置错)次数,最终返回包含这两个次数的结果数组

2.两数之和

题目链接:两数之和_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param numbers int整型一维数组 * @param numbersLen int numbers数组长度* @param target int整型 * @return int整型一维数组* @return int* returnSize 返回数组行数*/
int* twoSum(int* numbers, int numbersLen, int target, int* returnSize ) {// write code hereint* ptr = (int*)calloc(2, sizeof(int));for (int i = 0; i < numbersLen; i++){// write code herefor (int j = i + 1; j < numbersLen; j++){int sum = numbers[i] + numbers[j];if (sum == target){ptr[0] = i + 1;ptr[1] = j + 1;*returnSize = 2;return ptr;}}}*returnSize = 0;return 0;
}

题目解析:

  • 用双重循环暴力枚举,遍历数组找两数和为 target 的组合,返回下标(从 1 开始 ),但时间复杂度 O(n2) ,不满足题目 O(nlogn) 要求 ,若要符合复杂度,可先排序 + 双指针或用哈希表优化 

往期回顾:

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

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

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

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

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

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

相关文章:

  • 蓝桥杯算法之基础知识(3)——Python的idle的快捷键设置(idle改键)
  • OpenCV实战1.信用卡数字识别
  • 极简风格PDF格式转换解决方案
  • 人工智能安全地图:将人工智能漏洞与现实世界的影响联系起来
  • Linux 系统核心调优:CPU、磁盘 I/O、网络与内核参数实战
  • Java全栈开发面试实录:从基础到实战的深度探索
  • 【AI算力平台】算力高效调度策略——GPU调度
  • Rust 登堂 之 函数式编程(三)
  • vagrant怎么在宿主机管理虚拟机镜像box(先搁置)
  • PyTorch生成式人工智能——PatchGAN详解与实现
  • LeetCode 438. 找到字符串中所有的字母异位词
  • 功能强大的PDF工具箱-- PDF补丁丁,v1.1.0.4657新版本,免费无广告,开箱即用版~
  • flutter专栏--dart基础知识
  • Android系统学习2——Android.Utils.Log模块讨论
  • [Maven 基础课程]Maven 是什么
  • Java微服务AI集成指南:LangChain4j vs SpringAI
  • imx6ull-驱动开发篇43——I.MX6U 的 I2C 驱动分析
  • 软件开发技术栈
  • 集成电路学习:什么是ResNet深度残差网络
  • LeetCode 2140. 解决智力问题
  • JavaScript常用的算法详解
  • 8.26网络编程——Modbus TCP
  • 【跨国数仓迁移最佳实践7】基于MaxCompute多租的大数据平台架构
  • 发力低空经济领域,移动云为前沿产业加速崛起注入云端动能
  • Tomcat下载历史版本
  • 前沿技术趋势与应用:探索数字世界的下一个十年
  • 【第三章】软件测试缺陷管理:从判断到回归的全流程实践指南​
  • 支持向量机学习
  • 33.ansible 比较重要的配置文件
  • 可口可乐考虑出售Costa咖世家!加上星巴克中国、Peet’s皮爷咖啡,三大国际咖啡品牌“纷纷卖身”!咖啡行业格局彻底改写!