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

C语言程序设计P5-4【应用函数进行程序设计 | 第四节】——知识要点:数组作函数参数

知识要点:数组作函数参数

视频:

目录

一、任务分析

二、必备知识与理论

三、任务实施


一、任务分析

任务要求用选择法对数组中的 10 个整数按由小到大的顺序排序,前面在讲解数组时讲冒泡法排序曾提到选择法排序的思想。

所谓选择法就是:先将10个数中最小的数与a[0]对换;再将a[1]到a[9]中最小的数与a[1]对换;……,每比较一轮,找出一个未经排序的数中最小的一个。共应比较9轮。

在这里主要是想应用数组名作函数参数,让实参和形参共用一段内存单元。

二、必备知识与理论

数组可以作为函数的参数使用,进行数据传送。数组用作函数参数有两种形式,一种是把数组元素作为函数实参使用;另一种是把数组名作为函数的实参和形参使用。

1. 数组元素作函数实参

数组元素的使用与普通变量相同,因此它作为函数实参使用与普通变量是完全相同的,在发生函数调用时,把作为实参的数组元素的值传送给形参,实现单向的数值传送。

2.数组名作函数参数

数组名作为函数参数时,此时实参与形参都应用数组名(或用数组指针,见项目六。)要求实参和形参数组的类型相同,维数相同。在进行参数传递时是“地址传递”,也就是说是实参数组的起始地址传递给了形参数组,而不是将实参数组中的每一个元素一一传递给形参数组元素。

3.多维数组作函数参数

多维数组元素可以作为实参,这与普通变量作为实参的用法相同。

也可以用多维数组名作为实参和形参,在被调用函数中对形参数组定义时可以指定每一维的大小,也可以省略第一维的大小说明。但是不能把第二维以及其它高维的大小说明省略。

三、任务实施

本任务是用选择法对数组中10个整数按由小到大排序。

算法分析:所谓选择法就是:先将10个数中最小的数与a[0]对换;再将a[1]到a[9]中最小的数与a[1]对换;……,每比较一轮,找出一个未经排序的数中最小的一个。共应比较9轮。

(1)首先是写一个main()函数,在main()函数中定义一个整型数组a用来存放将要排序的10个整数。

(2)自己定义一个有参函数sort(),用来完成对10个整数的排序这个功能,在函数sort()中定义一个整型数组array,数组array接收数组a的首地址,使数组array和数组a共用一段内存单元。并且将较大的数作为返回值返回到main()函数中。

(3)在sort()函数中用数组array完成对这10个整数的排序任务。

程序代码如下:

#include <stdio.h>void sort(int array[],int n){ int i,j,k,t;for(i=0;i<n-1;i++){ k=i;for(j=i+1;j<n;j++)if(array[j]<array[k]) k=j;t=array[k];array[k]=array[i];array[i]=t;}}main(){ int a[10],i;printf("enter the array:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);sort(a,10);printf("the sorted array:\n");for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");  }

程序的运行结果如下:

enter the array:

12 0 -45 99 34 89 76 -60 100 38↙

the sorted array:

-60 -45 0 12 34 38 76 89 99 100

可以看到在执行函数调用语句“sort(a,10);”之前和之后,a数组中各元素的值是不同的。原来是无序的,执行“sort(a,10);”后,a数组已经排好序了,这是由于形参数组array已用选择法进行排序了,形参数组改变也使实参数组随之改变。

实参数组a将它的首地址传递给形参数组array,这样这两个数组在内存中共同使用同一段内存单元。

相关文章:

C语言程序设计P5-4【应用函数进行程序设计 | 第四节】——知识要点:数组作函数参数

知识要点&#xff1a;数组作函数参数 视频&#xff1a; 目录 一、任务分析 二、必备知识与理论 三、任务实施 一、任务分析 任务要求用选择法对数组中的 10 个整数按由小到大的顺序排序&#xff0c;前面在讲解数组时讲冒泡法排序曾提到选择法排序的思想。 所谓选择法就是…...

PostgreSQL数据库连接:psqlODBC驱动安装与配置实战指南

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;本文将提供详细的psqlODBC驱动程序在Windows操作系统上的安装和配置指南&#xff0c;使用户能够通过ODBC标准连接到PostgreSQL数据库。安装步骤涵盖获取安装文件、运行安装向导、选择安装路径、完成安装以及配置…...

【NLP 8、normalization归一化函数:sigmoid、softmax】

目录 Normalization&#xff08;归一化&#xff09; 1.特点 目的 应用场景 输出范围 2. Sigmoid 函数 目的 应用场景 输出范围 3. Softmax 函数 目的 应用场景 输出范围 "燃尽最后的本能&#xff0c;意志力会带你杀出重围" —— 24.12.2 Normalization&#…...

鸿蒙ArkTS 与安卓Android-底层逻辑对比

鸿蒙OS&#xff08;ArkTS&#xff09; 架构&#xff1a; 鸿蒙OS采用了微内核架构&#xff0c;其核心操作系统将设备的硬件资源和服务进行模块化&#xff0c;微内核负责最基本的服务&#xff08;如调度、通信、同步等&#xff09;&#xff0c;而其他功能则由用户空间的进程提供。…...

第八节、Bresenham直线插补【51单片机-TB6600驱动器-步进电机教程】

摘要&#xff1a;前面章节主要介绍单个电机控制&#xff0c;本节内容介绍两个电机完成直线插补运动 一、 Bresenham直线算法介绍 Bresenham直线算法由Jack Elton Bresenham于1962年在IBM开发&#xff0c;最初用于计算机显示直线&#xff0c;它确定应该选择的n维光栅的点&#…...

