网站建设技术支持牛商网中学生做网站的软件

diannao/2026/1/16 6:00:19/文章来源:
网站建设技术支持牛商网,中学生做网站的软件,深圳做营销网站的公司简介,网站模板如何制作目录 一、数组的概念 二、数组的类型 三、一维数组 3.1 一维数组的创建 3.2 一维数组的初始化 3.3 一维数组的访问 3.4 一维数组在内存中的存储 四、二维数组 4.1 二维数组的创建 4.2 二维数组的初始化 4.3 二维数组的访问 4.4 二维数组在内存中的存储 五、变长数组 六、…目录 一、数组的概念 二、数组的类型 三、一维数组 3.1 一维数组的创建 3.2 一维数组的初始化 3.3 一维数组的访问 3.4 一维数组在内存中的存储 四、二维数组 4.1 二维数组的创建 4.2 二维数组的初始化 4.3 二维数组的访问 4.4 二维数组在内存中的存储 五、变长数组  六、字符串数组 6.1 字符串数组的创建 6.2 字符串数组的初始化 6.3 字符串数组的输入 6.4 字符串数组的输出 6.5 字符串数组经典应用 七、指针数组 7.1 指针数组 7.2 指针数组模拟实现二维数组 八、函数指针数组 8.1 函数指针数组 8.2 函数指针数组的应用转移表  九、sizeof计算数组的大小 一、数组的概念 1. 数组是一组相同类型元素的集合存放在数组内的值被称为数组元素数组分为一维数组和多维数组二维数组的每个元素是一维数组三维数组的每个元素是二维数组其他的数组依此类推多维数组中最常见的数组是二维数组。 2. 数组的type有很多如int、char、float、结构体等。后面所讲到的字符串数组指针数组和函数指针数组也都只不过是不同类型数组而已它们均可创建出一维、二维、多维的形式。 2. 数组的元素个数不能为0数组内的每个元素必须是相同类型的。 二、数组的类型 1. 数组的类型是除掉数组名剩余的部分例如int arr[10]数组arr的类型是int [10]。 三、一维数组 3.1 一维数组的创建 1. 一维数组的语法格式type arr_name[常量值] 2. type表示一维数组中的每个元素是什么类型的arr_name表示一维数组的名称[常量值]表示一维数组的大小。 #include stdio.h int main() {int arr1[10];//定义存放10个整型的一维数组char arr2[4];//定义存放4个字符的一维数组float arr3[6];//定义存放6个单精度浮点型的一维数组//...return 0; } 3.2 一维数组的初始化 1. 一维数组的初始化分为完全初始化和不完全初始化。 2. 完全初始化一维数组有多大就初始化几个元素。 3. 不完全初始化初始化的元素个数小于一维数组的大小剩余未初始化的元素会默认初始化为0。 4. 初始化一维数组时[ ]中的常量值也可以省略不写此时初始化几个元素一维数组就为多大。 #include stdio.h int main() {int arr1[10] { 1, 2, 3, 4, 5, 6 ,7, 8, 9,10 };//完全初始化int arr2[10] { 0 };//不完全初始化int arr3[] { 1, 2, 3, 4 };//数组大小为4return 0; } 3.3 一维数组的访问 1. 数组元素的访问需要用到下标引用操作符[ ]数组元素的下标都是从0开始最大为sz-1。 2. 访问时的要点①知道需要的变量在哪个数组中②知道变量在该数组中的下标编号是多少 ③连续输入或使用数组元素时创建循环变量利用 for 循环解决。 //一维数组的输入和输出 #include stdio.h int main() {int arr[10] { 0 };int sz sizeof(arr) / sizeof(arr[0]);int i 0;//循环变量for (i 0; i sz; i){scanf(%d, arr[i]);printf(%d , arr[i]);}return 0; } 3.4 一维数组在内存中的存储 1. 一维数组在内存中连续存储并且随着下标的增长地址由小到大变化。 //验证一维数组在内存中的存储方式 #include stdio.h int main() {char arr[5] { 0, 1, 2, 3, 4};//字符数组每个元素占一个字节int sz sizeof(arr) / sizeof(arr[0]);int i 0;//循环变量for (i 0; i sz; i){printf(arr[%d]%p\n, i, arr[i]);}return 0; } 四、二维数组 4.1 二维数组的创建 1. 二维数组的语法格式type arr_name[常量值1][常量值2] 2. type表示二维数组中的每个元素是什么类型的arr_name表示二维数组的名称[常量值1]表示二维数组中有几个一位数组(即几行)[常量值2]表示每个一维数组中有几个元素(即几列)。 #include stdio.h int main() {int arr[3][5];//定义三行五列的整型二维数组char arr2[4][6];//定义4行6列的字符二维数组float arr3[2][4];//定义2行4列的浮点数二维数组//...return 0; } 4.2 二维数组的初始化 1. 二维数组的初始化分为完全初始化和不完全初始化一维数组的{}可打可不打不打{ }时元素按照排满一行再换一行的顺序摆放打{ }时可以控制每行存哪些元素。 2. 完全初始化二维数组有几列几行就初始化几列几行的元素。 3. 不完全初始化初始化的元素个数小于数组大小(行*列)剩余未初始化的元素默认初始化为0。 4. 初始化二维数组时常量值1也可以省略不写但常量值2必须写 编译器会根据初始化内容判断二维数组有几行。 #include stdio.h int main() {int arr1[3][4] { { 1, 2, 3, 4 }, { 2, 3, 4, 5 }, { 3, 4, 5, 6 } };//完全初始化int arr2[3][4] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//完全初始化int arr2[3][4] { { 1 }, { 2, 3 }, { 4, 6, 8 } };//不完全初始化int arr3[3][4] { 0, 1, 2 };//不完全初始化int arr4[][4] { 1, 2 };//数组为1行4列int arr5[][4] { { 1 }, { 3 }, { 2 , 5 } };//数组为3行4列return 0; } 4.3 二维数组的访问 1. 二维数组的访问也要用到下标引用操作符[ ]二维数组的行标和列标都是0开始最大为sz-1。 2. 访问时的要点① 知道需要的变量在哪个数组中 ② 知道变量在该数组中的行标和列标是多少 ③ 连续输入或使用数组元素时创建循环变量利用嵌套 for 循环解决。 //二维数组的输入和输出 #include stdio.h int main() {int arr[3][4] { 0 };int i 0;//循环变量for (i 0; i 3; i){int j 0;//循环变量for (j 0; j 4; j){scanf(%d, arr[i][j]);printf(%d , arr[i][j]);}//换行printf(\n);}return 0; } 4.4 二维数组在内存中的存储 1. 二维数组和一维数组一样在内存中连续存放随着下标的增长地址由小到大变化。 //验证二维数组在内存中的存储方式 #include stdio.h int main() {char arr[2][3] { { 1, 2, 3 }, { 2, 3, 4 }};//字符数组每个元素占一个字节int i 0;//循环变量for (i 0; i 2; i){int j 0;//循环变量for (j 0; j 3; j){printf(arr[%d][%d]%p\n, i, j, arr[i][j]);}}return 0; } 五、变长数组  1. 概念C99之前数组的大小只能是常量。C99之后引入了变长数组的概念可以使用变量来指定数组的大小。但VS默认不支持C99中的变长数组使用gcc编译器的DevC支持oj刷题的网站一般也是支持的。 2. 变⻓数组的根本特征数组⻓度只有运⾏时才能确定所以变⻓数组不能初始化。 3. 好处当在开发时没有确定好数组的大小可以利用变长数组待程序运⾏时再为数组分配精确的⻓度。 4. 注意变⻓数组的意思是数组的⼤⼩是可以使⽤变量来指定的在程序运⾏的时候根据变量的⼤⼩来指定数组的元素个数⽽不是说数组的⼤⼩是可变的。数组的⼤⼩⼀旦确定就不能再变化了。 六、字符串数组 6.1 字符串数组的创建 1. C语言中没有专门的字符串类型如果要存放字符串可以用字符串数组存放(字符串数组本质是字符数组)。 2.  字符串数组的语法格式(和一维字符数组、二维字符数组一样)      一位字符串数组char arr_name[常量值]      二维字符串数组char arr_name[常量值1][常量值2] 6.2 字符串数组的初始化 1. 字符串数组的初始化分为完全初始化和不完全初始化且均有两种写法第一种是用单引号初始化在字符串的末尾会自动存入\0这种写法在定义字符串数组的大小时要考虑\0也是数组中的一个元素第二种是用大括号的初始化但不会自动存入\0需要手动存入\0才能代表这是一个字符串数组否则只能作为一个字符数组。(通常会用双引号的形式初始化) 2. 下面代码中仅展示一维字符串数组初始化形式因为二维字符串数组很少用到。 #include stdio.h int main() {//一维字符串//方法一用双引号初始化char arr1[4] abc;//完全初始化 a b c \0char arr2[4] ab;//不完全初始化 a b \0char arr3[] ab//字符串数组大小为3//方法二用大括号的初始化char arr4[4] { a, b, c, \0 };//完全初始化char arr5[4] { a, b, \0};//不完全初始化char arr6[] { a, b, \0};//字符串数组大小为3char arr7[4] { a, b, c, d };//不是字符串数组因为数组中没有\0char arr8[4] { a, b};//不是字符串数组因为数组中没有\0char arr9[] { a, b};//不是字符串数组因为数组中没有\0 return 0; } 6.3 字符串数组的输入 1. 字符串数组的输入可以用scanf() 和 gets() 但两者是有区别的。  2. scanf() 读取字符串时以空格为分隔遇到空格就认为当前字符串结束了所以无法读取含有空格的字符串。 3. gets() 认为空格也是字符串的一部分只有遇到回车键时才认为字符串输入结束所以在字符串数组输入时最好用 gets() 。 #include stdio.h int main() {char arr1[10] { 0};//输入方法一scanf(%s, arr1);//hello world,只会读取hello//输入方法二gets(arr1);//hello world,全部读取return 0; } 6.4 字符串数组的输出 1. 字符串数组的输出可以用用scanf() 和 gets() 但是有区别的。 2. printf()通过格式控制符%s 输出字符串不能自动换行。 3. puts()输出字符串并自动换行该函数只能输出字符串。 #include stdio.h int main() {char arr1[10] abcde;//输出方法一printf(%s\n, arr1);//不会自动换行打印时加\n//输出方法二puts(arr1);//会自动换行return 0; } 6.5 字符串数组经典应用 //【实现多个字符从两端移动向中间汇聚】 //########################## //Y########################! //Yo######################!! //You####################!!! //You ##################!!!! // ... //You are the best!!!!!!!!!!#include stdio.h #include windows.h #include stdlib.hint main() {char arr1[] You are the best!!!!!!!!!!;char arr2[] ##########################;//计算数组arr2的元素个数int sz sizeof(arr2) / sizeof(arr2[0]);//再屏幕上先打印数组arr2的内容printf(%s\n, arr2);int left 0;int right sz - 2;//字符串的末尾隐藏着一个\0while (left right){//睡眠1000毫秒Sleep(700);//sleep的第一个字母大写arr2[left] arr1[left];arr2[right] arr1[right];//清屏system(cls);//system函数是库函数执行系统命令cls清理控制台屏幕//再次在屏幕上打印数组arr2printf(%s\n, arr2);//调整left;right--;}return 0; } 七、指针数组 7.1 指针数组 1. 指针数组就是存放指针的数组数组中的每个元素都是指针(地址)。 2. 指针数组的类型由数组中每个指针解引用所指向变量的类型决定我们可以根据需要自行选择创建一维指针数组还是二维指针数组指针数组的创建方式、初始化、访问、存储方式和一维数组、二维数组讲述中的内容没有差别。 #include stdio.h int main() {int arr1[] { 1, 2, 3 };int arr2[] { 2, 3, 4 };int arr3[] { 3, 4, 5 };int* arr[3] { arr1, arr2, arr3 };//一维指针数组//由于数组名是数组首元素的地址每个数组首元素的地址是int*类型的//所以arr指针数组语法中的tpye部分要写成int*return 0; } 7.2 指针数组模拟实现二维数组 1. 模拟的⼆维数组并⾮完全是⼆维数组因为每⼀⾏的数据在内存中是⾮是连续的。 2. 下图代码的解释parr是数组首元素的地址而parr首元素的地址是数组arr1的地址我们可以通过对parr-整数拿到parr中每个元素的地址即内部每个数组的地址再通过对这些地址解引用拿到每个内部数组首元素地址最后通过首元素的地址偏移和解引用找到parr内部数组中的每个元素即有了 *(*(arri) j) parr[i][j] 。 #include stdio.h int main() {int arr1[] {1,2,3,4,5};int arr2[] {2,3,4,5,6};int arr3[] {3,4,5,6,7};int* parr[3] {arr1, arr2, arr3};//一位指针数组int i 0;int j 0;for(i0; i3; i){for(j0; j5; j){printf(%d , parr[i][j]);}printf(\n);}return 0; } 八、函数指针数组 8.1 函数指针数组 1. 函数指针数组是存放函数指针的数组函数指针数组里的元素全都是函数指针。 2. 函数指针数组的类型由数组中每个元素的类型决定但函数指针数组的创建写法比较独特具体见下方代码。     即要把函数指针类型中写指针名称的地方写成函数指针数组名数组大小。 3. 和指针数组一样我们可以根据需要自行选择创建一维函数指针数组还是二维函数指针数组函数指针数组除创建方式写法有些独特外其初始化、访问、存储方式和一维数组、二维数组中讲述的内容没有差别。 #include stdio.hint Add(int x, int y) {//...return x y; }int Sub(int x, int y) {//...return x - y; }int Mul(int x, int y) {//...return x * y; }int main() {int (*arr[3])(int, int) { Add, Sub, Mul };//函数指针数组//arr是数组名[3]表示数组大小//int ret (arr1)(2, 3);//err//int ret (*(arr 1))(2, 3);int ret arr[1](2, 3);//下标直接访问printf(%d\n, ret);return 0; } 8.2 函数指针数组的应用转移表  #include stdio.hint add(int a, int b) {return a b; }int sub(int a, int b) {return a - b; }int mul(int a, int b) {return a * b; }int div(int a, int b) {return a / b; }int main() {int x, y;int input 1;int ret 0;int(*p[5])(int x, int y) { 0, add, sub, mul, div }; //转移表do{printf(*************************\n);printf( 1:add 2:sub \n);printf( 3:mul 4:div \n);printf( 0:exit \n);printf(*************************\n);printf(请选择);scanf(%d, input);if ((input 4 input 1)){printf(输⼊操作数);scanf(%d %d, x, y);ret p[input](x, y);printf(ret %d\n, ret);}else if (input 0){printf(退出计算器\n);}else{printf(输⼊有误\n);}} while (input);return 0; } 九、sizeof计算数组的大小 1. sizeof是专门计算变量或类型所占空间大小的一个关键字计算结果的单位是字节sizeof不会执行( )内的任何运算和函数调用。 2. sizeof(数组名)计算的是整个数组的大小这里的数组名不再是数组首元素的地址。 3. 计算一维数组元素个数int sz sizeof(arr) / sizeof(arr[0]);利用整个数组的大小除以单个数组元素的大小得到的就是数组大小打印时占位符%d不行就用%zd。 4. 计算二维数组元素个数int sz sizeof(arr) / sizeof(arr[0][0]); 5. 使用的好处方便修改和利用。 6. 好习惯定义和初始化一维数组后下面一行立即写上用sizeof计算出的一维数组元素个数。 本篇已完结。。。。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/91562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站设计的销售微信网页制作网站建设

动态规划 1、动态规划的概念 简称DP,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。常常适用于有重叠子问题和最优子结构性质的问题。 简单来说,就是给定一个问题,把它拆成一个个子问题,查到子问题可以直接解决。然后把子问题答案保存起来,以减少重复计算…

网站建设找邓金平创业网站平台排名

今天听 \(\texttt{m}\color{red}{\texttt{yee}}\) 嘴的,赶紧来补个学习笔记。 PS:FFT 本质是长度为 \(2^k\) 的循环卷积。 单位根反演 反演本质: \[\frac1n\sum_{i0}^{n-1}\omega_{n}^{ai}[n|a] \]证明: 如果 \(n|i\),…

阜阳市城乡建设 档案馆网站wordpress主题商店

前言 DRY 原则,英文描述为: Don’t Repeat Yourself。中文直译:不要重复自己。将它应用在编程中,可理解为:不要写重读的代码。 可能你认为,这个原则很简单。只要两段代码长得一样,那就是违反 …

5在线做网站东莞建设网官网首页

文章目录 openssl3.2 - 官方demo学习 - cms - cms_sign2.c概述笔记END openssl3.2 - 官方demo学习 - cms - cms_sign2.c 概述 用多个证书进行CMS消息联合签名 笔记 /*! * \file cms_sign2.c * \note openssl3.2 - 官方demo学习 - cms - cms_sign2.c 用多个证书进行CMS消息联…

郑州营销型网站建设工作室常州app网站

socket套接字/TCP 一 客户端/服务器架构 C/S架构,包括 硬件C/S架构(打印机)软件C/S 架构(web服务)C/S架构的软件(软件属于应用层)是基于网络进行通信的Server端要: 1.力求一直提供服…

免费制作个人网站的软件建站工具 营销

在交换机组网时常见的故障比较多,为了帮助大家更好地排除这些故障,在此飞畅科技的小编来为大家介绍一些常见的典型故障案例和处理思路供大家参考。接下来大家就一起来看看交换机组最常见的8大故障及解决方法吧。 环网交换机产品图 故障1:交…

网站的建设哪个好山东省城乡住房和建设厅网站首页

本文来自#30天制图挑战#的GISer November_阿瑜瑜瑜瑜,完成了30幅中国风专辑地图,唯美又有韵味,十分赏心悦目,简直把中国风玩出了花~接下来,快来跟着小编一起细品30幅中国风地图吧~~~ 01day 1千里江山图《千里江山图》是…

做俄罗斯外贸的网站设计网页与网站设计

作为开发人员,我们都想写出优雅的代码,可又苦于自身能力不知该如何下手,而框架的作用正在与能够让你规范的去开发。 之前写Web的时候,总被要求采用MVC架构,的确非常好用,也从来没有质疑过这种架构的好与不好…

建站工具缺点施工企业造价管理

牛客题霸 [ 旋转数组] C题解/答案 题目描述 一个数组A中存有N(N&gt0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>0)个位置,即将A中的数据由(A0 A1 ………

欧美品牌网站设计怎么做网站自动响应

在当今这个信息爆炸的时代,图像和视频已经成为我们获取和传递信息的主要方式之一。从社交媒体上的照片分享,到安防监控、自动驾驶等领域的图像识别与处理,计算机视觉技术正日益改变着我们的生活。而在这场技术革命中,OpenCV(Open Source Computer Vision Library)这一开源…

企业做网站需要租服务器吗温州专业营销网站费用

设有 N堆石子排成一排,其编号为 1,2,3,…,N。 每堆石子有一定的质量,可以用一个整数来描述,现在要将这 N 堆石子合并成为一堆。 每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的…

中山免费建网站湖南企业推广软件

随着数字化转型的深入推进,软件开发和运维的界限变得越来越模糊。在这种背景下,DevOps理念应运而生,它强调开发和运维团队的紧密协作,以实现软件的高效交付和稳定运行。与此同时,低代码技术的发展也为软件开发带来了新…

网站制作:网推宝|百度游戏开发需要学什么专业

参考:Ubuntu下无法看到共享文件夹的解决办法 作者:一只青木呀 发布时间:2020-08-07 10:09:04 网址:https://blog.csdn.net/weixin_45309916/article/details/107856157 今天早上起来突然发现共享文件夹的查看不到了,找…

中国优秀设计网站有哪些书签制作简单漂亮

大家好,我是若川。今天分享一篇vue项目如何做单元测试的好文,文章比较长,建议先收藏,需要时用电脑看。点击下方卡片关注我、加个星标学习源码系列、年度总结、JS基础系列关于单元测试,最常见的问题应该就是“前端单元测…

帮彩票网站做流量提升商务网站建设教学视频教程

目录 基于脚手架创建前端工程 1、环境要求 2、操作过程 3、工程结构 4、启动前端服务 🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法&#xff0c…

视频网站seo怎么做张家港企业网站

文章目录 一、索引不同1 InnoDB聚簇索引,MyISAM非聚簇索引1 InnoDB聚簇索引2 MyISAM非聚簇索引 2 InnoDB必须要有主键,MyISAM允许没有主键3 InnoDB支持外键4 InnoDB不支持全文索引5 索引保存位置不同 二、对事物的支持三、存储结构不同四、存储空间不同五…

长沙网站托管网络营销专业就业

文章目录 1. 简介2. iKuai 部署2.1 安装 VMware2.2 安装 iKuai(1) 下载固件(2) 安装 iKuai 虚拟机(3) 配置 iKuai 虚拟机(4) 配置 iKuai(5) 配置多拨分流 2.3 测试速度 3. Clash 部署3.1 准备工作(1) 配置磁盘分区(2) 安装 Docker(3) 安装 Clash(4) 设置代理 1. 简介 由于博主…

怎么做网站收录榆林网站开发公司

servlet的本质是什么,它是如何工作的?基于计算机和网络通讯(主要是http协议)构建网络应用的,具体的实现细节是怎样的? 查看https://www.zhihu.com/question/21416727

网站建设的栏目内容是网站总体策划的内容有哪些

这篇文章是我观看 Mosh 的 MySQL 完整版课程进行题目练习的记录,视频的话去 B 站搜索就能找到,数据库文件的话可以从这里下载。 目录第二章2- SELECT 子句3- WHERE 子句4- 逻辑运算符5- IN 运算符6- BETWEEN 运算符7- LIKE 运算符8- REGEXP 运算符&#…

学生管理系统 静态网站源码广州公司注册费用

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、下雨的特效1-1.首先就是创建一个自带的粒子系统,整几张贴图,设置一下就能实现想要的效果了1-2 接着往下看视频效果 👉二、下雪的特效👉三、下雪有积雪的效果3-1 先把控…