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

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

🔥个人主页:@草莓熊Lotso

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

📖个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》

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

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


目录

选择题:

编程题:

1.图片整理

2.寻找数组的中心下标


选择题:

1、以下对C语言函数的有关描述中,正确的有【多选】( )

A: 在C语言中,一个函数一般由两个部分组成,它们是函数首部和函数体

B: 函数的实参和形参可以是相同的名字

C: 在main()中定义的变量都可以在其它被调函数中直接使用

D: 在C程序中,函数调用不能出现在表达式语句中

答案解析:

正确答案:AB

主函数中定义的局部变量只在主函数中有效,因为主函数也是一个函数,它与其他函数是平行关系,C错误;当函数有返回值时,可以出现在表达式中,D错误

2、在C语言中,以下正确的说法是( )

A: 实参和与其对应的形参各占用独立的存储单元

B: 实参和与其对应的形参共占用一个存储单元

C: 只有当实参和与其对应的形参同名时才共占用存储单元

D: 形参是虚拟的,不占用存储单元

答案解析:

正确答案:A

在调用函数的时候,真实传递给函数的是实参,函数定义部分函数名后的参数是形参。形参和实参的名字是可以相同的,在函数调用的时候,形参是实参的一份临时拷贝,分别占用不同的内存空间,所以A正确,B错误,及时形参和实参的名字相同,也是占用不同的内存空间,所以B错误;函数如果不被调用时,函数的形参是形式上存在的,但是函数在被调用的时候,形参是要分配内存空间的,所以D错误。

3、在上下文及头文件均正常的情况下,下列代码的输出是( )(注: print 已经声明过)
A: suiene B: neius C: run-time error D: suieneG

int main()
{char str[] = "Geneius";print(str);return 0;
}
print(char* s)
{if (*s){print(++s);printf("%c", *s);}
}

答案解析:

正确答案:A

代码实现了递归倒序打印字符串的功能,但是++s使得s的值发生了变化,回不到'G'的位置上,故而没有打印'G

4、对于函数 void f(int x); ,下面调用正确的是( )

A: int y=f(9); B: f(9); C: f(f(9)); D: x=f();

答案解析:
正确答案:B
函数f是没有返回值的,不能给int类型变量赋值,故A错误,同时需要一个整型参数,C中f(9)不能作为f的参数,也是错的,D 选项没有传参,也不能接收返回值也是错误的。

5、给定 fun 函数如下,那么 fun(10) 的输出结果是( )
A: 0 B: 10 C: 55 D: 3628800

int fun(int x)
{return (x==1) ? 1 : (x + fun(x-1));
}

答案解析:

正确答案:C

代码是一个递归函数,计算x+(x-1)+(x-2)+...+2+1即等差数列的和


编程题:

1.图片整理

题目链接:图片整理_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

#include <stdio.h>
#include<stdlib.h>
#include<string.h>int cmp(const void*p1,const void*p2)
{return *(char*)p1-*(char*)p2;
}
int main() {char s[1001];scanf("%s",s);qsort(s,strlen(s),sizeof(char),cmp);printf("%s",s);return 0;
}

题目解析:

  • 这道题考察的其实就是字符排序,每个 ascii 字符在内存都有一个对应的 ascii 值,通过内存中数据的存储进行排序就行,这里直接用的qsort。

2.寻找数组的中心下标

题目链接:724. 寻找数组的中心下标 - 力扣(LeetCode)

题目描述:

题目示例:

代码演示:

int pivotIndex(int* nums, int numsSize) {int total = 0;for (int i = 0; i < numsSize; ++i) {total += nums[i];}int sum = 0;for (int i = 0; i < numsSize; ++i) {if (2 * sum + nums[i] == total) {return i;}sum += nums[i];}return -1;
}

题目解析:

  • 先算数组总和 total,再遍历数组,用 sum 累加左侧元素,当 2 * sum + nums[i] == total 时,i 就是中心下标,否则返回 -1 ,通过一次遍历找中心下标,时间复杂度 O(n) ,空间复杂度 O(1) 

往期回顾:

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

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

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

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

http://www.lryc.cn/news/625425.html

相关文章:

  • web开发,在线%服装商城开发demo,基于html,css,jquery,asp.net,webform,sqlserver数据库
  • hadoop技术栈(九)Hbase替代方案
  • 20250819 强连通分量,边双总结
  • k8s运维实践:高可用Redis Cluster(三主三从)与Proxy部署方案
  • RadioIrqProcess函数详细分析与流程图
  • 【实时Linux实战系列】基于实时Linux的物联网系统设计
  • “道法术器” 思维:解析华为数字化转型
  • 企业知识管理革命:RAG系统在大型组织中的落地实践
  • 服务器如何隐藏端口才能不被扫描?
  • 08.19总结
  • 17.web api 8
  • C++ 默认参数深度解析【C++每日一学】
  • 0.开篇简介
  • 把 AI 天气预报塞进「打火机」——基于时空扩散模型的微型气象站
  • 项目管理.管理理念学习
  • 推理还是训练 || KV缓存和CoT技术
  • Orange的运维学习日记--46.Ansible进阶之LNMP部署最佳实践
  • 鱼骨图图片制作全指南:使用工具推荐 + 行业案例
  • 叉车结构设计cad+三维图+设计说明书
  • Matplotlib数据可视化实战:Matplotlib基础与实践-快速上手数据可视化
  • 主从切换是怎么保证数据一致的?从库为什么会延迟
  • Pandas数据处理与分析实战:Pandas数据处理与Matplotlib可视化入门
  • 定向IP与私有APN的区别与作用
  • Spring事务基础:你在入门时踩过的所有坑
  • JavaWeb开发笔记合集
  • AutoSarAP状态管理的状态机能否理解成C++的类?
  • 污水处理行业的 “智能革命”:边缘计算网关如何重塑传统运维模式?
  • 【计算机视觉】检测与分割详解
  • Spring框架-数据访问层和事务管理
  • OpenCV计算机视觉实战(20)——光流法运动分析