唇形同步视频生成工具:Wav2Lip

一、模型介绍 今天介绍一个唇形同步的工具-Wav2Lip&#xff1b;Wav2Lip是一种用于生成唇形同步&#xff08;lip-sync&#xff09;视频的深度学习算法&#xff0c;它能够根据输入的音频流自动为给定的人脸视频添加准确的口型动作。 &#xff08;Paper&#xff09; Wav2Lip模型…...

旅游管理系统的设计与实现

文末获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;旅游管理系统的设计与实现 摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#…...

burp常用机漏洞测试理论

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…...

TCP/IP 和 UDP

一、TCP/IP&#xff08;传输控制协议&#xff09; TCP/IP 是一个协议族&#xff0c;它是互联网的基础协议&#xff0c;为网络通信提供了标准化的方法。TCP/IP 分为四个层次&#xff0c;每一层都有特定的功能&#xff1a; 应用层&#xff1a;这是最接近用户的层&#xff0c;包含…...

FastAPI解决跨域报错net::ERR_FAILED 200 (OK)

目录 一、跨域问题的本质 二、FastAPI中的CORS处理 1. 安装FastAPI和CORS中间件 2. 配置CORS中间件 3. 运行FastAPI应用 三、解决跨域报错的步骤 四、案例&#xff1a;解决Vue.js与FastAPI的跨域问题 1. Vue.js前端应用 2. FastAPI后端API 3. 配置CORS中间件 4. 运行…...

git如何新建分支并提交?

1. 检查当前分支 在开始之前&#xff0c;最好确认你当前所在的分支。 git branch 当前分支前面会有一个 *号。 2. 新建分支 使用 git branch 命令创建一个新的分支。假设你要创建一个名为 new-feature 的分支。 git branch new-feature 3. 切换到新分支 使用 git checkou…...

使用 LlamaFactory 结合开源大语言模型实现文本分类:从数据集构建到 LoRA 微调与推理评估

文章目录 背景介绍文本分类数据集Lora 微调模型部署与推理期待模型的输出结果 文本分类评估代码 背景介绍 本文将一步一步地&#xff0c;介绍如何使用llamafactory框架利用开源大语言模型完成文本分类的实验&#xff0c;以 LoRA微调 qwen/Qwen2.5-7B-Instruct 为例。 文本分类…...

Python基础学习总结篇

Python基础学习_01注释、变量、计算、打印 Python基础学习-02转义、输入、函数 Python基础学习-03逻辑分支语句、循环 Python基础学习-04列表List Python基础学习-05元组 tuple Python基础学习-06字典Dict Python基础学习-07不可重复的set集合 Python基础学习-08字符串 …...

8. Debian系统中显示屏免密码自动登录

本文介绍如何在Debian系统上&#xff0c;启动后&#xff0c;自动免密登录&#xff0c;不卡在登录界面。 1. 修改lightDM配置文件 嵌入式Debian系统采用lightDM显示管理器&#xff0c;所以&#xff0c;一般需要修改它的配置文件/etc/lightdm/lightdm.conf&#xff0c;找到[Seat…...

ubuntu安装nginx并设置开机自启动

1、下载nginx相关依赖包 sudo apt-get install gccsudo apt-get install libpcre3 libpcre3-devsudo apt-get install zlib1g zlib1g-devsudo sudo apt-get install opensslsudo apt-get install libssl-devsudo apt install make2、进入想下载安装包位置 cd /usr/local3、通…...

SQLServer中使用ISNULL替换为指定的替换值

ISNULL (Transact-SQL) 适用于&#xff1a; SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics 分析平台系统 (PDW)Microsoft Fabric 中的 SQL 分析端点Microsoft Fabric 中的仓库 NULL替换为指定的替换值。 1、语法 ISNULL ( check_expression , rep…...

深入浅出:PHP函数的定义与使用

文章目录 前言什么是函数定义函数语法示例 调用函数示例 参数传递按值传递示例按引用传递示例默认参数示例可变数量的参数示例 返回值示例 变量作用域全局作用域示例局部作用域示例静态作用域示例 匿名函数示例闭包示例 递归函数示例 内置函数常见内置函数示例 用户自定义函数示…...

C++知识整理day4内存管理——new和delete详解

文章目录 1.C/C内存分布2.C语言中动态内存管理&#xff1a;malloc/realloc/calloc3.C内存管理方式3.1 new/delete操作内置类型3.2 new和delete操作自定义类型 4.malloc/free和new/delete到底什么区别&#xff1f;4.1 对于自定义类型4.2 对于自定义类型4.3 总结&#xff1a;它们…...

部署项目报错

vue2项目部署后 Error: Cannot find module /views/*** 1.起因 登录页、首页等静态页面可以正常进入&#xff0c;后端访问也正常&#xff0c;可以获取到验证码。 但是登录之后会发现首页空白或者进入不到首页 F12查看有报错信息&#xff1a;Error: Cannot find module ‘/v…...

专业140+总分420+上海交通大学819考研经验上交电子信息与通信工程,真题,大纲,参考书。博睿泽信息通信考研论坛,信息通信考研Jenny

考研结束&#xff0c;专业819信号系统与信号处理140&#xff0c;总分420&#xff0c;终于梦圆交大&#xff0c;高考时敢都不敢想目标&#xff0c;现在已经成为现实&#xff0c;考研后劲很大&#xff0c;这一年的复习经历&#xff0c;还是历历在目&#xff0c;整理一下&#xff…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码&#xff1a;HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...