首页 > 其他分享 >复习课14 初识数组

复习课14 初识数组

时间:2023-10-09 22:32:23浏览次数:46  
标签:arr 下标 14 int 元素 26 初识 数组 复习

一.问题导入

现需要编写一个程序,程序需要有26个变量,每一个变量都需要存储一个整型数字,所以我们需要将代码写成如下形式:

int main(void)
{
  int a = 1;
  int b = 2;
  int c = 3;
  ……………
  int z = 26;
  return 0;
}

我们很快就会发现这样写的弊端:1.代码冗杂重复 2.无法使用循环语句对每一个值进行输出

所以我们这里引入了数组这个概念,数组顾名思义就是一组同类元素的集合,当我们使用数组来完成上述要求时就变得简单很多,代码如下:

int arr[26] = {1,2,3,4,5,6,……,26};

[]内的数字代表数组最大的元素个数,当然我们也可以置空,编译器会根据元素个数进行指定,{}内存放的是数组的元素,当我们创建一个数组时程序就会向内存开辟相应的空间,数组占用内存空间大小由数组数据类型与数组元素个数决定(如:这里创建了int类型的数组,数组元素一共有26个,C语言中 int 类型占用4个字节,这里有26个元素所以该数组占用内存大小为 26*4 = 104 字节


二.数组下标

C语言规定数组中第一个元素的下标是 0 第二个元素下标是 1 第三个元素下标是 2 以此类推,所以我们可以得出以下公式

数组元素的最大下标 = 数组总元素个数 - 1

那么数组 arr[1] 的值就不是 1 而是 2,如果需要输出 1 那么对应的数组是 arr[0]


三.循环输出数组元素

知道了数组的基本原理后我们可以尝试利用循环来输出数组中的每一个元素,既然要访问到数组中的每一个元素那么势必就需要知道每一个元素的下标以及下标总个数,代码如下:

#include<stdio.h>
int main(void)
{
  int i = 0;
  int arr[10] = {0,1,2,3,4,5,6,7,8,9};
  int sz = sizeof(arr)/sizeof(arr[0]);
  for(i=0;i<sz;i++){
  printf("arr[%d] --> %d\n",i,arr[i]);
}
 return 0;
}

这里我们创建了一个数组 arr 将数组下标初始化为 i(i=0) 随后我们创建了一个变量名为 sz ,其作用是计算数组元素个数原理就是将数组元素的总大小计算出来之后除以第一个元素的大小就可以得到元素总个数,随后我们使用 for 循环当 i<sz 时候进入循环循环输出数组元素即可,这里数组下标为变量 i 所以printf()函数后的实参就是 arr[i]

这篇文章大致的讲解了一下数组,很多细节已经关键性内容都会在以后详细讲解数组时候讲到

2023/10/9

王起舟

标签:arr,下标,14,int,元素,26,初识,数组,复习
From: https://blog.51cto.com/u_16183773/7782006

相关文章

  • 143-4
    二叉树自下而上,从右到左的层次遍历算法相较于普通的层次遍历,该算法,只是利用栈的特点,将一系列元素反转。层次遍历的每一个结点依次进栈,最后再将依次出栈#include<stdio.h>#include<stdlib.h>#defineMaxSize100typedefstructnode{intdata;structnode*lc......
  • 【做题笔记】CF 1400-1600 构造题
    本人比较菜,所以做的rating很低/kk/kk/kk欢迎各位大佬嘲讽这个蒟蒻/kk/kk/kk/kk$*$表示看了题解才过的(所以你会发现这里的大部分题后面都会有$*$)实时通过率直接贴在后面当不看题解通过率稳定在\(50\%\)以上就弃坑。希望早日弃坑ABBCorBACB*题面中给了两种操作......
  • P3970 [TJOI2014] 上升子序列
    题目先将\(a[i]\)离散化。设\(f[i]\)表示以数字\(i\)结尾的上升子序列数量。则有\(f[i]=\sum_{j=1}^{i-1}f[j]\)。考虑用线段树实时维护\(f[j]\),就可以\(logn\)查询。扫一遍整个序列,因为不能算重复,所以\(ans\)先减去上一次见到\(a[i]\)时的贡献\(f[a[i]]\),再......
  • 143-3 二叉树后序非递归遍历
    二叉树的后序非递归遍历使用辅助栈 r指针的作用是判断该结点是否遍历过#include<stdio.h>#include<stdlib.h>#defineMaxSize20typedefstructnode{intdata;structnode*lchild,*rchild;}TreeNode,*Tree;typedefTreeNode*Elem;typedefstruct{......
  • Listener refused the connection with the following error: ORA-12514
    1.问题在使用OracleSQLDeveloper时,遇到以下问题:状态:失败-测试失败:Listenerrefusedtheconnectionwiththefollowingerror:ORA-12514,TNS:listenerdoesnotcurrentlyknowofservicerequestedinconnectdescriptor(CONNECTION_ID=w++gsIkwQB+f4YlRCo9RvQ==)......
  • CF1142D Foreigner题解
    CF1142DForeigner题解前言:题目含义真的好难理解呜呜。遇到的dp套dp的第三题,所以深入进行了理解。参考博文:https://www.cnblogs.com/AWhiteWall/p/16479483.html题意简化:先定义了不充分。首先数字$[1,9]$都不充分,注意没有$0$。当这个数字(设为$x$)大于等于$10$时......
  • 力扣-2114-句子中的最多单词数
    一个句子由一些单词以及它们之间的单个空格组成,句子的开头和结尾不会有多余空格。给你一个字符串数组sentences,其中sentences[i]表示单个句子。请你返回单个句子里单词的最多数目。 示例1:输入:sentences=["aliceandbobloveleetcode","ithinksotoo","......
  • 《剑指offer》第14题 剪绳子
    一、题目给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],...,k[m]。请问k[1]*k[2]*...*k[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18......
  • Microsoft Visual C++ 14.0 or greater is required.
    MicrosoftVisualC++14.0orgreaterisrequired.表示缺少VisualStudio2015及以上版本可以通过以下途径解决。最好是第二、三种途径。 一、直接下载对应版本的.whl文件,然后运行pipinstallxxx.whl 二、按照提示去官网下载VisualStudio2015及以上版本都可以,必须安装C++......
  • sed命令复习
    sed显示文件的倒数第二行:(以下三种方法都可以)sed-e'$!{h;d;}'-exfile.txtsed-n'x;$p'file.txtsed'x;$!d'file.txt 加上for循环,批量显示每个文件的倒数第二行 foriin`ls*.log`;dosed'x;$p'-n $i;done   sed显示文件的最后一行:sed-n'$p......