C语言-函数(数组传值)
练习封装函数找出数组内能被3整除的数、输出数组内的元素#includestdio.h void inputarray(int *a,int len) { for(int i 0;i len ; i) { scanf(%d,a[i]); } } void outputarray(int *a,int len) { int i ; for(i 0;ilen;i) { printf(%d ,a[i]); } putchar(\n); } int prime(int *a,int *b,int len_1,int len_2) { int j 0; for(int i0;ilen_1;i) { if(a[i]%30 jlen_2) { b[j] a[i]; j; } } return j; } int main(int argc, const char *argv[]) { int a[10],b[10],len_b 0; inputarray(a,10); puts(---------------); outputarray(a,10); len_b prime(a,b,10,10); puts(----------------); outputarray(b,len_b); return 0; }此练习首先封装函数进行了数据输入按顺序存放到数组中还封装了数组输出函数可以按序输出数组中的每个元素最后封装了寻找数组中可以被3整除的数的函数在主函数中依次调用首先调用数组输入函数由键盘输入数组数据随后调用查找被3整除的函数找到能被3整除的数据后使用打印函数输出能被3整除的所有数据。练习封装函数实现数组逆序并调用之前的函数输入输出。数组逆序主要就是交换首尾的数据使用一个中间变量接收数据由两头向中间靠拢。一次交换两个数据因此只需要交换n-1次就可以完成数据逆序n为数组内元素的总数。逆序完成后调用之前封装好的输出函数打印效果没问题。函数封装使用字符型一维数组传参数注意:字符型一维数组做函数参数形参 --- 只需要一个数组形式实参 --- 给存放字符串的数组名不需要数组长度原因: 字符串自带结束标志练习封装函数实现字符型数组打印使用while循环判断字符型数组内的元素是否是字符串的结束标志位\0如果为结束标识符则结束打印。在while循环内调用putchar输出字符型数组内的每一个元素循环条件i自增依次打印数组内的每一个元素。练习封装函数实现字符串拼接和比较函数。字符串拼接函数首先需要找到dest的结束标志位然后从结束标志位‘\0’的位置开始赋值src中的每一个字符最后再加入字符串的结束标志位形成一个字符串。字符串数组比较函数字符串比较主要是按位一个一个比较单个字符的ASCII码的的大小因此需要传入两个字符串的地址如两个字符串的每个字符都一样则继续循环直到出现字符不一样或者出现一个字符串已经到了字符串结束位置‘\0’则结束比较如果是由字符串结束符跳出的循环则另一个字符串较大。最后输出的是当前位置的字符串两个字符的ASCII码的差值如s1的字符大于s2则一般为正数如果s1的字符小于s2则为负数如果相等ASCII码值相同返回值就为0二维数组做函数参数整型二维数组整型二维数组作为函数参数 形参 ---数组形式 和 行数 实参 ---数组名 和 行数 void outputArray(int a[3][4],int row); // void outputArray(int[4] a[],int len); outputArray(a,3);C 语言中数组做函数参数都会退化为指针二维数组本质是数组的数组int a[M][N]等价于「M 个长度为 N 的 int 一维数组」传递时只能退化为指向长度为 N 的一维数组的指针不能直接退化为二级指针int**。// 第二维必须指定大小第一维可以空 void func(int arr[][5], int row) { arr[i][j] 正常访问 } // 调用int a[3][5]; func(a,3);练习封装输入函数往二维整型数组中输入数据。封装输出函数从二维数组输出字符型二维数组与整型二维数组类似形参数组形式和 行数实参数组名和 行数void printArray(int a[],int len) //形参 ---数组形式 及 数组长度 printArray(a,len); //实参 ---数组名 数组长度练习字符型二维数组的输入输出void outputStr(char s[][10],int row) { int i 0; for(i0;irow;i) { puts(s[i]); } }通过循环遍历并用 puts 函数逐行打印数组内存储的所有字符串主函数初始化 5 个字符串构成二维字符数组调用该函数完成批量输出。练习找出二维字符型数组内最大的字符串int max_Chararray_string(char s[][10],int row) { int i; int max 0; char max_char[10]; strcpy(max_char,s[0]); for(i 0; irow;i) { if(strcmp(s[i],max_char)0) { strcpy(max_char,s[i]); max i; } } return max; }先用第一个字符串作为基准循环通过 strcmp 逐一对比字符串字典序大小若当前字符串更大则更新基准字符串并记录下标最终返回字典序最大字符串所在的数组行下标。封装函数实现二维字符型数组内字符串倒序。void String_daoguolai(char s1[][10],int row) { int i,j; char s2[10]; for(i0;irow/2;i) { j row - 1-i; strcpy(s2,s1[j]); strcpy(s1[j],s1[i]); strcpy(s1[i],s2); } }字符串倒序与普通的整型数组倒序步骤几乎相同主要就是根据数组长度进行数据交换并使用中间变量接收数据循环交换即可完成字符串倒序。练习二维字符型数组字符串插入排序。void String_choice_input(char s1[][10],int row) { int i 0; int j ; char temp[10]; for(i0;irow;i) { j i; strcpy(temp,s1[i]); while(j0 strcmp(s1[j],s1[j-1])0) { strcpy(s1[j],s1[j-1]); j--; } strcpy(s1[j],temp); } }按字符串字典序升序排列运行逻辑完整过程如下函数接收每行最大长度为 10 的字符串二维数组与总行数 row外层 for 循环依次取出第 i 个位置的字符串存入临时数组 temp并记录当前下标 ji随后进入内层 while 循环在 j 大于 0 的前提下用 strcmp 比较当前 s [j] 与前一个 s [j-1]若前者字典序更小返回负数就把前一个字符串后移到 j 位置再将 j 向前递减一位持续向前冒泡查找正确插入位置直到不满足前移条件时把暂存的 temp 字符串放入最终确定的 j 下标位置外层循环遍历完所有行后整个字符串数组就完成了字典从小到大的升序插入排序。先输出未排序的原始字符串序列再通过插入排序函数利用 strcmp 进行字符串字典序比较将靠后位置字典序偏小的字符串向前逐个移位插入最终完成全部字符串升序排列输出了排序后的字符串升序排序的顺序结果验证该字符串插入排序代码逻辑执行无误。练习二分查找法查找字符串int find_twocharstring(char s1[][10],int row,char *s2) { int begin 0; int end row - 1; int mid ; while(beginend) { mid (beginend)/2; if(strcmp(s1[mid],s2)0) { end mid - 1; }else if(strcmp(s1[mid],s2)0) { begin mid 1; }else { break; } } return beginend?mid:-1; }二分查找算法对已按升序排列的二维字符串数组进行目标字符串先初始化查找区间首尾下标循环计算中间位置下标通过 strcmp 对比中间字符串与待查找字符串的字典序大小若中间值更大则收缩右边界更小则收缩左边界相等则跳出循环最终判断查找区间是否有效找到就返回对应数组下标未找到则返回 - 1。先定义了一个乱序的二维字符型数组并给了初始值五个字符串先用前文写的插入排序先对字符串经行排序因为二分查找法只能对已经排好序的使用。输出结果主要为先输出原始数据然后输出排序数据最后输出查找的字符串如果找到了就是输出对应的字符串。如果没找到返回值为-1则会造成数组越界无法输出。

