C语言复习--数组,函数

C语言 数组练习~ 题目要求: /*一个数列: 8 4 2 1 23 344 12 循环输出数列的值 求数列中所有数值的和及平均值 猜数游戏,从键盘中任意输入一个数据,判断数列中是否包含此数据 */ 阅读详情

数组基本概念

数组 -- 连续的内存空间

变量四要素:类型 变量名 /标识符  值 内存地址

//注:数组=每个元素没有变量名,只有数组名 -- 用下标法访问他的具体元素

赋值:


全部赋值:
a[5]={1,2,3,4,5}

部分赋值 :
a[10]={1,2,3,4,5} -- 只给了前面5个 赋值,后面的没赋值的都赋值为0
a[10]={0} --全部初始化为0

a[]={45,55,5,667,98,88}   -- 自动分配内存空间

-- 可以用  关键字  sizeof()   求出他的额数组大小 -- size=sizeof (a)/sizeof(a[0]),单位是字节,比如int -- 4 bit

case:
斐波那契数列:a[n]=a[n-1]*a[n-2]

-------------------------------------
数组经典应用 -- 冒牌排序

 核心 -- 两层循环比较  --每一轮比较拿到一个最值,经过n-1轮就得到所有的排序

#include<stdio.h>

int len,i,j,t;
int main()
{
int arr[]={8,663,9852,45,3,48};
len= sizeof(arr)/sizeof(arr[0]);
for(i=0;i<len-1;++i)
    for(j=0;j<len-1-i;++j)
        if(arr[j]<arr[j+1])
        {
            t=arr[j];
            arr[j]=arr[j+1];
            arr[j+1]=t;
            
        }
    
for(i=0;i<len;++i)
    printf("%d ",arr[i]);
puts("");

    
return 0;
}


---------------------------------------


二维数组:


int arr[2][3]={{1,2,3},{10,20,30}};
也可以 arr[2][3]={1,2,3,10,20,30};


【初始化问题】


 1.可以不写行,但是一定要写列 -- a[][4] --这样是可以的
 2.二维数组也可以向一维数组一样部分赋值,其他用0补全

test:3*4的矩阵 编程求出其中最大的元素的值已经他的行号列号
/t  -- 水平制表符

 

函数:

为什么要用函数:

1.避免代码冗长
2.模块化的设计思路
3.按照功能划分

报错undefine  -- 函数未定义


函数三要素:

函数名 -- 体现功能

参数列表  -- 类型和个数根据 需求来定义  

返回值 --  业务需求

int func(int x) //形式参数 -- 需要包含变量名,类型
{}


定义空函数  -- 占位置 --先把大概用到的功能函数都写出来,然后完善函数 (功能)


函数定义上 -- 可以当成他的表达式 -- 利用函数的返回值
------------------------------------------------------------------------------

形参和实参


形参和实参 -- 值相同但是地址不同  -- 修改是形参,实参不受影响

形参 -- 只传递数值

实参 -- 传递地址


#include<stdio.h>

void sSwitch(int *x,int *y)
{
    int t=*x;
    *x=*y;
    *y=t;    
}
int main()
{
   int x,y;
   scanf("%d%d",&x,&y);
   sSwitch(&x,&y);
   printf("x=%d, y=%d",x,y);
    return 0;
}

------------------------------------------------------------------------------

局部变量  -- 在{}内的变量  -- 存放在栈空间 -- 
生命周期 -- 只有被调用的时候才为形参申请内存,调用结束就释放内存


注意 -- if实现的函数部分在被调用之后,会触发警报 ,要在调用前面声明即可


函数的嵌套 -- 函数调用过程也调用其他函数

case1: 输入4个数字,返回他们的最大值

int getMaxFromTwo(int x,int y)
{
    return x>y?x:y;
}

int getMaxFromFour(int x,int y,int a,int b)
{
    int max =getMaxFromTwo(x,y);
    max=getMaxFromTwo(max,a);
    return getMaxFromTwo(max,b);
    
}


//函数递归 -- 自己调用自己 
需要有一个退出条件
//递归求阶乘
int jic(int a)
{
    if(a==1)return 1;
    return jic(a-1)*a;    
}


//注意 -- long int 也是 4个字节

#include<stdlib.h>

int jic(int a)
{    
    if(a>=17)
    {
        printf("越界\n");
        exit(-1);
    }
    if(a==1)return 1;
    return jic(a-1)*a;    
}

函数打印数组

//注意 -- 形参中不存在数组的概念  -- 即便约定了(arr[3]) --也是传递首地址 --8字节

//数组传参都是传数组的首地址 --  数组名对应数组的首地址 ||  数组的第一个元素地址也是数组的首地址
    printArr(arr,len);
    printArr(&arr[0],len);

test: A,B两班同学,分别求出平均分

//API -- 函数

//局部变量要 初始化,不然编译器可能会默认大数

---------------------------------------------------------------
二维数组的数据类型   -- 特殊的一维数组 --这个一维数组的每一个元素就是-一个数组
作为参数时候 -- 需要大小确定  -
- 合法写法: arr[][2]  arr[3][2]
**延伸  -- 多维数组必须对第一个数组之外的所有元素都有边界

---------------------------------------------------------------

局部变量 和 全局变量(外部变量)
局部变量  -- 只能在函数体里面操作

全局变量  -- 在整个程序都可操作  -- 提供便捷性,但是有一定风险

//注意: 全局变量一般写在所有函数之前,不然会前面的函数调用报错

test1:-班级10个同学,封装一个函数  -- 获得班上同学的平均分,最高分,最低分

要求输入10个数,找出最大,最小值的下标


冒泡排序和选择排序


void bubbleSort(int arr[],int len)
{
    int i,j,t;
    for(i=0;i<len-1;++i)
    {
        for(j=len-1;j>i;--j)
            if(arr[j]>arr[j-1])
            {
                t=arr[j];
                arr[j]=arr[j-1];
                arr[j-1]=t;
            }
        
        
    }
    
    
}

void selectSort(int arr[],int len)
{
    int i,j,k,minn;
    for(int i=0;i<len-1;++i)
    { minn=arr[i];
      j=i;
        for(int j=i+1;j<len;++j)
        {
            if(minn<arr[j])
            {
                minn=arr[j];
                k=j;                
             }        
        }
        int t=arr[i];
        arr[i]=arr[k];
        arr[k]=t;
                
    }
    
    
}


 

C语言复习第三档!!!(数组+指针+函数) 接着昨天的数组和指针。。。。。。。 4.数组、函数和指针: 数组指针(也称行指针):指向数组的指针,例如:int(*p)[10]; #include <stdio.h> int main(void) { int (*p)[3]; int i; int a[3] = {0,1,2}; for(i = 0;i<3;i++) { p = a;//... 阅读详情

相关推荐

C语言复习(二)函数+数组+指针

五、函数 <storage type> <data type> <function>(parameters) { statement//函数主体 return expression;//返回函数值 } storage type:描述该函数本身的链接类型或者返回值的易变性; data type :描述函数的返回值类型 function:函数名 param...

weixin_42490436的博客 455

C语言——数组知识点总结(超详解)

1. 一维数组的创建和初始化(1)数组的创建在创建数组之前,我们应先了解数组是什么?数组:是一组相同类型元素的集合。创建数组错误的实例::数组的创建,[ ] 中要给一个常量才可以,不能使用变量。(2)数组初始化数组的初始化:在创建数组的同时给数组的内容一些合理初始值(初始化)。注:数组在创建的时候如果不指定数组的确定的大小就得初始化。数组的元素个数根据初始化的内容来确定。此时编译器就会默认 arr1数组的大小是5, arr2数组的大小是2, arr3数组的大小是4。

2302_78684687的博客 2692

【c语言】复习无止境,day2--数组&函数篇

数组: 什么是数组: 变量的组合,是一种批量定义变量的方式 定义: 类型 数组名[数量]; int num1,num2,num3,num4,num5; int arr[5]; 使用:数组名[下标]; 下标:从零开始 范围:0~数量-1 遍历:与for循环配合使用,使用循环变量i作为数组的下标 初始化: 类型 数组名[数量] = {1,2,3,4,5,…}; 1、数组与普通变量一样默认值是随机的,为了安全要对数组进行初始化 2、这种初始化语法只能在定义语句时使用,而且只能逐个赋值,不能整体赋值 3、

qmxxd 751

C语言数组这些知识,你真的会了吗?(万字详细总结,让你快速掌握)

小伙伴们,本篇博客小杨主要向各位小伙伴们详细介绍C语言的数组部分内容。该篇博客主要将数组内容分为(1)一维数组(2)二维数组(3)字符数组(4)扩展:数组名,这四个部分给大家进行讲解,这蕴盖了数组的大部分内容,希望小伙伴们能够通过阅读,对数组有更深的理解,受益良多!......

小杨的博客 6794

Stata森林图进阶:个性化定制与高级技巧

本文详细介绍了Stata森林图的进阶技巧,包括个性化定制与高级应用。通过meta分析工具如metan命令,用户可以优化字体、颜色、坐标轴等视觉元素,提升森林图的专业性和可读性。文章还提供了黑白印刷设置、高分辨率导出等实用技巧,帮助科研人员制作符合学术出版要求的森林图。

ios99的博客 254

从USB相机标定到Aruco码精准定位:基于aruco-ros的机器人视觉实践

本文详细介绍了基于aruco-ros的机器人视觉实践,从USB相机标定到Aruco码精准定位的全流程。通过实战案例和优化技巧,展示了Aruco码在机器人导航中的高精度位姿识别能力,帮助开发者快速实现毫米级视觉定位系统。

weixin_27310417的博客 487

【C语言复习(十二)】数组基础

1、数组的概念 数组是相同类型的变量的有序集合;如int num[5]; 00 2、数组地址与数组名 数组名代表数组首元素的地址; 数组的起始地址需要使用取地址符&才能得到; 数组首元素的地址值与数组的起始地址值相同,但却是不同的两个概念,如上图中所示; 3、数组名 数组名通常可以看作是一个常量指针,即它不能作为左值被赋值,只能作为右值赋值给其他变量; 数组名“指向”的是内存

CMbug的专栏 1073

服务器冗余电源维修图纸,冗余热备份电源的电路图设计

在设计某高可靠性计算机系统时,要求其配套电源采取冗余设计。一般来说,可以采取的方案有容量冗余、冗余冷备份方式、并联均流的N+1备份方式、冗余热备份方式。容量冗余是指电源的最大负载能力大于实际负载,也就是“大马拉小车”,其缺点是不利于提高电源的效率,而且对提高电源的可靠性意义不大。冗余冷备份方式是指电源由两个或多个功能相同的单元模块组成,电源启动后由其中一个单元模块向设备供电,当工作单元发生故障时,...

weixin_39671509的博客 1995

【C语言】数组知识点总结

致读者:在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。数组:一组有序数据集合,且其中的元素都属于同一数据类型(type_t arr_name [const_n];),利用数组名和下表来唯一确定数组中的元素。1.数组的创建和初始化创建数组方式:一维数组:type_t arr_name [cons...

码农印象 2712

保姆级教程:用Dify+DeepSeek API打造你的私人股票分析助手(附完整配置流程)

本文提供了一份详细的教程,指导用户如何利用Dify低代码平台和DeepSeek API构建一个私人股票分析助手。内容涵盖从环境准备、Dify部署、DeepSeek模型配置,到设计智能体工作流和编写高效提示词的完整流程,旨在帮助投资者和开发者快速打造专属的AI投资分析工具。

weixin_29079671的博客 639

unity转微信小游戏:UI大小设置

unity转微信小游戏:UI大小设置

会潜水的小火龙的博客 3272

C语言复习合集【9】字符数组和字符串:字符数组、字符串数组、字符串函数(strlen、strcpy、strcat、strcmp、字符串拓展用法)

字符数组和字符串:字符数组、字符串数组、字符串函数(strlen、strcpy、strcat、strcmp、字符串拓展用法)大家可以通过代码理解学习,帮助大家C语言期末复习。一、

2301_80013104的博客 2086

音视频OSD——使用freetype将矢量字库的信息叠加至YUV

目录freetypes使用步骤1)包含头文件:2) 初始化库:3)加载face对象:4)设置字体大小5)设置字体位置,以及旋转度数:6)加载字形图像准备矢量字库代码.c.h效果叠加至YUV freetypes FreeType是一个完全开源的、可扩展、可定制且可移植的字体引擎,它提供TrueType字体驱动的实现统一的接口来访问多种字体格式文件 下载freetypes tar -xjf freetype-2.4.10.tar.bz2 cd freetype-2.4.10/ ./configure

路人coder 2364

C语言复习(3)——数组与函数

3、static修饰全局变量(默认具有外部链接属性),static修饰之后,变成内部链接属性,只能在所在的源文件内使用,即使声明了也无法使用。2、使用建议:希望一个变量出了函数,值还想保留下来,等下次进入函数后继续使用,可以使用static函数修饰变量。1、static修饰局部变量使得生命周期变长,但是不等同与变成全局变量、、作用域没有发生变化。3、局部变量的生命周期:进入作用域变量创建,生命周期开始,出作用域生命周期结束,变量销毁。3、必要条件:1、递归存在限制条件,当满足这个限制条件就停止递归。

2502_90291736的博客 257

YOLOv11 改进 - 注意力机制 | EMA (Efficient Multi-Scale Attention) 高效多尺度注意力:跨空间学习与多分支协同增强特征表征,优化多尺度目标检测

本文介绍了高效多尺度注意力(EMA)模块及其在YOLOv11中的结合应用。现有注意力机制在通道维度缩减时可能影响深度视觉表示,EMA模块通过结合通道和空间信息、采用多尺度并行子网络结构等创新点,实现了高效的多尺度注意力机制。其基本原理包括通道和空间注意力结合、多尺度并行子网络设计等。在多个流行基准数据集上的实验表明,该模块能有效提高特征表示能力。我们将EMA集成进YOLOv11,实验证明改进后的模型在目标检测任务中性能优越,具有广泛应用前景

魔改工程师的博客 1293

STM32嵌入式标准化封装五层架构设计与工程实践

在嵌入式系统开发中,代码封装是保障可维护性、可复用性与可靠性的核心工程能力。其本质是通过分层抽象(硬件抽象层→设备驱动层→应用逻辑层)解耦硬件依赖与业务逻辑,实现跨芯片移植、多任务安全及确定性实时响应。关键技术包括HAL库重构以消除硬编码初始化、驱动层提供同步/异步/事件驱动三类UART接口、中断优先级矩阵管理确保响应确定性、双阶段时钟配置兼顾启动鲁棒性与运行能效,以及面向Modbus等工业协议的语义化API封装。这些实践直击STM32项目中引脚变更难、HAL裸调风险高、中断处理不安全、时钟配置僵化等典型痛

weixin_35019679的博客 68

C语言复习(上) 数组,函数,字符串处理

C语言复习(上) 数组,函数,字符串处理 1.序言 这是笔者的第一篇博客,笔者也刚刚结束了大一上学期的c语言期末考试,下面是我从开学到现在梳理的c语言常见算法和一些我觉得易错的点,如有错误麻烦指正,谢谢! 2.常见算法(其中一些算法笔者自己的理解写在了3.中,遇到理解不了的地方可以先去看看易错点整理) (1)编写函数求二次方程的根 void rootx(double a, double b, do...

weixin_45807786的博客 546

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

c语言复习3:函数,随机数,内存,数组

2. 64位操作系统,内存地址以64位的二进制表示,即最大内存地址为2^64次方,地址范围:0~2^64,最大支持的内存:2^64(字节) --> 17,592,186(GB) --> 17,179(TB)* 另外,定义的初始最大值不能是0,一定得是数组中已经存在得值(怕数组存的值都是负数,但最后运行得出的最大值是0),一般都是把0索引当作最大值。1. 种子不变,随机数的结果就是固定的,如果想随机变化,就可以让时间充当种子,即 `srand(time(NULL));`),数组名表示的就是完整的数组。

2301_76781059的博客 999

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C语言 数组和递归函数的复习

本周总结 经过一周的学习,从一开始的游戏中学习开始,递归函数(http://blog.youkuaiyun.com/qq_35576100/article/details/52087900)、一维数组的定义和应用(http://blog.youkuaiyun.com/qq_35576100/article/details/52105394)、二维数组的认识和应用(http://blog.youkuaiyun.com/qq_3557

Wind not Stop! 836

C语言复习归纳(从二维数组~函数)

C语言复习,内容从二维数组~自定义函数

micors的博客 203

专升本C语言——资料复习大全(需要完整版请私信作者)

【解析】结构化程序主要由3种基本控制结构组成,顺序结构是最基本的算法结构,当执行由这些语句构成的程序时,将按这些语句在程序中的先后顺序逐条执行,没有分支,没有转移,没有步骤之间的相互约束,没有对某一步骤的多次使用,完全按照步骤的原有次序依次执行,B选项叙述正确。【解析】C编译程序把文件后缀为C的源程序文件编译成文件后缀为.obj的二进制文件,链接将一个或多个目标文件与程序用到的库文件连接起来,形成一个可以在操作系统直接运行的执行程序.exe,故排除B、C、D项,答案选择A选项。故选项A、D说法正确。

Cherry的博客 1万+

C语言复习合集【11】函数:函数的基本用法,函数的参数传递,数组在函数中的传参,指针函数,递归函数,函数指针,函数指针数组

函数的基本用法,函数的参数传递,数组在函数中的传参,指针函数,递归函数,函数指针,函数指针数组这一部分概念比较多,大家有不熟悉的概念可以再熟悉一下,可以通过代码理解学习函数的基本用法,函数的参数传递,数组在函数中的传参,指针函数,递归函数,函数指针,函数指针数组。

2301_80013104的博客 845

C语言指针复习—— 空指针和野指针、数组与指针、指针与函数传参、指针与函数

1. 普通指针的理解 2. 数组与指针 3. 指针与函数传参 4. 对于函数的理解

不善挽留 1189

复习C语言系列二:动态调用函数指针数组

a:用call_fun_ptr调用afun(),b:用call_fun_ptr调用bfun() a 请输入给您指定的函数输调用的参数 afun_par ----------------------------- now call_fun_ptr ----------------------------- call afun:(afun_par) --...

weixin_30790841的博客 183

c语言 动态调用函数指针,复习C语言系列二:动态调用函数指针数组

a:用call_fun_ptr调用afun(),b:用call_fun_ptr调用bfun()a请输入给您指定的函数输调用的参数afun_par-----------------------------now call_fun_ptr-----------------------------call afun:(afun_par)-----------------------------请按任意键...

weixin_28729173的博客 362

【C语言进阶6——指针的进阶(3)- 总结数组和指针】

指针的进阶(3)-数组和指针的小结前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 本文接着上文,继续学习指针进阶的知识点: 指向函数指针数组的指针 数组和指针的小结 指针的应用——回调函数 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot

taibudong1991的博客 3864
上一篇: C语言复习--基础IO、流程控制
下一篇: C语言复习 -- 指针,这篇够了
mx_jun
博客等级 码龄5年 1605粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值