目录一. 数组的概念二.一维数组的创建和初始化1.数组创建的基本语法2.数组的初始化-用大括号三.一维数组的使用四.一维数组在内存中的存储五.sizeof计算数组元素的个数六.二维数组的创建七.二维数组的初始化—也是用大括号1.不完全初始化和完全初始化2.按行初始化3.初始化时省略行但不能省略列八.二维数组的使用1.二维数组的下标2.二维数组的输入和输出九.二维数组在内存中的存储十.C99中的变长数组十一.数组练习练习1多个字符从两端移动向中间汇聚练习2⼆分查找十二.求平均值的方式3.正确的方法一. 数组的概念数组是一组相同类型元素的集合1.数组中存放1到多个数据但不能为02.数组中存放的数据类型是相同的数组可以分为一维和多维数组一般是二维二.一维数组的创建和初始化1.数组创建的基本语法type arr_name[ 常量值 ]; 数组在创建时可以指定数组的大小和数组的元素类型2.数组的初始化-用大括号1完全初始化和不完全初始化int data[10] { 1,2,3,4,5,6,7,8,9,10 };//完全初始化 int arr1[10] { 1,2,3,4,5 };//不完全初始化剩余的元素会默认给成0 int arr2[4] { 1,2,3,4,5 };//错误的初始化-初始化项太多2数组的大小int arr[] {1,2,3,4,5}; //数组的大小可以省略不写这里有5个元素 int arr[]{0}; //1个元素 int arr[10] {0}; //10个元素3.数组的类型int arr[10] // int 是 数组元素 的类型 // int [10] 才是 数组arr 的类型三.一维数组的使用1.数组的下标1下标从0开始最后一个元素下标是n-12下标引用操作符[ ]可以访问到数组的元素int arr[5] {1,2,3,4,5}; arr[0] 1; arr[1] 2; arr[2] 3; arr[3] 4; arr[4] 5;2.数组元素的打印#includestdio.h int main() { int arr[5] { 1,2,3,4,5 }; int i 0; for (i 0;i 5;i) { printf(%d , arr[i]); //1 2 3 4 5 } return 0; }3.数组的输入int main() { int arr[5] { 0 }; int i 0; for (i 0;i 5;i) { scanf(%d,arr[i]);//1 2 3 4 5 //不要忘了 } for (i 0;i 5;i) { printf(%d , arr[i]);//1 2 3 4 5 } return 0; }四.一维数组在内存中的存储int arr[10] {0}; //以下是数组中每个元素的地址可以看到1数组的元素在内存中是连续存放的2随着下标的增长地址是由低到高变化的五.sizeof计算数组元素的个数用sizeof可以计算数组的大小int main() { int arr[10] { 0 }; int sz sizeof(arr);//40 单位是字节 printf(%d\n, sz); return 0; }上面这行代码中数组有10个元素元素类型是 int所以每个元素4个字节数组大小就是40个字节。那么有了数组大小和元素的类型就可以计算出数组元素的个数int main() { int arr[10] { 0 }; int n sizeof(arr) / sizeof(arr[0]); printf(%d\n, n); //10 return 0; }六.二维数组的创建1.二维数组的概念把一维数组作为数组的元素这就是二维数组同样地把二维数组作为数组的元素就得到三维数组二维数组以上的数组统称为多维数组2.二维数组的创建type arr_name[ 常量值 1][ 常量值 2] 例如int arr[3][5]; //表示数组有3行每一行有5个元素 double data[4][6];其中第一个 [ ] 代表 行第二个 [ ] 代表 列七.二维数组的初始化—也是用大括号1.不完全初始化和完全初始化int arr1[3][4] {1,2,3}; //不完全初始化其余默认都是0 int arr2[2][5] {1,2,3,4,5,6,7,8,9,10};//完全初始化二维数组初始化时先初始化行后初始化列2.按行初始化int main() { int arr[3][5] { {1,2},{3,4},{5,6} }; //1 2 0 0 0 //3 4 0 0 0 //5 6 0 0 0 return 0; }3.初始化时省略行但不能省略列int arr5[][5] {1,2,3}; int arr6[][5] {1,2,3,4,5,6,7} int arr7[][5] {{1,2},{3,4},{5,6}};八.二维数组的使用1.二维数组的下标二维数组的访问也是使用下标形式二维数组有行和列C语言规定二维数组的行和列是从0开始的int main() { int arr[3][5] { {1,2},{3,4},{5,6} }; //1 2 0 0 0 //3 4 0 0 0 //5 6 0 0 0 printf(%d , arr[0][0]);//1 printf(%d , arr[1][0]);//3 printf(%d , arr[1][2]);//0 return 0; }可以将下标理解为坐标arr[0][0]对应的就是1arr[1][0]3arr[1][2]02.二维数组的输入和输出int main() { int arr[3][5] { 0 }; //输入 printf(输入); int i 0; for (i 0;i 3;i)//行下标 { int j 0; for (j 0;j 5;j)//列下标 { scanf(%d, arr[i][j]); } } //输出 for (i 0;i 3;i)//行下标 { int j 0; for (j 0;j 5;j)//列下标 { printf(%d , arr[i][j]); } printf(\n); } return 0; }九.二维数组在内存中的存储以下代码可以打印二维数组中所有元素的地址int main() { int arr[3][5] { 0 }; int i 0; int j 0; for (i 0;i 3;i) { for (j 0;j 5;j) { printf(arr[i][j]%p\n, arr[i][j]); } } return 0;可以看到每一行内部的每个元素是相邻的地址之间相差4个字节跨行位置处的两个元素之间也差4个字节所以二维数组中的每个元素都是连续存放的如下图十.C99中的变长数组int main() { int n 0; scanf(%d, n); int arr[n];//用变量来指定数组大小 //只有在程序运行时才知道大小所以变长数组不能初始化 //一旦输入值之后数组长度就不变了 //vs不支持变长数组 int i 0; for (;i n;i) { arr[i] i 1; } for (i 0;i n;i) { printf(%d , arr[i]); } return 0; }变长数组允许用变量来指定数组大小数组长度只有运行时才能确定所以变长数组不能初始化十一.数组练习练习1多个字符从两端移动向中间汇聚#includestring.h//stelen的头文件 #includewindows.h//Sleep()函数要用到的头文件 int main() { char str1[] hello world; char str2[] ###########; int left 0; size_t right strlen(str2) - 1;//下标从0开始所以要减一 while (left right) { Sleep(1000);//休眠单位是毫秒 str2[left] str1[left]; str2[right] str1[right]; left; right--; printf(%s\n, str2); } return 0; }练习2⼆分查找题目给定⼀个升序的整型数组在这个数组中查找到指定的值n找到了就打印n的下标找不到就 打印找不到先用遍历的方式来解int main() { int arr[] { 1,2,3,4,5,6,7,8,9,10 }; int n 0;//要找的值 scanf(%d, n); int i 0; int sz sizeof(arr) / sizeof(arr[0]); for (i 0;i sz;i) { if(arr[i]n)//注意不要写成 一个 { printf(找到了下标是%d\n, i); break; } } if (i sz)//当i和sz相等的时候说明i已经遍历完了数组都没找到n { printf(找不到\n); } return 0; }这种方法效率不高用二分查找可以提高效率以下是二分查找的方式int main() { int arr[] { 1,2,3,4,5,6,7,8,9,10 }; int n 0; printf(输入要找的值); scanf(%d, n); int left 0; int right sizeof(arr) / sizeof(arr[0]); int mid 0; int find 0;//假设没找到 while (leftright) { mid (left right) / 2; if (arr[mid] n) { left mid 1; } else if (arr[mid] n) { right mid - 1; } else { find 1;//如果找到了就把1赋给 find printf(找到了下标是%d\n, mid); break; } } if (find 0) { printf(找不到\n); } return 0; }十二.求平均值的方式1.int mid (leftright) / 2;这种方式中如果给的数值太大会产生问题2.int main() { int left 2147483645; int right 2147483647; printf(%d\n, left / 2 right / 2);//不适用奇数 return 0; }这种情况不适用于奇数3.正确的方法int main() { int left 2147483645; int right 2147483647; //不管right和left谁大谁小都能产生正确结果 printf(%d\n, (right - left) / 2 left);//ok return 0; }
企业数字化 ERP 产品动态
相关推荐
随机森林预测锂电池剩余寿命:从特征工程到工程落地 简介:面向毕业设计、课程设计及入门项目实践的Python机器学习学习者,这份资料围绕锂离子电池剩余寿命预测展开,完整提供了基于随机森林模型的代码实现与配套数据。内容涵盖现有预测方法的调研分析、充电/放电阶段数据提取、清洗与格式转换等关… · 2026/9/28 3:14:02
智能座舱多域音频虚拟化:virtio-snd驱动集成与通道映射实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/28 3:13:23
滑动窗口协议实验指南:GBN/SR模拟源码解析与参数调优避坑 简介:北京邮电大学计网实验中的模拟数据链路层滑动窗口协议课程设计,配套完整C语言源码与文档说明,主要面向计算机网络实验、期末大作业及课程设计场景。资源聚焦滑动窗口协议的停等、回退N帧、选择重传等机制实现,代码中通过CRC校… · 2026/9/28 3:13:16
Spingboot启动预热的实现 启动预热的适用场景启动预热适合以下情况:数据主要来自第三方接口,无法直接从本地数据库读取。第三方接口响应较慢,首次访问容易超时。一个页面需要调用多个第三方接口或逐项查询。数据读取频繁,但变化不频繁。希望服务启动后&… · 2026/9/28 3:40:12
学Java别走弯路,这5个方向最吃香 学Java的人很多,但学明白的人不多。有人学了半年还在写控制台程序,有人一年就能独当一面。差别不在天赋,而在方向。Java生态太庞大了,什么都学等于什么都没学。选对方向,事半功倍。今天盘点当前最吃香的5个Java方向&am… · 2026/9/28 3:32:15
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
制作网页比较方便的软件怎么选?一文搞懂避坑指南 制作网页比较方便的软件怎么选?一文搞懂避坑指南 很多老板一上来就问:做个网站多少钱?但我反问他:你的域名买了吗?服务器租了吗?他一脸懵。这就是典型的“域名服务器搞不懂”。别急,今天咱们不聊虚的,直接 一文搞懂 那些让你头秃的技术名词。… · 2026/9/28 0:00:06
婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量 婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量 找婚恋网站建站公司,最怕的就是被坑高价。很多同行跟我吐槽,报价单上写得模棱两可,功能栏里全是“高级定制”、“专属UI”,结果落地全是套壳。今天不聊虚的,直接甩几个我经手的 实战案例… · 2026/9/28 0:00:19
济南做网站多少钱:3个案例拆解,防黑源码下载全攻略 济南做网站多少钱:3个案例拆解,防黑源码下载全攻略 上周济南一个做建材的老板找我,脸都绿了。他的官网首页弹出了赌博广告,后台被植入了挖矿脚本。他慌得问我:“网站被黑挂马不知道怎么办?能不能直接找之前的外包公司要源码下载,看看哪里被动了手脚?… · 2026/9/28 0:00:25