相关新闻

Python+Flask构建旅游评论智能分析系统

Python+Flask构建旅游评论智能分析系统

1. 项目概述:旅游评论智能分析系统的价值与应用场景每次旅行前刷几百条评论却依然难以决策?这个用PythonFlask构建的旅游评论分析系统,正是为了解决这个痛点而生。我在实际开发中发现,传统人工阅读评论的方式存在三大缺陷&#xf…

2026/10/20 12:29:03 阅读更多 →
构建高可用AI服务网关:多后端负载均衡与故障转移实践

构建高可用AI服务网关:多后端负载均衡与故障转移实践

在实际使用大型语言模型 API 进行开发或研究时,开发者常常面临两个核心问题:如何稳定、经济地获取高质量的 API 服务,以及如何在不同服务商之间进行技术选型和切换。网络上关于“日抛补货”、“一年卡”等非官方渠道的讨论,恰恰反…

2026/10/20 12:27:33 阅读更多 →
C语言函数递归,详细易懂小白必看

C语言函数递归,详细易懂小白必看

目录 一.什么是递归 1.递归的思想 2.最简单的递归 3.栈溢出 4.递归的限制条件 二.递归举例 1.求n的阶乘 2.递归的问题 一.什么是递归 递归是一种解决问题的方法,简单理解就是函数自己调用自己 1.递归的思想 把一个大的复杂的问题层层转化为和原问题相似&am…

2026/10/20 13:13:05 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/21 9:32:40 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/21 9:32:40 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/21 9:32:40 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/21 9:32:40 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/21 9:32:40 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/21 9:31:32 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/21 4:27:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →